VBS脚本转换XLSX为制表符分隔文件时语法错误求助
VBS脚本批量转换XLSX为制表符文本:修复SaveAs语法错误
问题
原脚本用于批量将指定文件夹内的XLSX文件转换为制表符分隔的TXT文件,但运行时在Call oWSH.SaveAs (oFile.Path & ".txt", FileFormat:=xlText)行触发**"expected ')'"**语法错误。
错误原因
- VBS不支持VBA风格的命名参数(即
FileFormat:=xxx这种写法),必须按参数顺序直接传递值 - 使用
Call关键字调用方法时,参数列表的左括号前不能有空格(正确格式为Call 方法(参数),原代码中Call oWSH.SaveAs (xxx)多了空格)
修复后的完整代码
Option Explicit Dim oFSO, myFolder Dim xlText myFolder="\\10.0.254.21\sftp\Amazon\Outbound" Set oFSO = CreateObject("Scripting.FileSystemObject") xlText = -4158 'Excel制表符分隔文本格式枚举值 ConvertAllExcelFiles(myFolder) Set oFSO = Nothing MsgBox ("Done!") Sub ConvertAllExcelFiles(ByVal oFolder) Dim targetF, oFileList, oFile Dim oExcel, oWB, oWSH Set oExcel = CreateObject("Excel.Application") oExcel.DisplayAlerts = False Set targetF = oFSO.GetFolder(oFolder) Set oFileList = targetF.Files For Each oFile in oFileList If (Right(oFile.Name, 4) = "xlsx") Then Set oWB = oExcel.Workbooks.Open(oFile.Path) For Each oWSH in oWB.Sheets oWSH.SaveAs oFile.Path & ".txt", xlText Next Set oWSH = Nothing oWB.Close Set oWB = Nothing End If Next oExcel.Quit Set oExcel = Nothing End Sub
关键修改点
- 移除了
Call关键字:VBS中调用对象方法时可直接写对象.方法 参数,无需Call;若要保留Call,需写成Call oWSH.SaveAs(oFile.Path & ".txt", xlText),注意括号前不能有空格 - 删除
FileFormat:=命名参数:VBS不支持这种命名传参方式,直接按顺序传递预定义的枚举值xlText(值为-4158,对应Excel的制表符分隔文本格式) - 优化代码格式:增加换行与缩进,提升可读性
- 调整目标路径:将原本地路径改为共享目录
\\10.0.254.21\sftp\Amazon\Outbound,可根据实际需求修改
内容的提问来源于stack exchange,提问作者matt kennedy
相关产品推荐
相关产品推荐

