2017-10-04 47 views
0

当我想要一个XLSX文件转换成用下面的代码为csv: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文件。
第二个问题是,我选择将被转换为.csv文件的example.xlsx文件的特定部分(行和coumns)的range命令不起作用。但没有错误。看起来vbscript跳过这个命令。
预先感谢您。

回答

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

+0

非常感谢。一切正常。 – nolags

+1

@nolags太棒了!我有时会感到惊讶 –