You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBS脚本转换XLSX为制表符分隔文件时语法错误求助

VBS脚本批量转换XLSX为制表符文本:修复SaveAs语法错误

问题

原脚本用于批量将指定文件夹内的XLSX文件转换为制表符分隔的TXT文件,但运行时在Call oWSH.SaveAs (oFile.Path & ".txt", FileFormat:=xlText)行触发**"expected ')'"**语法错误。

错误原因

  1. VBS不支持VBA风格的命名参数(即FileFormat:=xxx这种写法),必须按参数顺序直接传递值
  2. 使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 06:08:11