Komunikat o błędzie po uruchomieniu makra Visual Basic for Applications w programie Excel: "Metoda 'SaveAs' of object '_Worksheet' nie powiodła się"

Objawy

Po uruchomieniu makra Visual Basic for Applications w programie Microsoft Excel może zostać wyświetlony następujący lub podobny komunikat o błędzie:

Uwaga

Błąd czasu wykonywania '1004':
Metoda "SaveAs" obiektu "_Worksheet" nie powiodła się

Przyczyna

To zachowanie może wystąpić, gdy są spełnione oba poniższe warunki:

  • Arkusz jest zapisywany za pomocą makra Visual Basic for Applications.

    -I-

  • Format pliku należy określić jako stałą xlWorkbookNormal.

Na przykład następujący kod powoduje wystąpienie tego błędu:

Sub A()
   Dim myNewSheet As Worksheet
   Set myNewSheet = ActiveSheet
   FileNameBin = "c:\ABC"
   myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=xlWorkbookNormal
End Sub

Obejście

Firma Microsoft udostępnia przykłady programowania tylko na ilustracje, bez gwarancji wyrażonej lub dorozumianej, w tym dorozumianych gwarancji przydatności handlowej i/lub przydatności do określonego celu. W tym artykule założono, że znasz język programowania oraz narzędzia służące do tworzenia i debugowania procedur. Specjaliści pomocy technicznej firmy Microsoft mogą pomóc w objaśnieniu funkcjonalności określonej procedury, ale nie zmodyfikują tych przykładów w celu zapewnienia dodatkowych funkcji ani skonstruowania procedur spełniających określone potrzeby.
Jeśli masz ograniczone doświadczenie w programowaniu, możesz skontaktować się z certyfikowanym partnerem firmy Microsoft lub usługami doradczych firmy Microsoft. Aby uzyskać więcej informacji, odwiedź następujące witryny internetowe firmy Microsoft:

Certyfikowani partnerzy firmy Microsoft — https://partner.microsoft.com/global/30000104

Usługi doradcze firmy Microsoft — http://support.microsoft.com/gp/advisoryservice

Aby uzyskać więcej informacji na temat dostępnych opcji pomocy technicznej oraz sposobu kontaktu z firmą Microsoft, odwiedź następującą witrynę internetową firmy Microsoft:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

Aby obejść to zachowanie, zmień specyfikację formatu pliku ze stałej xlWorkbookNormal na 1. Przykładowy kod działa normalnie, jeśli zmieniono na:

Sub A()
   Dim myNewSheet As Worksheet
   Set myNewSheet = ActiveSheet
   FileNameBin = "c:\ABC"
   myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=1
End Sub

UWAGA Mimo zapisywania arkusza wszystkie arkusze w wybranym skoroszycie są zapisywane, gdy format pliku jest ustawiony na xlWorkbookNormal lub 1.

Stan

Firma Microsoft potwierdziła, że jest to problem w produktach firmy Microsoft wymienionych na początku tego artykułu.