VBA для копирования текущего листа в новую книгу и сохранения

#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. Смотрите мой ответ на комментарий в ОП