元システムエンジニア主婦のおうちでスキルアップ教室

ExcelやPowerPointの使い方・最近のITスキルこと・子供のプログラミング教育について

【初めてのVBA】03. はじめてのネットサーフィン

挑戦するお題

今回挑戦するのは、Excel VBAを使ったネットサーフィンです。

エクセルで管理しているURLをWebブラウザで開くという

簡単なVBAプログラミングです。

 

f:id:pon-san-blog:20200801185719p:plain

はじめてのVBAプログラミング

ブログの構成

まずは余計なこと(?)をしない最低限のプログラムを解説した後に、

プログラミングらしく改良を加えたプログラムの説明をします。

  1. シンプルなプログラムの解説
  2. 改良版プログラムの解説

 

【目次】

 

シンプルなネットサーフィンプログラムの作成

まずは余計なこと(?)をしない最低限のプログラムです。


プログラムの処理の流れはこのようになってます。

1. エクセルからURLを取得

2. インターネットブラウザ(IE)でURLを表示


STEP1 エクセルファイルの準備

URLはエクセルで管理します。

f:id:pon-san-blog:20200802221328p:plain

URL一覧

今回はサンプルとして下記のようなURLを用意しました。

  1. ブログのURL
  2. YouTubeのURL
  3. YahooのURL
  4. GoogleのURL

A列の1行目から4行目に記載しています。

 

STEP2 VBAでエクセルファイルの情報を取得する

STEP1で準備した情報をVBAで取得します。

まずはVBAプログラムを記載できるファイルを用意します。

 

(前回のブログを参照) 

yuki-tube.hatenadiary.com

 

ファイルの準備がきたら

各セルの情報を取得するプログラムを記述します。

 

Rangeオブジェクトの参照

セルの情報は

Rangeオブジェクトから取得することができます。

 

たとえば、

A列、1行目のセルの値を取得したい場合、

Range("A1").valueと記載することでA1セルの情報を取得することができます。

 

正しく情報が取得できているかどうかは、

MsgBox関数を使って確認することができます。

 

例えば、このように記載するとA1の情報を取得できます。

Sub test()
  MsgBox Range("A1").Value
End Sub

 

f:id:pon-san-blog:20200802221332p:plain

サンプルMsgBox

暫定的ですが、

このようにすればセルA1~セルA4までの情報を確認できます。

Sub ネットサーフィンプログラム()
  MsgBox Range("A1").Value
  MsgBox Range("A2").Value
  MsgBox Range("A3").Value
  MsgBox Range("A4").Value
End Sub

 

STEP3 エクセルから取得したURLをブラウザで表示する

STEP2で取得したURLをブラウザで表示させます。

A1セルのURLを表示させる場合、

このようになります。

Sub ネットサーフィンプログラム()

  '--- 宣言 ---
  Dim objIE As InternetExplorer
  Dim myURL As String

  '--- 設定 ---
  Set objIE = New InternetExplorer
  objIE.Visible = True

  '--- A1のURLをブラウザで表示 ---
  myURL = Range("A1").Value
  Call objIE.Navigate2(myURL)

End Sub

 

プログラムを実行すると、

Internet Explolerが起動し、A1に記載していたURLが表示されるのが

確認できると思います。

f:id:pon-san-blog:20200802221952p:plain

セルA1 URLの表示

 

なお、プログラムコード中の

シングルクオーテーションはコメントを示しており、

プログラムを読みやすくするためのメモ書きです。

プログラムを実行する際には読み飛ばされる行になります。

 

プログラムコードの解説

InternetExplorer型の宣言

objIEという名前でInternetExplorerタイプのデータを扱うことを宣言しています。

Dim objIE As InternetExplorer

 

InternetExplorerの設定

先ほど宣言したobjIEという箱に

InternetExplorerタイプのデータを設定しています。

(本当はデータというよりオブジェクトですが、気にしないでください。)

Set objIE = New InternetExplorer

 

InternetExplorerのVisible設定

先ほど用意したobjIE (= Internet Explorer)を表示させるかどうか設定します。

True(表示あり)に設定します。

objIE.Visible = True

Falseにした場合、

バックグラウンドでプログラムが起動します。

ただ、スクリーンに表示されないため少し厄介です。

 

詳しい説明は省きますが、

これまで用意してきたobjIEを用いて

objIE.NAvigate2と記載すると

Internet Exploler上でURLを表示する機能を使用できるようになります。

下記のように記述してみてください。

Call objIE.Navigate2(myURL, &H800)

 

サンプルプログラム

サンプルプログラムを掲載します。

 

Sub ネットサーフィンプログラム()

  '--- 宣言 ---
  Dim objIE As InternetExplorer
  Dim myURL As String

  '--- 設定 ---
  Set objIE = New InternetExplorer
  objIE.Visible = True

  '--- A1のURLをブラウザで表示 ---
  myURL = Range("A1").Value
  Call objIE.Navigate2(myURL, &H800)

 

  '--- A2のURLをブラウザで表示 ---
  myURL = Range("A2").Value
  Call objIE.Navigate2(myURL, &H800)

 

  '--- A3のURLをブラウザで表示 ---
  myURL = Range("A3").Value
  Call objIE.Navigate2(myURL, &H800)

 

  '--- A4のURLをブラウザで表示 ---
  myURL = Range("A4").Value
  Call objIE.Navigate2(myURL, &H800)


End Sub

上記プログラムで、

エクセルで管理しているURLを

Webブラウザで開くというプログラムが動作していることを

確認できると思います。

f:id:pon-san-blog:20200802221750p:plain

ネットサーフィンプログラム

 

改良版プログラム

すこし疲れたので、

次回のブログに掲載することにします。

 

 


お題「気分転換」