当尝试使用ojbExcel通过VBA作为工作表时,我得到很多人已经拥有的对象定义错误(1004)。令人讨厌的是这个案子以前工作得很好,但昨天开始给我这个错误。我研究了这个错误,我尝试了大多数解决方案,但无济于事。 有问题的代码是:
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终端运行。
感谢您的时间。
答案 0 :(得分:2)
我假设此代码实际上并非从Excel运行,在这种情况下,Microsoft Excel xx.x Objects
常量不会起作用,除非您已设置对{{{{}的引用1}}库(即早期绑定)。您已使用后期绑定,因此xlCSV
将被视为具有空值的未声明变体类型。
使用文字value of the xlFileFormat常量代替:
oXl.Activeworkbook.worksheets(sheetnum).SaveAs FileName:=spath & oWorksheet.Name, FileFormat:=6