当我想使用以下代码将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跳过了这个命令。
提前谢谢。
答案 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)而不保存它将丢弃该新工作表。