パソコンカレッジ スタッフのひとりごと

パソコンスクールのスタッフが、
初心者から上級者まで役立つ情報をお伝えします。

Webの画像をリンクしてフォームに表示する(Access2003以降)

2010-06-29 09:01:02 | Access(アクセス)
今回は、いただいた質問にお答えします。

「アクセスのフォームでWEBの画像をリンクして表示させようと
思うのですが、WEBで調べても分かりません。
どうしたらいいのでしょうか。」

ローカル(自分のパソコン)に保存してある画像を表示するのではなく、
Web上の画像というところが、面白いですね。



サンプルとして、以下のようなフォームを作成しました。

赤枠の中をご覧ください。
画像というラベルの付いたテキストボックスには、画像のパスが表示されています。
自分のパソコンの中に保存されている画像ではありませんよ。
ネット上に存在する画像のURLなのです。

下に表示されている実際の画像は、上記のネット上の画像を参照しています。
したがって、インターネットに接続していないと、画像は表示されませんし、
接続しているパソコンならば、どのパソコンでも、きちんと画像が表示されます。
(もちろん、Accessが必要ですよ)





このフォームのもとになるテーブルは、3つのフィールドで構成されています。
ID(オートナンバー型)
キーワード(テキスト型)
画像(テキスト型)

とすると、あれれ?画像を表示しているコントロールは何でしょうか?


実際に表示されている画像は、もとになるテーブルのフィールドと連結されていません。(非連結コントロールです)

実は、画像というフィールドのデータを使ってネットから画像を読み込んで表示しているのです。

つまり、このコントロールを挿入配置したからといって、すぐに画像が表示されるわけではありません。
VBAによるコードの記述が必要となります。


しかし、真っ黒な背景にぼけたWindowsのロゴマーク・・・このコントロールは何者でしょう?

このコントロールは、ウェブブラウザーといいます。





このコントロールの挿入方法をご紹介します。

■Access2003の場合

「挿入」→「ActiveXコントロール」とクリックします。
(下の画像では、既に謎のコントロールが挿入されていますが、
皆さんが操作する時には、もちろん、まだフォーム上に存在していませんよ)







「ActiveXコントロールの挿入」ダイアログボックスが表示されます。

一覧の中から、「Microsoft WEB Browser」を選択します。
「OK」をクリックしてください。

あとは、フォーム上の任意の位置でドラッグしてください。




■Access2007の場合

フォームをデザインビューで表示すると、デザインタブが出現します。
そのリボンの中から、「ActiveXコントロールの挿入」をクリックします。
(下の図の赤枠の中)




一応、拡大しておきます。





「ActiveXコントロールの挿入」ダイアログボックスが表示されます。

一覧の中から、「Microsoft WEB Browser」を選択します。
「OK」をクリックしてください。

自動的に左上に配置されます。任意の位置に移動して、サイズ変更してください。





挿入したActiveXコントロールの名前を確認しておきます。
コントロールを選択したら、プロパティシートを表示します。(F4キーを押してください)
その他タブの「名前」プロパティをご覧ください。

今回は、WebBrowser0 という名前です。
名前は、自由に変更できますので、好きな名前で構いませんが、
その名前を、このあと、VBAのコーディングの際に使用しますので、
よく覚えておいてください。





それでは、いよいよVBAでコードを記述します。

フォームセレクタを選択してから(①を参照)、
プロパティシートの「データ」タブの「レコード移動時」の右端をクリックします。






すると、Visual Basic Editorが起動します。
カーソルの位置に以下を参考にコードを記述してください。


Private Sub Form_Current()
    DisplayWeb
End Sub



DisplayWeb というのは、実は、サブルーチンです。
このプロシージャを以下の通り、追加してください。


Private Sub DisplayWeb()
If Not IsNull([画像]) Then
WebBrowser0.Visible = True
WebBrowser0.Navigate [画像]
Else
WebBrowser0.Visible = False
End If
End Sub



[画像] というのは、画像フィールドの値という意味です。

表示するには、WebBrowserオブジェクトのNavigate メソッドを使います。
引数に、URL(ネット上のアドレス)を指定します。
つまり、画像のパスを使って、ネット上の画像を読み込みなさいという内容になります。

なお、画像フィールドのデータが存在しないと、以前読み込んだ画像がそのまま残ってしまうので、
その対策として、WebBrowserコントロールの表示・非表示を切り替えています。

なお、画像フィールドにURLが入力されたら、直ちに、画像を表示したいので、
以下のコードも記述しておきます。
(画像テキストボックスのプロパティシートのイベントの「更新後処理」の右端をクリックします)



Private Sub 画像_AfterUpdate()
DisplayWeb
End Sub


サブルーチンというのは、このように複数のイベントで呼び出される場合に有効ですね。

一応、画像も載せておきます。





以上で、完成です。

WebBrowserの面白いのは、ローカルに保存された画像も、ちゃんと読み込むところです。

また、画像パスにWebページのURLを入力すると、もちろん、Webページが表示されますよ。
(画像に限らないということです)



おまけ:
Web上の任意の画像のURL(アドレス)を調べる方法について

画像の真ん中で右クリックしてください。
表示されたメニューの中のプロパティをクリックしてください。

プロパティ画面の中にアドレスがありますので、
選択して、コピーしてご使用ください。







だい

コメント (6)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 過去のお勧め記事 | トップ | USBメモリをアイコン表示させ... »
最新の画像もっと見る

6 コメント

コメント日が  古い順  |   新しい順
お礼。 (まいすたー)
2010-06-29 12:29:07
WEB上の画像のURLの見方が分かりました。
ありがとうございます。
返信する
できました! (こまとし)
2010-06-30 02:30:12
どうも有難うございます。
Access2002ですが、2003と同じようにして出来ました。
画像のアドレスを調べる方法まで書いていただき感謝します。
以前、画像をアクセスに取り込みデータがパンクしてしまった経験があり、これからは画像をリンクとして使用しようとしています。
狛犬のデータベース作成に利用させていただきます。
返信する
まいすたーさんへ (だい)
2010-06-30 12:51:29
役に立ててよかったです。

これからも、いらしてくださいね。
返信する
こまとしさんへ (だい)
2010-06-30 12:52:47
こちらこそ、ありがとうございます。

うまくいって、よかったですね。

今後もよろしくお付き合いくださいね。
返信する
関係無くて御免 (モコ)
2010-07-01 00:48:46
記事に関係なくてごめんなさい
先生!実は分からない事がありまして
私のブログに画像をアップしました
分かったら教えて下さい
お願いします
待っております
返信する
素晴らしいです (カメ)
2018-07-22 08:08:37
使わさせていただきます。
ありがとうございました。
返信する

コメントを投稿

Access(アクセス)」カテゴリの最新記事