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.