Webクエリまとめ
今までの記事の中のWebクエリは
マクロ自動記録で記録したものを使っていました。
必須の引数などがいまいちわからなかったので
そのまま放置していたのですが、
整理します。
VBAヘルプのWebクエリ関連のページはわかりにくいので
まず始めにこのWebページをどうぞ、
Webクエリを作成する方法です。
『
Add メソッド
』
「QueryTables オブジェクトの Add メソッド」の箇所です。
さてここを読んでやっと、
Webクエリ作成に最小限な引数とメソッドがわかりました。
Webクエリを作成する最小限のコードはこちら
Sub macro110604a() With
ActiveSheet.QueryTables.Add( _ End Sub |
ポイントはRefreshメソッドです。
これをしないと何も表示されません。
上のコードを実行してみると
指定したページのTableだけがとりだされます。
これは、WebSelectionType プロパティが
デフォルトでxlAllTablesになっているためです。
次のリンクのページはWebSelectionType プロパティについてです。
『
WebSelectionType プロパティ
』
xlEntirePage (すべて)
xlAllTables (既定値/すべてのテーブル)
xlSpecifiedTables (特定のテーブル)
この3つの値をWebSelectionType プロパティに指定できます。
カッコ内は説明です。
3番目の値をWebSelectionTypeに指定したときは、
テーブルの番号を指定するWebTables プロパティを併せて使用します。
1番目のテーブルを指定するときはこうです。
WebTables = "1"
1番目と3番目のテーブルを指定するときは
WebTables = "1, 3"
このように複数のテーブルを指定するときはコンマで続けます。
指定したページのテーブルの数や
どのテーブルが何番目のテーブルか?
などはいろいろ試行してください。
WebSelectionType プロパティを使用したWebクエリ作成コードはこちら
xlEntirePage、xlAllTables、xlSpecifiedTables について
それぞれ1つずつあります。
Sub macro110604b1() With ActiveSheet.QueryTables.Add( _ End Sub Sub macro110604b2() With
ActiveSheet.QueryTables.Add( _ End Sub Sub macro110604b3() With
ActiveSheet.QueryTables.Add( _
.Refresh End Sub |
ほとんどの場合はデータのみ欲しいと思いますので、
次はHTML形式を取り込まないようにしたいです。
これを指定するのはWebFormatting プロパティで、
書式をどの程度適用するかを指定します 。
次のリンクのページはWebFormatting プロパティについてです。
『
WebFormatting プロパティ
』
さてxlWebFormattingAllとxlWebFormattingNoneはよいとして
xlWebFormattingRTFとは何ぞや?ということで検索、
リッチ テキスト形式と互換性のある書式をインポートします。
と このページにあります。
とりあえず書式は一切要らない方針なので追求しません。
ここからはバイキング方式でいきます。
以下のコードのどれかをmacro110604b系のRefreshの前の
Withステートメントの中、空白の行に足していってください。
.WebFormatting = xlWebFormattingNone '書式なし
.WebFormatting = xlWebFormattingAll 'すべての書式
.WebFormatting = xlWebFormattingRTF '何らかの書式
次は、最初に名前がありきのはずがここでName登場です。
作成してからWebクエリのプロパティを変えたり、
Refreshメソッドを使うときに
どのWebクエリかを指定するときに使います。
.Name = "クエリの名前"
名前でクエリを指定するには次のようにします。
このコードは指定したクエリを更新します。
ActiveSheet.QueryTables("クエリの名前").Refresh
ここからはさらっと流します。
クエリの自動更新のプロパティ、分単位です。
0は更新なし、
使用できる範囲は、0 ~ 32767 の整数です。
.RefreshPeriod = 0 '既定値=0
更新をバックグラウンド (非同期) で実行するには
BackgroundQuery プロパティをTrueにします。
.BackgroundQuery = True
ブックを開いたときにクエリを更新するかを設定するには、
RefreshOnFileOpen プロパティを使います。
Falseが更新しないです。
.RefreshOnFileOpen = False '既定値
ブックを保存するときに
クエリのデータを保存しないで
クエリがあるということだけ保存する場合は
.SaveData = False
よく使いそうなプロパティは
こんなところでしょうか。
その他のプロパティはこちらのページを参照してください。
『
_QueryTable メンバ
』
あとRefreshメソッドを実行する際に、
バックグラウンドで更新したいとき
.Refresh BackgroundQuery:=True
.Refresh True
などと引数を指定してください。
| 固定リンク
この記事へのコメントは終了しました。

コメント