【C#】Excelのテキストボックス(オートシェイプ)にハイパーリンクを設定する方法

C#

Excelのテキストボックス(オートシェイプ)にハイパーリンクを設定するサンプルコードです。通常のURLと、同じExcelブック内の別シートへのリンクの方法を紹介します。

ハイパーリンク設定に使用するメソッドを先に紹介します。

Hyperlinks.Add(Anchor, Address, [SubAddress], [ScreenTip], [TextToDisplay])
  • Anchor:ハイパーリンクを追加するオブジェクトやセル。
  • Address:URLやファイルパス。同じドキュメント内の場合は空文字列 “” を設定。
  • SubAddress:[オプション]ドキュメント内の位置。
  • ScreenTip:[オプション]マウスオーバー時に表示されるツールチップテキスト。
  • TextToDisplay:[オプション]テキストボックス(オートシェイプ)では無視されるので設定不要。

サンプルコード1:URLを指定

Hyperlinks.Addの第2引数にURLを記述することでハイパーリンクを設定できます。

// 参照の追加画面で 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();
    }
}

サンプル2:同じブック内の別シートを指定

Hyperlinks.Addの第2引数を空文字列として、第3引数に別シートへのリンクを記述します。

// ★参照の追加画面で 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 sheet1 = workbook.Sheets[1];
        sheet1.Name = "Sheet1";

        // 新しいワークシートの追加
        Excel.Worksheet sheet2 = workbook.Sheets.Add(After: workbook.Sheets[workbook.Sheets.Count]);
        sheet2.Name = "Sheet2";

        // テキストボックスの追加
        Excel.Shape textBox1 = sheet2.Shapes.AddTextbox(
            MsoTextOrientation.msoTextOrientationHorizontal,
            100, 100, 200, 50); // 位置とサイズを指定

        // テキストボックスに表示する文字列
        textBox1.TextFrame2.TextRange.Text = "Sheet1のセルA1へ";

        // テキストボックスにハイパーリンクを設定
        sheet2.Hyperlinks.Add(textBox1, "", "Sheet1!A1");

        // ワークブックやアプリケーションの保存、閉じる処理は適宜行う
        // 例: workbook.SaveAs("C:\path\to\your\file.xlsx");
        // excelApp.Quit();
    }
}
タイトルとURLをコピーしました