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 サイトを参照してください。

Microsoft 認定パートナー - https://partner.microsoft.com/global/30000104

Microsoft Advisory Services - http://support.microsoft.com/gp/advisoryservice

利用可能なサポート オプションの詳細と Microsoft への問い合わせ方法については、次の Microsoft 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 に設定されている場合、選択したブック内のすべてのワークシートが保存されます。

状態

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