Symptomy
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:
Błąd czasu uruchomienia '1004':
Metoda "ZapiszAs" obiektu "_Worksheet" nie powiodła sięPrzyczyna
To zachowanie może wystąpić, gdy są spełnione oba poniższe warunki:
-
Używasz makra makra Visual Basic for Applications do zapisywania arkusza.
— i — -
Format pliku należy określić jako stałą xlWorkbookNormal.
Poniższy kod powoduje na przykład ten błąd:
Sub A()
Dim myNewSheet As Worksheet Set myNewSheet = ActiveSheet FileNameBin = "c:\ABC" myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=xlWorkbookNormal End Sub
Obejście
Firma Microsoft podaje przykłady programowania wyłącznie na ilustracji, bez gwarancji jawnych lub dorozumianych, 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, który jest pokazywany, oraz narzędzia używane do tworzenia i debugowania procedur. Pracownicy pomocy technicznej firmy Microsoft mogą pomóc w objaśnieniach funkcji określonej procedury, ale nie zmodyfikują tych przykładów, aby udostępnić dodatkowe funkcje lub skonstruować procedury w celu zaspokojenia konkretnych potrzeb. — https://partner.microsoft.com/global/30000104 Program Microsoft Advisory Services — http://support.microsoft.com/gp/advisoryservice Aby uzyskać więcej informacji na temat dostępnych opcji pomocy technicznej i sposobu kontaktowania się z firmą Microsoft, odwiedź następującą witrynę internetową firmy Microsoft:http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS Aby zmienić to zachowanie, należy zmienić specyfikację formatu pliku ze stałej xlWorkbookNormal na 1. Przykładowy kod działa normalnie, jeśli został zmieniony na:
Jeśli masz ograniczone środowisko programowania, możesz chcieć skontaktować się z certyfikowanym partnerem firmy Microsoft lub z usługami doradczymi firmy Microsoft. Aby uzyskać więcej informacji, odwiedź następujące witryny sieci Web firmy Microsoft: Certyfikowani partnerzy firmy MicrosoftSub A()
Dim myNewSheet As Worksheet Set myNewSheet = ActiveSheet FileNameBin = "c:\ABC" myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=1 End Sub
UWAGA Mimo że zapisywany jest arkusz, wszystkie arkusze w wybranym skoroszycie są zapisywane, gdy format pliku ma wartość xlWorkbookNormal lub 1.
Stan
Firma Microsoft potwierdziła, że jest to usterka występująca w produktach firmy Microsoft wymienionych na początku tego artykułu.