概要
| この記事の結論 AccessフォームからWebサイトや共有ファイルを開くには、用途に応じて3つの方法を選びます。全レコードで同じ場所を開くならラベルの[ハイパーリンクアドレス]、取引先ごとに異なるURLを保存するならハイパーリンク型のフィールド、文字列のURLを確認してから開くならボタンとVBAが候補です。すべてのリンクでテーブルをハイパーリンク型にする必要はありません。 ハイパーリンクは、クリックしたときに指定したWebページやファイルへ移動する仕組みです。本記事ではWindows版Accessのデスクトップデータベースを対象に、リンクの作り方と使い分け、クリックできないときの調べ方を説明します。実際の画面名や配置は、製品・更新状況によって異なる場合があります。 |
この記事でわかること
- 固定リンク、レコード別リンク、VBAで開くリンクの選び方
- ラベルとテキストボックスにリンクを設定する具体的な手順
- 表示文字・実際のURL・データ型を分けて確認する方法
- 共有ファイルや配布先PCでリンクを使うときの注意点
この記事の主な内容
- 用途に合わせて3つの方法を選ぶ
- 固定のWebリンクをラベルに設定する
- ハイパーリンク型をフォームへ連結する
- 文字列のURLをボタンとVBAで開く
- 開かない原因と配布前の確認
- よくある質問
想定読了時間:約12分~15分
1. 用途に合わせて3つの方法を選ぶ
まず「どのレコードでも同じ場所を開くか」「レコードごとに行き先が変わるか」を決めます。社内マニュアルへのリンクと、取引先のホームページへのリンクでは、情報を持たせる場所が異なります。先にこの違いを整理すると、テーブルの不要な変更や、全行が同じURLを開く設定ミスを避けやすくなります。
| やりたいこと | 選ぶ方法 | 設定する場所・注意点 |
|---|---|---|
| 全員が共通の案内ページを開く | ラベルの固定リンク | フォームのラベル。テーブルの変更は不要 |
| 取引先ごとにURLを保存して開く | ハイパーリンク型を連結 | テーブルのフィールドとフォームのテキストボックス |
| URLの空欄などを確認してから開く | 文字列+ボタン+VBA | URLの保存先とボタンのクリック時イベント |

作業前に名前と保存先を確認する
変更はデータベースのコピーで試します。フォーム名、レコードソース、URLを保存するフィールド名、操作するコントロール名を控えてください。「コントロール」はフォーム上の部品、「連結」は部品をデータの保存先に結び付けることです。画面に文字が見えていても、保存先と連結されているとは限りません。
この記事では、固定リンク用のラベルを「lblHelp」、URL表示用のテキストボックスを「txtURL」、開くボタンを「cmdOpenURL」とします。既存の名前を使う場合は、コードも同じ名前に合わせます。画面上の見出しである[標題]と、VBAが参照する[名前]を混同しないことが、エラーを減らすポイントです。
2. 固定のWebリンクをラベルに設定する
同じ案内ページを開くだけなら、ラベルにリンク先を設定する方法が簡単です。例えば「操作マニュアルを開く」という文字をフォームのヘッダーに配置し、共通のURLを登録します。ここではテーブルに新しい列を追加する必要がなく、レコードを切り替えてもリンク先は変わりません。
ラベルを配置してアドレスを入力する
1. 対象フォームをデザインビューで開き、ラベルを配置します。
2. ラベルを選択し、プロパティシートの選択対象がそのラベルであることを確認します。
3. [名前]を「lblHelp」、[標題]を「Accessの教科書を開く」にします。
4. [ハイパーリンクアドレス]に「https://access-manual.jp/」を設定します。見つからない場合は[すべて]タブを確認します。
5. 保存してフォームビューへ切り替え、文字をクリックして目的のページが開くか確認します。

