我是否可以使用VBScript获取现有的CSV,并使其成为单个Excel工作簿的选项卡?
我正在尝试自动化一个过程,在这个过程中,我从一个目录中获取多个CSV,并使它们在Excel工作簿中成为各自的选项卡,这样我就可以从它们的数据等方面进行透视。如果可能的话,我会尽量避免使用宏。。。是否可以在VBScript中执行此操作? 以下是我迄今为止尝试过的内容,请原谅我的编程惯例,因为我最近才学习了VBS的基础知识:我是否可以使用VBScript获取现有的CSV,并使其成为单个Excel工作簿的选项卡?,excel,csv,vbscript,scripting,automation,Excel,Csv,Vbscript,Scripting,Automation,我正在尝试自动化一个过程,在这个过程中,我从一个目录中获取多个CSV,并使它们在Excel工作簿中成为各自的选项卡,这样我就可以从它们的数据等方面进行透视。如果可能的话,我会尽量避免使用宏。。。是否可以在VBScript中执行此操作? 以下是我迄今为止尝试过的内容,请原谅我的编程惯例,因为我最近才学习了VBS的基础知识: Call createWkbk() Function createWkbk() strFileName = "c:\test1.xls" Set objExcel = Cr
Call createWkbk()
Function createWkbk()
strFileName = "c:\test1.xls"
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
'Adds one spreadsheet to book for each command
objExcel.ActiveWorkbook.Worksheets.Add
objExcel.ActiveWorkbook.Worksheets.Add
objExcel.ActiveWorkbook.Worksheets.Add
'This renames all the sheets to 'int#'
objExcel.Sheets(1).Name = "int1"
objExcel.Sheets(2).Name = "int2"
objExcel.Sheets(3).Name = "int3"
objExcel.Sheets(4).Name = "int4"
objExcel.Sheets(5).Name = "int5"
objExcel.Sheets(6).Name = "int6"
'To save the book
objWorkbook.SaveAs(strFileName)
objExcel.Quit
End Function
所以现在我唯一需要做的就是将我已经拥有的CSV写入这些工作表,或者从一开始就导入它们。如果不是在VBScript中,建议采取什么路线
提前谢谢大家,
Nic您可以使用
查询表
将CSV快速导入现有工作表:
Const strFile = "c:\test.csv"
Const strSheet = "Sheet1"
Set Sheet = objExcel.Sheets(strSheet)
With Sheet.QueryTables.Add("TEXT;" & strFile, Sheet.Range("A1"))
.TextFileCommaDelimiter = True
.Refresh
End With
您也可以尝试这一点,这是我找到并适应我使用的代码:
Sub ImportXlsSheets()
'On crée une variable 'wbFusion' de type Classeur Excel
Dim wbFusion As Workbook
'On l'associe au classeur à partir duquel tu lances la macro
Set wbFusion = ThisWorkbook
'On crée une variable wbCible qui va correspondre tour à tour aux classeur à importer
Dim wbCible As Workbook
Dim shCible As Worksheet
'Afin de lui affecter des fichiers, l'utilisateur va les sélectionner via une boîte de dialogue
'NOTA : le With XXXXXXXXX évite de répéter plein de fois XXXXXXXXX lorsque l'on parle de la même chose ;)
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Choisissez le(s) classeur(s) à importer"
.Filters.Add "Classeur Excel", "*.xls,*.xls?" 'on filtre par tous les fichiers .xls et xls? avec '?' signifiant "1 caractère"
.ButtonName = "Importer ce(s) classeur(s)"
.AllowMultiSelect = True 'on autorise la sélection multiple
.Show 'on affiche la fenêtre, on attend le retour de l'utilisateur pour continuer
'on a réglé la boîte de dialogue, maintenant il faut traiter les données de l'utilisateur :
'si l'utilisateur n'a pas sélectionné de fichier, on met un message d'erreur
If .SelectedItems.Count = 0 Then
MsgBox "Veuillez sélectionner au moins un fichier", vbExclamation, "Erreur"
'Sinon, on traite :
Else
For i = 1 To .SelectedItems.Count
'On ouvre chaque classeur un par un
Set wbCible = Workbooks.Open(.SelectedItems(i))
CouleurOnglet = RGB(Rnd * 255, Rnd * 255, Rnd * 255) 'on va mettre toutes les pages de ce classeur importées avec l'onglet de la même couleur
CompteurClasseur = CompteurClasseur + 1 'on incrémente un compteur, facultatif
'Pour chaque feuille du wbCible :
For Each shCible In wbCible.Sheets
shCible.Tab.Color = CouleurOnglet
'shCible.Name = Int(Rnd * 99999) 'nom aléatoire pour être certain qu'il n'y ait pas de doublon plantant la macro
shCible.Name = i & "_" & shCible.Name ' To keep the original sheet name and concatenate it with its order
shCible.Copy after:=wbFusion.Sheets(wbFusion.Sheets.Count) 'on la copie à la fin de wbFusion
CompteurFeuille = CompteurFeuille + 1 'on incrémente un compteur, facultatif
Next shCible
'On ferme le classeur sans enregistrer (on a changé le nom des pages avant copie)
wbCible.Close SaveChanges:=False
'On passe au classeur suivant
Next i
'Facultatif, à l'aide des compteurs, on indique à l'utilisateur que tout s'est bien passé
MsgBox CompteurFeuille & " feuilles ont bien été importées, provenant de " & CompteurClasseur & " classeurs Excel.", vbInformation, "Import réussi"
End If
End With
End Sub
你能解释一下吗?法语的评论对每个人都没有帮助。似乎您的代码具有针对*.xls、*.xlsm(或除m以外的其他字符)的筛选器,因此它不适合csv文件