none
SaveAsメソッドを実行する際に、Excel2007では実行時エラーが表示されるが、Excel2003では表示されない RRS feed

  • 質問

  • Excel2003で作成したマクロをExcel2007で実行したところ、実行時エラーが表示されてしまいます。

    【開発環境】Excel 2003 SP3

    【実行環境】Excel 2007 SP3(またはSP2)

    2つのExcelファイルを開き、ブックAの入力値をブックBにコピーする処理を行い、正常終了時にはブックBを別名で保存しています。


    このとき、


    以下のようにSaveAsメソッドを実行すると、Excel2003では実行時エラーが表示されず、Excel2007では続けて2回同じ実行時エラーが表示されます。

    outputExcelBook.SaveAs Filename:=outputFilePath

    表示される実行時エラーの内容は以下の通りです。

    上記の実行時エラーが表示されるのですが、別名保存そのものは実行されているようで、outputFilePathに指定したパスにファイルが保存されています。

    Excel2007でこの実行時エラーを表示させない方法があればご教示いただきたく存じます。

    以上、よろしくお願いいたします。

    • 移動 山本春海 2012年3月13日 8:43 より適切と思われるカテゴリに移動しました。 (移動元:Visual Studio Tools for Office)
    2012年3月13日 1:12

すべての返信

  • 2003と2007ではファイル拡張子が違いますから、

    FileFormatも指定したらいかがでしょうか!?

    2012年3月17日 9:08
  • iquyo様

    ご指摘ありがとうございます。

    FileFormatの指定を以下のように行ってみましたが、Excel2003では実行時エラーが表示されず、

    Excel2007では同様にエラーが表示されてしまいました。

    ExcelのバージョンによりFileFormatの指定方法が異なるということなので、

    以下のようにIf文で処理を分岐しています。

    If Val(Application.Version) < 12 Then
        outputExcelBook.SaveAs Filename:=outputFilePath
    Else
        outputExcelBook.SaveAs Filename:=outputFilePath, FileFormat:=56
    End If

    デバッグで確認したところ、Excel2007の場合に後者の分岐に入っていることを確認しています。

    outputFilePathに指定している出力ファイルの拡張子は、「.xls」です。

    (他の処理との関係から、拡張子は「.xls」から変更することができません。)

    また、このマクロを実装しているExcelブックの拡張子も「.xls」です。

    他に必要な情報があればご指摘いただければと思います。

    よろしくお願いいたします。

    2012年3月19日 0:19