[標題]は利用者に見せる文言、[ハイパーリンクアドレス]は実際に移動する場所です。標題にURLを書いただけではリンク設定を済ませたことにはなりません。また、ラベルに隣接したテキストボックスを選んでいると、別の部品のプロパティを変更してしまいます。選択対象の名前を確認してから入力しましょう。
固定リンクが向いている配置
共通ヘルプや問い合わせ窓口はフォームヘッダーにまとめると見つけやすくなります。一方、明細行ごとに違う取引先を開く用途には、固定ラベルだけでは対応できません。連続フォームの各行に同じラベルが並んでいても、各レコードのURLを自動的に参照するわけではないためです。
デザインビューでは配置や選択の操作が中心なので、リンクの利用確認はフォームビューで行います。文字の見た目だけをリンク風にして終わらせず、実際の遷移先も確かめてください。外部ページの公開終了やURL変更に備えて、誰がリンク先を更新するか決めておくと運用が続けやすくなります。
3. ハイパーリンク型をフォームへ連結する
取引先ごとに異なるWebサイトを登録するなら、レコードにURLを保存し、そのフィールドをフォームのテキストボックスへ連結します。Accessのハイパーリンク型では、表示する文字と実際の移動先を管理できます。フォームの[レコードソース]に目的のフィールドが含まれていることが前提です。
新しい練習用フィールドで設定する
1. コピーしたデータベースで練習用テーブルを開き、フィールド「Webリンク」を作成します。
2. データ型を[ハイパーリンク型]にして保存します。既存の本番フィールドは、影響を調べずに変更しません。
3. フォームをデザインビューで開き、レコードソースに「Webリンク」が含まれているか確認します。
4. フィールドリストから「Webリンク」をフォームへ追加するか、テキストボックスの[コントロールソース]を「Webリンク」にします。
5. フォームビューで異なる2レコードにURLを登録し、レコードを切り替えて別々のページが開くか確認します。

テキストボックスの[コントロールソース]が空欄なら、その部品は非連結です。入力しているように見えても、取引先レコードのフィールドには保存されません。また、フォームのレコードソースがクエリの場合、元テーブルに列を追加しただけでは、その列がクエリの出力に含まれないことがあります。クエリ側も確認します。
表示文字とURLは別々に確認する
「取引先ホームページ」と表示されていても、移動先が正しいとは限りません。リンクの編集画面で、表示する文字とアドレスの両方を確認します。右クリックメニューなどからハイパーリンクの編集を開き、修正後は実際にアクセスしてください。文字を変更しただけで、移動先も変更されたと思い込まないことが大切です。

ハイパーリンク型は単純なURL文字列と同じ保存構造ではありません。表示文字・アドレス・サブアドレスなどを持てるため、既存の値をそのまま文字列として外部連携すると、区切り記号を含む形で扱われる場合があります。VBAでアドレス部分を取り出す必要がある場合は、Application.HyperlinkPartの使用を検討します。
既存システムとの連携がある場合
CSV出力、外部データベース、Webサービスとの連携があるなら、URLを通常の文字列で保持した方が扱いやすい場合があります。データ型を変更する前に、クエリ・インポート・エクスポート・VBAがその列をどう利用しているか調べましょう。ハイパーリンク型に変えることだけを、クリック可能にする唯一の方法と考える必要はありません。
[コントロールソース]の確認方法が不明な場合は、コントロールソースの使い方も参照してください。フォーム全体が参照するデータと、個々の入力欄が参照するフィールドを分けて見ると、別レコードのURLを開く原因を探しやすくなります。
リンクの保存方法から相談したい場合
URLを追加したいものの、既存の連携や複数フォームへの影響が分からない場合は、保存方法の整理から進めます。対象フォーム、URLの保存先、外部出力の有無が分かると、既存機能を維持しながら追加する方法を検討しやすくなります。
4. 文字列のURLをボタンとVBAで開く
通常の文字列で保存したURLも、Application.FollowHyperlinkを使って開けます。空欄のときに案内を出す、許可した形式だけを開くなど、クリック前の処理を追加したい場合に向く方法です。ここではHTTPSで始まるURLだけを対象とする最小例を示します。あらゆるURLの安全性を判定するコードではありません。
フォームとイベントを準備する
URLを保存する文字列フィールドを用意し、そのフィールドに連結したテキストボックスの[名前]を「txtURL」にします。短いテキスト型の上限は255文字なので、署名付きURLなど長いURLを扱う場合は長さを調べ、保存方法を別途検討してください。表示幅が狭くても、保存可能な文字数が増減するわけではありません。
次にボタンを置き、[名前]を「cmdOpenURL」、[標題]を「Webページを開く」とします。[クリック時]を[イベントプロシージャ]にして、コードビルダーから次の処理を記述します。すでにクリック時の処理がある場合は、その内容を消して貼り替えず、コピー環境で組み合わせ方を確認します。
Private Sub cmdOpenURL_Click()
On Error GoTo ErrHandler
Dim url As String
url = Trim$(Nz(Me!txtURL.Value, “”))
If Len(url) = 0 Then
MsgBox “URLを入力してください。”, vbInformation
Exit Sub
End If
If LCase$(Left$(url, 8)) <> “https://” Then
MsgBox “https://で始まるURLを確認してください。”, vbExclamation
Exit Sub
End If
Application.FollowHyperlink Address:=url
Exit Sub
ErrHandler:
MsgBox “リンクを開けませんでした。” & vbCrLf & _
Err.Description, vbExclamation
End Sub

