Vba Excel .SaveAs xlCSV对象定义错误

问题描述:

当试图通过VBA和ojbExcel保存工作表时,我得到了许多人已经拥有的对象定义错误(1004)。这种情况令人讨厌的是,它之前运行良好,但昨天开始给我这个错误。我研究了这个错误,并且我尝试了大多数解决方案,但无济于事。 有问题的代码是:Vba Excel .SaveAs xlCSV对象定义错误

fileLoc = Session.GetOpenFilename("Excel (*.xls*), *.xls*") 
If fileLoc = "" Then Exit Sub 
Set oXl = CreateObject("Excel.Application") 
fpath = fileLoc 
spath = "H:\Download\" 
sheetnum = InputBox("Please insert the sheet number(Count from left to  right).", "Select Sheet!") 
fdir = Dir(fpath) 
If Trim(fdir) <> "" Then 
If Right(fdir, 5) = ".xlsx" Then 

    Set oWorkbook = oXl.workbooks.Open(fileLoc, False, True) 
    Set oWorksheet = oWorkbook.worksheets(sheetnum) 
    oXl.Activeworkbook.worksheets(sheetnum).SaveAs FileName:=spath & oWorksheet.Name, FileFormat:=xlCSV 
    'other options I have tried: 
    'oWorksheet.SaveAs spath & oWorkbook.worksheets(sheetnum).Name, xlCSV 
    'oWorksheet.SaveAs spath & oWorksheet.Name, xlCSV 'this last one worked previously 
End if 
End if 

oWorkbook.Close 
Set oWorkbook = Nothing 
oXl.Quit 
Set oXl = Nothing 

什么可能发生变化,这不工作了? Excel 2010,脚本从Citrix客户端上的Reflection终端运行。

谢谢你的时间。

我假设这段代码实际上并不是从Excel运行的,在这种情况下,xlCSV常量不起作用,除非您设置了对Microsoft Excel xx.x Objects库(即早期绑定)的引用。您已使用后期绑定,因此xlCSV将被视为具有空值的未声明变体类型。


使用文字value of the xlFileFormat常数代替:

oXl.Activeworkbook.worksheets(sheetnum).SaveAs FileName:=spath & oWorksheet.Name, FileFormat:=6 
+0

谢谢!我完全不知道这个工作本周是如何工作的,也许是因为我没有正确关闭我的objExcel(以前遇到过这个问题),但它现在可以工作。谢谢! – Witloofdc