エクセルVBAのIE(InternetExplorer)制御に利用したPublicステートメント
こちらでは、VBAのIE(InternetExplorer)操作に利用されたPublicステートメントの解説になります。
ステートメントとは、「命令文」と訳されるように、コンピュータに具体的な動作を指定する最小単位のプログラムです。主にマクロの挙動を制御する構文や文法を指します。通常は1行で完結する部分を指しますが、If~Thenなど複数行にまたがる部分を意味することもあります。
Publicステートメントは、パブリック変数のデータ型を宣言しメモリ領域を割り当てます。変数は、数値または文字列を格納するための箱のようなもので、一時的にメモリ上に格納します。モジュール レベルで使用します。
Public 変数名 As データ型
構文 | Public [WithEvents] varname[([subscripts])] [As [New] type] [,[WithEvents] varname[([subscripts])] [As [New] type]] . . . | |
---|---|---|
キーワード | 省略 | 説明 |
WithEvents | ● | 引数varnameがActiveXオブジェクトによって起動されるイベントへの対応に使われるオブジェクト変数であることをしめします。こちらはクラスモジュール内でのみ有効です。また、WithEventsを使用して任意の数の変数を個別に宣言できますが、配列は作成できません。 |
varname | × | 定義する変数の名前を指定します。変数の標準的な命名規則に従って指定します。 |
subscripts | ● | 配列変数の次元を指定します。指定できる次元数の最大値は 60となります。subscriptsの構文は次のとおりです。 [lower To] upper [, [lower To] upper] . . . 引数lowerを省略した場合、配列のインデックス番号の最小値はOption Baseステートメントによって決まります。Option Baseステートメントが記述されていない場合、インデックス番号の最小値は0になります。 |
New | ● | オブジェクト変数を宣言する際にNewを指定すると、Setステートメントを利用してオブジェクトへの参照を代入する必要がありません。ただし、Newを利用して、固有のデータ型の変数の宣言、または従属オブジェクトのインスタンスの宣言はできません。 |
type | ● | 変数のデータ型を指定します。As type節は宣言する各変数に対して個別に指定します。 |
指定方法 | データ型 | バイト数 | 値の範囲 |
---|---|---|---|
Byte | バイト型 | 1 | 0~255 |
Boolean | ブーリアン型 | 2 | 真(True)又は偽(False) |
Integer | 整数型 | 2 | -32,768~32,767 |
Long | 長整数型 | 4 | -2,147,483,648~2,147,483,647 |
Currency | 通貨型 | 8 | -922,337,203,685,477.5808~922,337,203,685,477.5807 |
Single | 単精度浮動小数点数型 | 4 | -3.402823E38~-1.401298E-45(負の数) 1.401298E-45~3.402823E38(正の数) |
Double | 倍精度浮動小数点数型 | 8 | -1.7976931348623E308~-4.94065645841247E-324(負の数) 4.94065645841247E-324~1.79769313486232E308(正の数) |
Date | 日付型 | 8 | 西暦100年1月1日~西暦9999年12月31日 |
Object | オブジェクト型 | 4 | オブジェクトを参照するためのアドレス |
String | 文字列型 | 10+文字列の長さ | 0~2GB |
Variant | バリアント型 | 16 | 倍精度浮動小数点数型の範囲と同じ |
Variant | バリアント型 | 22バイト+文字列の長さ | 可変長の文字列型の範囲と同じ。 |
Publicステートメントを使ってモジュールレベルで宣言された変数は、宣言したモジュール内のすべてのプロシージャから参照できます。
Module1
Public a As Integer
Sub sampleA()
a = 5
MsgBox "sampleAプロシージャの変数a:" & a
Call sampleB
MsgBox "sampleAプロシージャの変数a:" & a
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
Module2
Sub sampleB()
a = 10
MsgBox "sampleBプロシージャの変数a:" & a
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
こちらは、sampleAプロシージャを実行した結果です。
sampleのSubステートメントは引数の設定なしです。こちらは、Publicステートメントを利用して宣言セクション内で変数aを宣言しています。sampleAプロシージャの実行結果を見ると変数aの値は「5」→「10」→「10」になっています。
最初の「5」は、sampleAプロシージャ内で設定した変数a=5が適用されています。次の「10」は、sampleBプロシージャ内で設定した変数a=10が適用されています。Publicステートメントで宣言した変数はすべてのモジュールで有効ですので、この時点のsampleAプロシージャの変数aは「10」が代入されています。
よって、最後に実行したMsgBox関数では、「10」で表示されたということです。
最後はEndステートメントを利用してsampleプロシージャを終了させます。
続いてPublicステートメントを利用してモジュール間でも値が保持されるのかも確認してみます。以下の処理をご確認ください。
Module1
Public a As Integer
Sub sampleA()
a = a + 1
MsgBox a & "回目に処理です。(sampleA)"
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
Module2
Sub sampleB()
a = a + 1
MsgBox a & "回目に処理です。(sampleB)"
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
以下はsampleA→sampleA→sampleBの順に実行した結果です。モジュール間でも値が保持されているのが分かるかと思います。
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
ExcelのVBAについてのQ&A掲示板↑ExcelのVBA全般について分からない事があればこちらの掲示板よりご質問ください。
VBAのIE操作入門↑ExcelのVBAをマスターできたら、エクセルVBAのIE操作にも挑戦してみてください。
こちらでは、エクセルVBAの事例で利用したステートメントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのプロパティをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのメソッドをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。
こちらでは、エクセルVBAの事例で利用したオブジェクトのイベントをまとめたものです。ExcelのVBAには様々な機能が用意されていますので一度ご確認ください。