xlsx到csv:不需要请求确认,不能选择范围

时间:2017-10-04 12:00:33

标签: csv vbscript automation export-to-csv xlsx

当我想使用以下代码将xlsx文件转换为csv时:

WorkingDir = "C:\Users\Admin\Documents\example.xlsx"

Dim fso, FileName, SaveName, myFile
Dim objExcel, objWorkbook

Set fso = CreateObject("Scripting.FilesystemObject")
Set myFile = fso.GetFile(WorkingDir)

Set objExcel = CreateObject("Excel.Application")

objExcel.Visible = False
objExcel.DisplayAlerts = True

FileName = Left(myFile, InStrRev(myFile, "."))
Set objWorkbook = objExcel.Workbooks.Open(myFile)
objWorkbook.Sheets(1).Range("A2:C2").Select
SaveName = FileName & "csv"
objWorkbook.SaveAs SaveName, 23
objWorkbook.Close

Set objWorkbook = Nothing
Set objExcel = Nothing
Set fso = Nothing
Set myFolder = Nothing

它有效,但问我是否要在example.csv文件中保存我的更改。保存应该在没有确认的情况下工作,并且还应该覆盖最终存在的.csv文件 第二个问题是我选择example.xlsx文件的特定部分(行和coumns)的range命令将被转换为.csv文件。但没有错误。似乎vbscript跳过了这个命令。
提前谢谢。

1 个答案:

答案 0 :(得分:2)

尝试告诉Excel文件已保存

objWorkbook.Saved = true
objWorkbook.Close

在保存您的选择范围方面,您可以尝试

objWorkbook.Sheets(1).Range("A2:C2").Copy
dim sheet: set sheet =  objWorkbook.Sheets.Add()
' Add()ing should actually activate the sheet
' sheet.Activate
sheet.Paste
' SaveAs will save the active sheet
objWorkbook.SaveAs FileName, 23

换句话说,您需要在第二个工作表中复制数据,然后将该工作表另存为csv。关闭工作簿(xlsx)而不保存它将丢弃该新工作表。