連載
» 2015年02月06日 18時00分 UPDATE

VBA/マクロ便利Tips:「その他のコントロール」の追加&Excelフォーム上でWebブラウザーを開く方法

業務効率化に役立つVBA/マクロのさまざまなTipsをコード例を交えて紹介していきます。今回は、「その他のコントロール」を追加する方法に加えて、WebBrowserコントロールの追加の仕方と、URLを開くNavigateメソッドの使い方を解説します。

[薬師寺国安,PROJECT KySS]
「VBA/マクロ便利Tips」のインデックス

連載目次

※本Tipsの環境:Windows 8.1 Enterprise(64ビット)+Excel 2013


「その他のコントロール」を追加する方法

 今回は「リストビュー」や「ツリービュー」のコントロールについて解説する予定だったのだが、残念ながら64ビット版のExcelでは、これらのコントロールは使用できないようである。

 筆者のExcelのバージョンを調べてみると、図1のように「64ビット」と表示されている。

ExcelVBA9TipsForm_01.png 図1 筆者のExcelのバージョン

 Excel VBAで「リストビュー」「ツリービュー」を使用可能にするには、[開発]タブからVBE(Visual Basic Editor)を起動させ、[挿入]→[ユーザーフォーム]を選択して「フォーム」を追加する。そして、同時に表示される「ツールボックス」上にマウスカーソルを持っていき、マウスの右クリックで表示される、「その他のコントロール」を選択する。

 通常なら、この画面に「リストビュー」なら「Microsoft ListView Control 6.0」が表示され、また「ツリービュー」なら「Microsoft TreeView Control 6.0」が表示されるはずであるが、筆者のExcel 2013 64ビット版では何も表示されていない(図2)。

ExcelVBA9TipsForm_02.png 図2 「ツールボックス」の「その他のコントロール」内に、「リストビュー」や「ツリービュー」に関するコントロールは何も表示されていない

 いろいろWebで調べると、「リストビュー」は64ビット版のExcelでは使用できない旨の情報を発見したが、「ツリービュー」に関しては、はっきりとした情報を見つけることができなかった。しかし、図2の「コントロールの追加」に、該当するコントロールが表示されない以上、使用できないと判断する以外にないだろう。

 このことは、今後、VBAでの開発を行う上で知っておくとよいと思う。読者の皆さんのExcelが32ビット版か64ビット版かをぜひ確認していただきたい。

 ここからは、追加できる「その他のコントロール」のうち、WebBrowserコントロールの使い方を解説する。

WebBrowserコントロールを使う準備

 WebBorowserコントロールを使用可能にするためには、図2の「コントロールの追加」の中に「Microsoft Web Browser」コントロールがあるので、これにチェックを付ける。すると「ツールボックス」にWebBrowserコントロールのアイコンが追加される(図3)

ExcelVBA9TipsForm_06.png 図3 「コントロールの追加」から「Microsoft Web Browser」を追加し、「ツールボックス」にアイコンが追加された

 新しい、「WebBorwser」という名前のシートを追加し、その中に「タイトル」と「URL」を記述したデータと、「ブラウザ起動」ボタンを配置する(図4)。

ExcelVBA9TipsForm_07.png 図4 「タイトル」と「URL」を記述したデータと、「ブラウザ起動」ボタンを配置

 次に、ユーザーフォームを作成し、UserForm1のCaptionプロパティに、「ブラウザフォーム」と指定しておく。

 ユーザーフォーム上には「リストボックス」を1個と、「WebBrowser」コントロールを1個配置しておく。

 「リストボックス」の「オブジェクト名」には「タイトルリストボックス」としておく。「WebBrowser」コントロールはデフォルトの「WebBrowser1」のままにしている。

 今回は、UserForm1を画面一杯に広げ、コントロールを図5のように配置している。

ExcelVBA9TipsForm_08.png 図5 画面一杯にフォームを広げ、各コントロールを配置した

WebBrowserコントロールでURLを開くNavigateメソッド

 WebBrowserコントロールでURLを開くNavigateメソッドの書式は下記の通りだ。

WebBrowserコントロールでURLを開くNavigateメソッドの書式

{オブジェクト}.Navigate {URL}


 {オブジェクト}には、WebBrowserオブジェクトを指定する。{URL}には、表示したいサイトのアドレスを指定する。

ユーザーフォームがアクティブになったときの処理

 まず、ユーザーフォームがアクティブになったときに、「タイトルリストボックス」に、図4の「タイトル」を表示させるコードはリスト1だ。UserForm_Activateイベント内に記述する。

Option Explicit
Private Sub UserForm_Activate()
  Dim i As Integer
  For i = 3 To 12
    タイトルリストボックス.AddItem Cells(i, 2)
  Next
End Sub
リスト1 「タイトルリストボックス」内に「タイトル」を表示するコード

 まず3行目でInteger型の変数「i」を宣言し、4〜6行目で変数「i」を「3」から「12」まで繰り返す。この値は「行番号」に該当する。

 5行目で「タイトルリストボックス」に、AddItemメソッドで、「i」行目の「2列目(B列)」のデータを追加する。これで、「タイトルリストボックス」にタイトルが表示される。

「タイトルリストボックス」から、「タイトル」が選択されたときの処理

 次に「タイトルリストボックス」から、「タイトル」が選択されたときのコードはリスト2になる。タイトルリストボックス_Changeイベント内に記述する。

Private Sub タイトルリストボックス_Change()
  Dim URL As String
  URL = Cells(タイトルリストボックス.ListIndex + 3, 3)
  UserForm1.WebBrowser1.Navigate URL
End Sub
リスト2 「タイトルリストボックス」から「タイトル」が選択されたときのコード

 まず2行目で文字列型の変数「URL」を宣言する。3行目では、変数「URL」には、図4の「URL」のアドレスを格納しておく。

 4行目でUserForm1のWebBrowser1コントロールのNavigateメソッドで、変数「URL」が格納されているサイトに遷移する。

「ブラウザ起動フォーム」を表示する処理

 次に、Module1内にリスト3のコードを追加する。

Sub ブラウザ起動フォーム()
  UserForm1.Show vbModeless
End Sub
リスト3 「ブラウザ起動フォーム」を表示するコード

 ShowメソッドでUserForm1をモードレスで表示する。

実行結果

 リスト3のコードを図4の「ブラウザ起動」ボタンに関連付け、実行した結果が図6だ。

ExcelVBA9TipsForm_09.png 図6 「タイトルリストボックス」から任意の「タイトル」を選択して、該当するURLに遷移した

次回からは、Excelの関数に関するTips

 今回のサンプルは、実際の日常業務に必要なTipsかを問われれば、直接は関係のないTipsの紹介だったかもしれない。しかし「ExcelのVBAを使用すると、こういった処理も実現できるのだ」という学びになったと思う。

 今回のTipsをカスタマイズすることで、読者の皆さんの今後の業務に役に立つことがきっとあると思う。

 次回からは、Excelの関数に関するTipsを紹介していくので、お楽しみに。

「VBA/マクロ便利Tips」のインデックス

連載目次

※本Tipsの環境:Windows 8.1 Enterprise(64ビット)+Excel 2013


著者プロフィール

kuniyasu.jpg

薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所

薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。

1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。

1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。

2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。

Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。

Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。

Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。

Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。

Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。