xlsx到csv:未经通知要求确认,无法选择范围

xlsx到csv:未经通知要求确认,无法选择范围,csv,vbscript,automation,export-to-csv,xlsx,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 = Cre

当我想用以下代码将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文件的特定部分(行和列)的range命令将转换为.csv文件,但该命令不起作用。但是没有错误。vbscript似乎跳过了此命令

提前谢谢。

尝试告诉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)而不保存它将丢弃该新工作表。

尝试告诉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)而不保存它将丢弃该新工作表。

@nolags很棒!我感到惊讶sometimes@nolags伟大的我有时会给自己一个惊喜