この例は、Nullを空文字に置き換え、前後の空白を取り除いた上で、空欄と先頭文字を確認しています。「https://」だけの値や、誤ったドメインを完全に検査する処理ではありません。外部から取り込むURLを扱う場合は、許可するホスト名や運用ルールを別に定め、単なる文字列の部分一致を安全確認として使わないようにします。
このコードを使える条件を確認する
txtURLは、ハイパーリンク型ではなく通常の文字列に連結する前提です。ハイパーリンク型の内部表現をそのまま渡す用途には使いません。また、コードが動かない場合は、ボタンのイベント設定と、データベースの信頼状態を確認します。出所が不明なファイルのマクロを、動かすためだけに有効化することは避けてください。
保存前の入力値を開くのか、保存済みの値だけを開くのかも業務上の判断です。上の例は現在のテキストボックスの値を参照します。保存を必須にする場合は、レコードの保存と入力チェックを先に行う処理を別途設計します。リンクを開く操作をしただけで、必ずデータ保存まで完了したと考えないでください。
5. 開かない原因と配布前の確認
リンクが開かないときは、URLそのもの、フォームの設定、利用PCの環境を順番に切り分けます。最初からデータ型を変更したり、すべてのセキュリティ設定を緩めたりすると、原因が分かりにくくなります。表示文字ではなく実際の移動先を取り出し、同じPCで直接開けるか確認するところから始めましょう。
| 症状 | 最初の確認 | 次に行うこと |
|---|---|---|
| 文字をクリックしても反応しない | 表示だけをリンク風にしていないか | アドレス、コントロール、ビューを確認 |
| 違う取引先のページが開く | 固定リンクになっていないか | レコードとコントロールソースを照合 |
| ボタンだけ動かない | クリック時イベントと名前 | 信頼状態、コンパイル、エラー内容を確認 |
| 自分のPCでは開くが他PCでは開かない | 同じURL・パスを直接開けるか | 権限、ネットワーク、関連付けを確認 |
| Webサイトが見つからない | URLの誤りや公開終了 | 移転先を確認し保存値を更新 |

共有ファイルへのリンクは権限も必要
共有フォルダのPDFなどへリンクする場合、リンクを保存しただけでは閲覧権限は付与されません。利用者がその共有先へアクセスできる必要があります。個人PCの「C:\\」配下を指定すると、他のPCでも同じファイルを参照できるとは限りません。業務の共有先と権限を確認してから、共通して使える場所を指定します。
ドライブ文字もPCごとに割り当てが異なる場合があります。組織で管理する共有先なら「\\サーバー名\共有名\ファイル.pdf」のようなUNCパスを検討します。ただし、UNCに変えてもネットワーク接続や権限の問題は解決しません。なお、前節のVBA例はHTTPS専用なので、そのままファイルパスを開くコードとしては使えません。
配布前の確認は正常系と失敗系をそろえる
少なくとも、正常なURL・空欄・誤ったURL・異なるレコード・別PCの5条件を試します。連続フォームの場合は、上の行と下の行で異なるURLが開くか確認してください。失敗した場合に、利用者が何を直せばよいか分かる案内を出せると、問い合わせの往復も減らせます。

