Excel 自动将Xls转换为CSV

Excel 自动将Xls转换为CSV,excel,csv,vbscript,export-to-csv,Excel,Csv,Vbscript,Export To Csv,我正在使用stackoverflow上的以下VBS脚本将xls转换为csv。它很好用。我想用底部的批处理文件运行它。我不知道如何实现我想要的。批处理文件为csv文件提供与xls文件相同的名称。因为xls文件中有两个工作表,所以我需要为每个xls文件生成两个csv if WScript.Arguments.Count < 2 Then WScript.Echo "Error! Please specify the source path and the destination. Us

我正在使用stackoverflow上的以下VBS脚本将xls转换为csv。它很好用。我想用底部的批处理文件运行它。我不知道如何实现我想要的。批处理文件为csv文件提供与xls文件相同的名称。因为xls文件中有两个工作表,所以我需要为每个xls文件生成两个csv

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(1))
oBook.SaveAs WScript.Arguments.Item(2), 6

oBook.Close False
oExcel.Quit
WScript.Echo "Done"
我需要传入2个输出.csv文件名,一个应为nnnnn_1.csv,另一个应为nnnnn_2.csv,以说明xls文件中的2个工作表

感谢您的帮助

如果您将VBS脚本更改为此,它应该可以工作:

If WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))

oBook.Worksheets(1).Copy
Dim oBookNew1     
Set oBookNew1 = oExcel.ActiveWorkbook
oBookNew1.SaveAs Replace(WScript.Arguments.Item(1),".csv","_1.csv"), 6
oBookNew1.Close False

oBook.Worksheets(2).Copy
Dim oBookNew1     
Set oBookNew1 = oExcel.ActiveWorkbook
oBookNew2.SaveAs Replace(WScript.Arguments.Item(1),".csv","_2.csv"), 6
oBookNew2.Close False

oBook.Close False
oExcel.Quit
WScript.Echo "Done"
如果将VBS脚本更改为此,则应能正常工作:

If WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))

oBook.Worksheets(1).Copy
Dim oBookNew1     
Set oBookNew1 = oExcel.ActiveWorkbook
oBookNew1.SaveAs Replace(WScript.Arguments.Item(1),".csv","_1.csv"), 6
oBookNew1.Close False

oBook.Worksheets(2).Copy
Dim oBookNew1     
Set oBookNew1 = oExcel.ActiveWorkbook
oBookNew2.SaveAs Replace(WScript.Arguments.Item(1),".csv","_2.csv"), 6
oBookNew2.Close False

oBook.Close False
oExcel.Quit
WScript.Echo "Done"

与上面Scott的回答类似,我可能会更改脚本以这种方式工作,因为这种更改只适用于给定工作簿中的所有工作表,并将每个工作表输出到.csv文件,而不必担心是否有1、2或10个工作表

If WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook 
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
Dim oNewBook
shIndex = 1 ' start with 1
For shIndex = 1 To oBook.Worksheets.Count     
    oBook.Worksheets(shIndex).Copy
    Set oNewBook = oExcel.ActiveWorkbook
    oNewBook.SaveAs Replace(WScript.Arguments.Item(1),".csv","_" & shIndex & ".csv"), 6
    oNewBook.Close False
Next
oBook.Close False
oExcel.Quit
WScript.Echo "Done"

与上面Scott的回答类似,我可能会更改脚本以这种方式工作,因为这种更改只适用于给定工作簿中的所有工作表,并将每个工作表输出到.csv文件,而不必担心是否有1、2或10个工作表

If WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If

Dim oExcel
Set oExcel = CreateObject("Excel.Application")

Dim oBook 
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
Dim oNewBook
shIndex = 1 ' start with 1
For shIndex = 1 To oBook.Worksheets.Count     
    oBook.Worksheets(shIndex).Copy
    Set oNewBook = oExcel.ActiveWorkbook
    oNewBook.SaveAs Replace(WScript.Arguments.Item(1),".csv","_" & shIndex & ".csv"), 6
    oNewBook.Close False
Next
oBook.Close False
oExcel.Quit
WScript.Echo "Done"

此脚本将工作簿中的每个工作表保存为[cvs基本名称]-[worksheet name].csv


此脚本将工作簿中的每个工作表保存为[cvs基本名称]-[worksheet name].csv


我已经用Python编写了一个替代解决方案,它以CVS格式导出工作簿的当前excel工作表

你可以找到它

最好的,
Julian

我已经用Python编写了一个替代解决方案,它以CVS格式导出工作簿的当前excel工作表

你可以找到它

最好的,

朱利安

谢谢斯科特,我不能让它发生。斯坦克斯·斯科特,我不能让它发生复制方法不是函数。此行失败设置oBookNew1=oBook.Worksheets1.copy您是对的-现在修复了它。尽管您提到的这行代码实际上并不在我的代码中,但我使用了shIndex而不是1:oExcel.ActiveWorkbook在VBScriptI中不可用,我很抱歉。我错了。不可用的是ActiveWorksheet。这使得。我假设Application.Cell1,1也无效。感谢复制方法不是一个函数。此行失败设置oBookNew1=oBook.Worksheets1.copy您是对的-现在修复了它。尽管您提到的这行代码实际上并不在我的代码中,但我使用了shIndex而不是1:oExcel.ActiveWorkbook在VBScriptI中不可用,我很抱歉。我错了。不可用的是ActiveWorksheet。这使得。我假设Application.Cell1,1也无效。Thanks@ThomasInzina-复制方法在很大程度上是一种功能。你的错误是什么?但它可能需要更多的VBS参数。@ThomasInzina-请参阅我的编辑。我想我知道这行为什么不起作用了。oExcel.Active工作簿在VBScript中不可用。很抱歉,我错了。不可用的是ActiveWorksheet。@ThomasInzina-复制方法在很大程度上是一个函数。你的错误是什么?但它可能需要更多的VBS参数。@ThomasInzina-请参阅我的编辑。我想我知道这行为什么不起作用了。oExcel.Active工作簿在VBScript中不可用。很抱歉,我错了。不可用的是ActiveWorksheet。