本記事は、Excelのハイパーリング設定の際に発生する以下のエラーの対策について紹介します。
ハンドルされていない例外: System.Runtime.InteropServices.COMException: HRESULT からの例外:0x800A03EC
場所 System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
場所 Microsoft.Office.Interop.Excel.Shape.get_Hyperlink()
場所 Program.Main() .............
エラーが発生するコード
テキストボックス(オートシェイプ)の Hyperlink.Address プロパティに直接アドレスを文字列として格納しようとすると、上記エラーが発生します。
// 参照の追加画面で Microsoft.Office.Interop.Excel を追加してください ★
using System;
using Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;
class Program
{
static void Main()
{
// Excel アプリケーションの初期化
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = true; // Excelを表示
// 新しいワークブックの作成
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet sheet = workbook.Sheets[1];
// テキストボックスの追加
Excel.Shape textBox1 = sheet.Shapes.AddTextbox(
MsoTextOrientation.msoTextOrientationHorizontal,
100, 100, 200, 50); // 位置とサイズを指定
// テキストボックスに表示する文字列
textBox1.TextFrame2.TextRange.Text = "example.comを開く";
// テキストボックスにハイパーリンクを設定 ★
textBox1.Hyperlink.Address = "http://www.example.com";
// ワークブックやアプリケーションの保存、閉じる処理は適宜行う
// 例: workbook.SaveAs("C:\path\to\your\file.xlsx");
// excelApp.Quit();
}
}
エラーが発生しないようにする方法
sheet.Hyperlinks.Addメソッドを使用することで回避できます。
// 参照の追加画面で Microsoft.Office.Interop.Excel を追加してください ★
using System;
using Microsoft.Office.Core;
using Excel = Microsoft.Office.Interop.Excel;
class Program
{
static void Main()
{
// Excel アプリケーションの初期化
Excel.Application excelApp = new Excel.Application();
excelApp.Visible = true; // Excelを表示
// 新しいワークブックの作成
Excel.Workbook workbook = excelApp.Workbooks.Add();
Excel.Worksheet sheet = workbook.Sheets[1];
// テキストボックスの追加
Excel.Shape textBox1 = sheet.Shapes.AddTextbox(
MsoTextOrientation.msoTextOrientationHorizontal,
100, 100, 200, 50); // 位置とサイズを指定
// テキストボックスに表示する文字列
textBox1.TextFrame2.TextRange.Text = "example.comを開く";
// テキストボックスにハイパーリンクを設定 ★
sheet.Hyperlinks.Add(textBox1, "http://www.example.com");
// ワークブックやアプリケーションの保存、閉じる処理は適宜行う
// 例: workbook.SaveAs("C:\path\to\your\file.xlsx");
// excelApp.Quit();
}
}
まとめ
本記事では、C#でExcelのハイパーリング設定する際に発生するエラー「HRESULT からの例外:0x800A03ECが発生」について対処方法の例を紹介しました。