現象
このマクロで Visual Basic for ApplicationsをMicrosoft Excel、次のようなエラー メッセージが表示される場合があります。
実行時エラー '1004':
オブジェクト '_Worksheet' のメソッド 'SaveAs' が失敗しました原因
この動作は、次の両方の条件が満たされている場合に発生する可能性があります。
-
ワークシートを保存Visual Basic for Applicationsマクロを使用しています。
-and- -
ファイル形式は、定数 xlWorkbookNormal として指定します。
たとえば、次のコードを実行すると、このエラーが発生します。
Sub A()
Dim myNewSheet As Worksheet Set myNewSheet = ActiveSheet FileNameBin = "c:\ABC" myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=xlWorkbookNormal End Sub
回避策
Microsoft は、明示または黙示を問わず、明示または黙示を問わず、特定の目的に対する商品性やフィットネスに関する黙示の保証を含むがこれらに限定されない、説明のみを目的としてプログラミングの例を提供しています。 この記事では、説明されているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールに慣れたユーザーを想定しています。 Microsoft サポート担当者は、特定の手順の機能を説明するのに役立ちますが、これらの例を変更して、追加の機能を提供したり、特定のニーズに合わせて手順を構築したりは行う必要があります。 Microsoft 認定パートナー - https://partner.microsoft.com/global/30000104 Microsoft アドバイザリ サービス - http://support.microsoft.com/gp/advisoryservice 利用可能なサポート オプションと Microsoft への連絡方法の詳細については、次の Microsoft Web サイトを参照してください。http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMSこの動作を回避するには、ファイル形式の仕様を定数 xlWorkbookNormal から 1 に変更します。 コード例は、次のコードに変更された場合、通常は次の関数を使用します。
プログラミングの経験が限られている場合は、Microsoft 認定パートナーまたは Microsoft アドバイザリ サービスにお問い合わせください。 詳細については、次の Microsoft Web サイトを参照してください。Sub A()
Dim myNewSheet As Worksheet Set myNewSheet = ActiveSheet FileNameBin = "c:\ABC" myNewSheet.SaveAs Filename:=FileNameBin, FileFormat:=1 End Sub
注意 ワークシートを保存している場合でも、ファイル形式が xlWorkbookNormal または 1 に設定されている場合、選択したブック内のすべてのワークシートが保存されます。
状態
マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。