none
VS2008で作成したExcel2007用VBアプリケーションをExcel2016環境で実行するとHResultエラーとなる RRS feed

  • 質問

  • はじめて利用させていただきます。

    VisualStudio2008 Professional EditionにてExcelファイルを生成するプログラムを開発しております。
    今回、Office2007のサポート切れに伴い、Office2016へのバージョンアップ対応していますが、Excel2016環境でHRESULTエラー(0x800A03EC)となり、調査を進めています。デバック環境にてエラー箇所は以下であることが判明しましたが、対応方法が不明です。解決方法をご存じの方、ご教授ください。

    本ロジックは、マクロを登録されたボタンを配置したシートをlobj_OutputWB2からlobj_OutputW
    Bにコピーし、データを貼り付けてExcelファイル完成としたいのですが、「Excel でシートを異なるブックへコピーするとコピー先のブック上のオブジェクトに登録されたマクロ名が変更されマクロが実行できない」の問題から、コピー後に、ボタン(Shape)のクリック時の動作にマクロを関連づけることをしています。その部分でエラーとなります。

    dim lobj_OutputWB as Excel.Workbook  '出力Exelファイルオブジェクト
    dim lobj_OutputWB2 as Excel.Workbook  '雛形となるExelファイルオブジェクト(マクロ含む)

    lobj_OutputWB2.Sheets("出力シート2").copy(lobj_OutputWB.sheets("出力シート1"))

    lobj_OutputWB.sheets("出力シート2").Shapes("CommandButton1").OnAction = lobj_OutputWB.sheets("出力シート2").CodeName & ".CommandButton1_Click"

    Excelがバージョンアップしたので、本ロジックが不要かと考え、シートのコピーのみで実行しましたが、
    作成されたExcelファイルでボタンをクリックしても正常動作しませんでした。

    補足です。
    実行環境は、Excel2007とExcel2016の両環境で同一EXEとしたいのが第一希望です。
    そのため、現時点では、Microsoft.Office.Interop.Excelのバージョンは、12.0を参照設定しています。
    Microsoft.Office.Interop.Excelのバージョン16.0を参照設定し、上記の問題が解消するかは試せていません。
    Verjon12のままで、どうしても解決しない場合は、環境によりEXEを切り替えることはやむを得ない考えです。

    2017年7月12日 2:07