| 確認する入力・環境 | 期待する結果 | 記録する内容 |
|---|---|---|
| 正しいHTTPS URL | 目的のページが開く | 保存値と実際の移動先 |
| URLが空欄 | 入力を促す案内が出る | 案内文と処理停止 |
| HTTPやファイルパス | 上記VBA例では開かない | 許可形式の業務判断 |
| レコードA・B | それぞれ別のURLが開く | レコードIDとURL |
| 配布先PC | 同じ意図で操作できる | Access版、権限、発生したエラー |
まとめ
固定の案内ページならラベル、レコードごとのリンクならデータとの連結、クリック前に確認したいなら文字列とVBAを選びます。操作手順だけでなく、リンク先をどこに保存するか、誰が更新するか、利用者にどの権限が必要かを決めると、配布後も使いやすいフォームになります。
6. よくある質問
変更は必須ではありません。全レコード共通のURLなら、ラベルの[ハイパーリンクアドレス]に設定できます。また、通常の文字列で保存したURLを、ボタンのVBAから開く方法もあります。レコードごとにリンクを入力・編集する用途では、ハイパーリンク型が候補になります。既存の列を変える前に、CSV出力やクエリ、外部システムがその値を使っていないか確認してください。クリックさせたいという理由だけで、本番テーブルのデータ型を変更しない方が判断しやすくなります。
できます。固定リンクならラベルの[標題]を分かりやすい文言にして、[ハイパーリンクアドレス]へ実際のURLを設定します。ハイパーリンク型でも、リンクの編集画面で表示文字とアドレスを確認できます。ただし、文字を変えただけで移動先も変わるわけではありません。更新後はフォームビューでクリックし、目的のページが開くか確認しましょう。取引先名を表示する場合は、別の会社のURLが残っていないかも照合すると誤案内を防ぎやすくなります。
リンクを利用する操作と、値を編集する操作を分けて考えます。まず対象を右クリックし、ハイパーリンクの編集メニューなどから表示文字とアドレスを修正してください。フォームの設定によっては編集自体が許可されていない場合もあるため、ロック状態や更新可能なレコードソースかも確認します。利用者が頻繁にURLを直す業務では、URL入力欄と「開く」ボタンを分ける設計も候補です。編集操作で外部ページが開いてしまう混乱を減らせます。
ラベルやボタンに固定のアドレスを設定している可能性があります。レコードごとにURLを変える場合は、URLを保存するフィールドと、そのフィールドに連結したテキストボックスを確認してください。連続フォームに同じ部品が繰り返し表示されても、固定値が行ごとに変わるわけではありません。異なるURLを持つ2レコードを用意し、移動したときの表示値と実際の移動先を照合します。VBAの場合は、現在のレコードのコントロールを参照しているかも調べましょう。
ハイパーリンクは通常、移動先の場所を参照するもので、ファイル本体をAccess内へ保存する機能ではありません。元のPDFやExcelファイルを移動・削除すると、リンクが開かなくなることがあります。共有運用では保存場所、名称変更のルール、閲覧権限を決めてください。ファイル本体をデータベースに格納する添付ファイル型とは目的が異なります。どちらを選ぶかは、容量、バックアップ、共有方法を含めて判断し、リンクを登録しただけで原本が保管されたと思い込まないことが大切です。
まず配布先PCで同じURLやファイルパスを直接開き、Access外でも利用できるか確認します。開けない場合は共有先の権限、ネットワーク接続、ファイルの存在、既定のアプリなどを調べます。直接開けるのにボタンだけ動かない場合は、イベント設定やデータベースの信頼状態を確認してください。個人PCの保存先や独自のドライブ文字を使っていないかも重要です。エラー文、対象レコード、Accessの製品名とビルドを記録すると、設定と環境の問題を分けやすくなります。
HTTPSで始まるだけでは、移動先が正規のサイトかどうかは判断できません。本記事のVBA例は空欄と先頭文字を確認する最小例で、サイトの信頼性やURL全体の妥当性を保証しません。取引先から受け取ったURLなどは、ドメインと業務上の必要性を確認してください。特定サイトだけを許可する場合は、ホスト名を正しく解析して許可先と比較する設計が必要です。文字列に会社名が含まれていることだけを、正規サイトの根拠にしないようにしましょう。
関連記事
- フォームの基礎:フォームの役割と作成の基本を確認します。
- プロパティシートの使い方:選択中の部品と設定項目を確認します。
- フォームのコントロール:ラベル・テキストボックス・ボタンを使い分けます。
- コントロールソースの使い方:保存先との連結を確認します。
フォームのリンク追加・動作不良を相談する
リンク先の管理方法が分からない、配布先だけ開かない、既存フォームへの影響が心配な場合は、対象フォームと発生条件を整理してご相談ください。Accessの教科書では、リンク設定だけでなく、入力・保存・配布の流れを含めた改善の方向を検討します。
参考情報
Microsoft Learn Label.HyperlinkAddress
https://learn.microsoft.com/en-us/office/vba/api/access.label.hyperlinkaddress
Microsoft Learn Application.FollowHyperlink
https://learn.microsoft.com/en-us/office/vba/api/access.application.followhyperlink
Microsoft Learn DataType
https://learn.microsoft.com/en-us/office/vba/access/concepts/miscellaneous/datatype-property
Microsoft Learn Application.HyperlinkPart
https://learn.microsoft.com/en-us/office/vba/api/access.application.hyperlinkpart