2016-01-20 73 views
0

當試圖通過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終端運行。

謝謝你的時間。

回答

2

我假設這段代碼實際上並不是從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

相關問題