初めて質問させていただきます。
VisualStudio2008 Professional EditionにてExcelファイルを生成するプログラムを開発しております。
今回、Office2007のサポート切れに伴い、Office2016へのバージョンアップ対応しています。
Excel2016環境でエラーとなる処理があり、可能であれば、Excel2007、2016の両環境で正常動作するようにしたいですが、難しいと判断しています。
そこで、Excel2016用のMicrosoft.Office.Interop.Excelを利用して、Excel2016のみでエラーとならないプログラムとするために、VisualSutdio2008でMicrosoft.Office.Interop.Excel Version16を参照設定し、プログラム改造をしたいのですが、Version11、12しか参照設定-[.net]に表示されません。
Excel2007はアンインストールし、Excel2016をインストールしました。
.NET プログラミングサポートも同時にインストール済みです。
インストール順は、Excel2017をインストール後、VS2008をインストールしています。
その後、プログラムと機能にて、.NET プログラミングサポートを再インストールしてみましたが
同じでした。
VS2008では、Microsoft.Office.Interop.Excel Version11、12しか対応していないのでしょうか?
今回の問い合わせの発端は以下のエラー対応です。
もし、対応方法がわかる方がいらっしゃいましたら、教えてください。
以下のロジックがExcel2016環境でHRESULTエラー(0x800A03EC)となります。
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"
本ロジックは、マクロを登録されたボタンを配置した出力シート2をlobj_OutputWB2からlobj_OutputWBにコピーし、データを貼り付けてExcelファイル完成としたいのですが、Excel2007Sp2の問題として「Excel でシートを異なるブックへコピーするとコピー先のブック上のオブジェクトに登録されたマクロ名が変更されマクロが実行できない」があるため、コピー後に、ボタン(Shape)のクリック時の動作にマクロを関連づけることをしています。その部分でエラーとなります。
Excelがバージョンアップしたので、本ロジックが不要かと考え、シートのコピーのみで実行し、作成されたExcelファイルでボタンをクリックしても正常動作しませんでした。
出力シート1にも出力シート2にもマクロが含まれており、出力シート1は、Excel閉じるイベントで実行されるマクロであり、コピーするシートを逆転すると出力シート1の閉じるイベントで実行されるマクロが実行されなくなりました。
よって、Microsoft.Office.Interop.Excel Version12のままでは、Excel2007Sp2の問題の対応をせざるを得ないと判断しています。
もし、Microsoft.Office.Interop.Excel Version12のままで、この問題が解決できるのであれば、それがベストです。
補足です。
実行環境は、Excel2007とExcel2016の両環境で同一EXEとしたいのが第一希望です。
どうしても解決しない場合は、環境によりEXEを切り替えることはやむを得ない考えです。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。