#excel #vba
Вопрос:
Хотя я очень устал от своего VBA, я уже много раз сохранял листы в новых книгах. Этот код завершается ошибкой с кодом ошибки «Метод» Сохранение «объекта» _Workbook «не удался»
wbSource.Sheets(newFileName).Copy
On Error GoTo NewWorkbookError:
Set wbCleaned = ActiveWorkbook
ChDir ProcessedFileStoragePath
wbCleaned.SaveAs filename:=newFilePath, _
FileFormat:=FileStoredAsFormat, CreateBackup:=False
Он выходит из строя с той же ошибкой без строки ChDir, которую я добавил, так как при записи макроса для сохранения новой книги эта строка кода была в записи.
Еще одна вещь, которую я заметил, — это оболочка «имя файла» в методе .SaveAs, которая должна быть именем файла: но редактор строчит его, когда я печатаю его таким образом. У меня нет никаких других переменных в этом модуле с именем filename.
Const ProcessedFileStoragePath As String = "C:UsersTDOneDriveDataLoadersFilesForAzureStorage"
Const FileStoredAsFormat As String = "xlCSVUTF8"
Любая помощь будет признательна, я и так потратил на это слишком много времени.
Комментарии:
1. содержит ли переменная newfilepath допустимый путь ?
2. Почему вы копируете, но никогда не вставляете значение в новый вб?
3. Когда вы проходите через код после заданной строки, wbCleaned дает вам имя, если вы попытаетесь ? wbCleaned. Имя в ближайшем окне?
4. Примерные значения
newFilePath
иFileStoredAsFormat
были бы полезны.5. @BigBen..да, понял это, когда пошел варить кофе, добавил сейчас
Ответ №1:
Сегодня утром у меня была точно такая же проблема в моем собственном коде. ActiveWorkbook по какой-то причине не выдал объект и остался пустым. Я решил проблему, указав рабочую книгу вручную.
Попробуйте это:
wkb.Worksheets(newFileName).Copy
Excel.Workbooks(2).SaveAs newFilePath
решение:
Решением проблемы OPs было перечисление форматов файлов. Это должен был быть тип переменной variant (согласно комментарию OP).
Я оставлю свое предложение для других, если оно окажется полезным.
Комментарии:
1. wbCleaned-это НЕ ничто, поэтому он не является пустым объектом. Путь, на который я сохраняю, — это путь OneDrive, я подумал, что это может иметь какое-то отношение к этому. Я попробовал простую старую «C:Temptestfile.csv» и это тоже не сработало.
2. Моей единственной дополнительной мыслью было протестировать файл в другом формате
3. Смотрите мой ответ на комментарий в ОП