【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.Range cell = sheet.Cells[1, 1]; // A1セルを指定

        // テキストボックスにハイパーリンクを設定 ★
        sheet.Hyperlinks.Add(cell, "http://www.example.com", "", "example.comへのリンクです。", "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.Range cell = sheet2.Cells[1, 1]; // A1セルを指定

        // テキストボックスにハイパーリンクを設定
        sheet2.Hyperlinks.Add(cell, "", "Sheet1!A1", "Sheet1のセルA1へのリンクです。", "Sheet1のセルA1");

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