Ada*_*lls 5 csv vbscript excel vba excel-vba
我需要通过VBA/VBS脚本以编程方式将所有工作表(总共4个,我知道名称)导出到同一文件夹中名为csv文件的工作表,而无需加载excel并手动运行宏.
理想情况下,脚本会将源文件路径/ filename.xls和导出文件路径作为命令行参数.
我已经阅读了许多Excel VBA脚本,只是在Excel中执行此操作,我看到一些用于加载excel工作簿以导出第一个工作表.但是,当我尝试混合这两个时,我得到了这个错误:
(1,12)预期结束声明
Dim source As Workbook
Set source = Application.Workbooks.Open(WScript.Arguments.Item(0), ReadOnly:=True)
For Each sheet In source.Sheets
.SaveAs Filename:= WScript.Arguments.Item(1) & Source.Sheets.Name, FileFormat:=xlCSV
Next sheet
wb.Close
Run Code Online (Sandbox Code Playgroud)
bre*_*tdj 10
一个VBS运行该代码会是这个样子.
与上面的VBA相比,需要注意的两个要点
您不能使用命名常量,例如xlCSV
在vbscript中,因此使用下面的6作为CSV格式
Dim strFilename
Dim objFSO
Set objFSO = CreateObject("scripting.filesystemobject")
strFilename = "C:\temp\test.xlsx"
If objFSO.fileexists(strFilename) Then
Call Writefile(strFilename)
Else
wscript.echo "no such file!"
End If
Set objFSO = Nothing
Sub Writefile(ByVal strFilename)
Dim objExcel
Dim objWB
Dim objws
Set objExcel = CreateObject("Excel.Application")
Set objWB = objExcel.Workbooks.Open(strFilename)
For Each objws In objWB.Sheets
objws.Copy
objExcel.ActiveWorkbook.SaveAs objWB.Path & "\" & objws.Name & ".csv", 6
objExcel.ActiveWorkbook.Close False
Next
objWB.Close False
objExcel.Quit
Set objExcel = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)