出现错误:第 22 行字符 60 上的“预期 ')'”(即在 QueryTables.Add 函数中的“连接”处)。批处理文件正在调用此 VBA。我试图了解我的语法有什么问题,以便我可以调用 VB 作业将文本文件转换为格式化的 CSV。文本文件已经是制表符分隔的。
批处理文件:
pushd %~dp0 **Used to get current DIR
set path=%~dp0 **Used to set a path variable to send to VBScript
txtToCsv.vbs %path% **Used to invoke the VBScript
VBA 脚本:
if WScript.Arguments.Count < 1 Then
WScript.Echo "Error! Please specify the source path and the destination. Usage: txtToCsv Destination.csv"
Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = False
oExcel.DisplayAlerts = False
Dim oBook
Set oBook = oExcel.Workbooks.Add()
With oBook
.Title = "Deal Data"
.Subject = "Deal Data"
.SaveAs WScript.Arguments(0)&"Deal_Data.xlsx"&YEAR(Date)&MONTH(Date)&DAY(Date)
End With
Dim sourceFile
Set sourceFile = "TEXT;"&WScript.Arguments(0)&"deal_data.txt"
Set ActiveSheet = Worksheets("Sheet1")
With ActiveWorkbook.ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sourceFile, Destination:=ActiveCell)
.Name = "deal_data"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 437
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
oBook.Close False
oExcel.Quit
WScript.Echo "Done"