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();
}
}
まとめ
本記事では、C#でExcelのテキストボックス(オートシェイプ)にハイパーリンクを設定する方法を紹介しました。