Excel で Visual Basic for Applications マクロを実行すると、"オブジェクト '_Worksheet' のメソッド 'SaveAs' が失敗しました" というエラー メッセージが表示される

現象

Microsoft Excel で Visual Basic for Applications マクロを実行すると、以下または同様のエラー メッセージが表示される場合があります。

注

実行時エラー '1004':
オブジェクト '_Worksheet' のメソッド 'SaveAs' が失敗しました

原因

この動作は、次の両方の条件に該当する場合に発生する可能性があります。

  • Visual Basic for Applications マクロを使用してワークシートを保存している。

    かつ

  • ファイル形式を定数 xlWorkbookNormal として指定します。

たとえば、次のコードを使用すると、このエラーが発生します。

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

回避策

サンプル プログラムは例示のみを目的として提供されており、商品性、特定目的に対する適合性その他について明示であると黙示であるとを問わず、マイクロソフトは一切保証をするものではありません。 サンプル プログラムの利用者には、使用するプログラミング言語、およびプロシージャの作成とデバッグに使用されるツールに精通しているユーザーを想定しています。 Microsoft Support 担当者は、サンプル プログラムを利用してある特定のプロシージャの機能を説明することがありますが、改変して機能を追加したり、ユーザーの要望に応じてプロシージャを作成したりすることはありません。
プログラミングに習熟されていない場合、マイクロソフト認定パートナー、あるいはマイクロソフトのアドバイザリ サービスまでお問い合わせください。 詳細については、次のマイクロソフト Web サイトを参照してください。

マイクロソフト認定パートナー - https://partner.microsoft.com/global/30000104

マイクロソフト アドバイザリ サービス - http://support.microsoft.com/gp/advisoryservice

利用可能なサポート オプションおよびマイクロソフトへの問い合わせ先の詳細については、次のマイクロソフト Web サイトを参照してください。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:=1
End Sub

注: ワークシートを保存している場合でも、ファイル形式が xlWorkbookNormal または 1 に設定されている場合、選択したブック内のすべてのワークシートが保存されます。

状態

マイクロソフトでは、この問題をこの資料の冒頭に記載したマイクロソフト製品の問題として認識しています。