Проблемы
При запуске макроса Visual Basic для приложений в Microsoft Excel может появиться следующее или аналогичное сообщение об ошибке:
Ошибка при запуске '1004':Метод 'SaveAs' объекта '_Worksheet' не удалось
Причина
Такое поведение может происходить, если оба условия истинны:
-
Для сохранения Visual Basic для приложений используется макрос.-and-
-
Формат файла указывается как постоянная xlWorkbookNormal.
Например, эта ошибка возникает по следующему коду:
Sub A() Dim myNewSheet As Worksheet Set myNewSheet = ActiveSheet FileNameBin = "c:\ABC" myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=xlWorkbookNormalEnd Sub
Обходное решение
Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и не предоставляет явных или подразумеваемых гарантий относительно их корректной работы в конкретных случаях и в пользовательских приложениях. Примеры в данной статье рассчитаны на пользователя, имеющего достаточный уровень знаний соответствующего языка программирования, а также необходимых средств разработки и отладки. Специалисты служб технической поддержки Майкрософт могут пояснить назначение тех или иных конструкций кода в конкретном примере, но модификация примеров и их адаптация к задачам разработчика не поддерживается. Если у вас ограниченный опыт программирования, обратитесь к сертифицированным партнерам Майкрософт или в службы microsoft Advisory Services. Дополнительные сведения можно найти на следующих веб-сайтах Майкрософт: сертифицированные партнеры Майкрософт — https://partner.microsoft.com/global/30000104 Microsoft Advisory Services — http://support.microsoft.com/gp/advisoryservice Дополнительные сведения о доступных вариантах поддержки и о том, как связаться с корпорацией Майкрософт, можно найти на следующем веб-сайте Майкрософт:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS Чтобы обойти эту ситуацию, измените спецификацию формата файла с константы xlWorkbookNormal на 1. Функции кода в примере обычно выполняются в том случае, если он был изменен на:
Sub A() Dim myNewSheet As Worksheet Set myNewSheet = ActiveSheet FileNameBin = "c:\ABC" myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=1End Sub
ПРИМЕЧАНИЕ. Несмотря на сохранение книги, все его книги сохраняются при выборе формата xlWorkbookNormal или 1.
Статус
Корпорация Майкрософт подтверждает, что это проблема в продуктах Майкрософт, перечисленных в начале этой статьи.