2016-01-20 16 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, сценарий запускался из терминала Reflection на клиенте Citrix.

Спасибо за ваше время.

ответ

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

Смежные вопросы