パソコンスキルの教科書

コード2|インターネットの特定のページ(URL)を開く|navigate [url]で記述

1行目:objIEをNavigate以下のURLへ誘導。なお、navigate に続くのは、文字列型なので、””で記載
2行目:IEWait(objIE)関数へ|コード2-1で解説
3行目:WaitFor(3)関数へ 3秒停止する|コード2-2で解説

ヒント:
1行目:”https://auctions.yahoo.co.jp/“を他のURLに変えることで、アクセスするウェブサイトを変更できます。

コード2-1|IEを待機する関数|readystate

1行目:funcntionプロシージャの名称|()は引数を表す
2行目:busyプロパティがtrue もしくは readystateが4ではないなら、ループを繰り返す。目的はページの移動完了まで待つため。これをしておかないと、この次でエラーが発生する場合あり
3行目:ループ繰り返し
4行目:ループ繰り返し
5行目:funcntionプロシージャの終わり

コード2-2|指定した秒だけ停止する関数

ちなみに、このコードでは、secondを3で受けているため、second = 3
1行目:funcntionプロシージャの名称|()は引数を表す
2行目:futuretimeをDate型で宣言
3行目:futuretimeを 今の時刻+3秒 に設定
4行目~6行目:今の時刻>futuretime(3行目を通過した時刻+3秒)となるまでループ繰り返し
7行目:funcntionプロシージャの終わり

コード3|テキストボックスに文字を入力して検索

1行目:sをString型で宣言
2行目:sに”aiko”を設定
3行目:objtag, objsubmitをObject型で宣言
4行目:”input”と指定されているタグを全て洗いだす
5行目:もし”input”と指定されているタグのouterHTMLに、”yschsp”が含まれているなら
6行目:objtagにs(ここでは”aiko”)を入力|このobjtagは検索ボックスをしている
7行目:Exit Forで、fornext構文から抜ける
8行目:if文の終わり
9行目:for next構文の終わり
10行目:記載なし
11行目:”input”と指定されているタグを全て洗いだす
12行目:もし”input”と指定されているタグのouterHTMLに、”検索”が含まれているなら
13行目:objsubmitをクリック|このobjsubmitは検索ボタンを指定している
14行目:WaitFor(3)関数へ 3秒停止する|コード2-2で解説
15行目:Exit Forで、fornext構文から抜ける
16行目:if文の終わり
17行目:for next構文の終わり

ヒント:
2行目:”aiko”を他の単語に変えることで、検索キーワードを変更できます。

コード4|ボタンや「次へページへ」リンクをクリック

1行目:objtsugiをObject型で宣言
2行目:”a”と指定されているタグを全て洗いだす
3行目:もし”a”と指定されているタグのouterHTMLに、”次のページ”が含まれているなら
4行目:objtsugiをクリック|このobjtsugiは次のページのURLリンク指定している
5行目:WaitFor(3)関数へ 3秒停止する|コード2-2で解説
6行目:Exit Forで、fornext構文から抜ける
7行目:if文の終わり
8行目:for next構文の終わり

コード5|IEを閉じる

1行目:IEのウィンドウを閉じる
2行目:生成したIEオブジェクトを破棄

ここでは、ヤフオクを事例に、

コード1|インターネットに接続してブラウザを開く
コード2|インターネットの特定のページ(URL)を開く|navigate [url]で記述
コード2-1|IEを待機する関数|readystate
コード2-2|指定した秒だけ停止する関数
コード3|テキストボックスに文字を入力して検索
コード4|コード4|ボタンや「次へページへ」リンクをクリック
コード5|IEを閉じる

詳しく説明しました。ぜひコピペしてぜひ活用してみてください。

VBAでIEからデータ取得するときに知っておきたいこと

VBAを使ってIEからデータ取得するときに知っておきたいこと、覚えておきたいことを紹介します。

ページに自動でログインする

ページへのログインですが、あまり使う機会はありません。

最近は、自動ログインされることが多く、ログイン画面への遷移されることを想定して、VBAを作っておくと、エラーのもとになります。

覚えても使わないですので、ここではあえて紹介はしません。

タブにページを追加

開いているタブにページを追加する方法を紹介します。必要であれば、コードをコピペして使ってください。

ウェブクエリの取得を使えば、マクロの自動記録も可能

ウェブクエリとはエクセルの機能の一つです。

f:id:gene320:20170613221616p:plain

これを利用することで、ウェブの情報を収集できます。

以下のコードはマクロの自動記録を利用して、作成したものです。
ヤフオクで「aiko」と検索したときの最初の情報をエクセルに出力します。ただし、表とうまくリンクしていないので、空白セルが出てきます。

2行目:https://auctions.yahoo.co.jp/search/search?auccat=&tab_ex=commerce&ei=utf-8&aq=-1&oq=&sc_i=&fr=auc_top&p=aiko&x=0&y=0&fixed=0
を他のURLに変えると、ウェブ情報を取得するサイトを変更できます。

なお、ウェブクエリなら、マクロの自動記録も反映されるので、必要なら試してみましょう。

しかし、指定したページにしか適応されないため、自動でウェブページを切り替えることはできません。もし自動で複数ページの情報を取得したいなら、他の方法を試す必要があります。

ですので、ウェブ情報を自動で取得したい場合は、あまりオススメしません。

ツールバーの表示/非表示の設定方法

ツールバーの表示/非表示の設定方法を紹介します。必要であれば、コードをコピペして使ってください。

オートメーションエラーが発生したら

「オートメーションエラー 例外が発生しました」というエラーが発生した場合、対策は以下の2つを試してみましょう。

1.アドインの「分析ツール」を無効化
2.処理回数を減らす

1.アドインの「分析ツール」を無効化
[ファイル] → [オプション] → [アドイン]と進み、分析ツールのチェックを外します。

2.処理回数を減らす
「処理が重い」、「処理回数が多い」場合、うまく読み込まれない場合があります。処理回数を減らしましょう。私の経験したことがあるので、サイト5ページ分を処理しようとすると、このエラーが出てしまいました。そこで、処理を1ページずつに変更して、問題を回避しました。

VBAを使いこなすには、DOM操作(getelementsbytagname/getelementsbytagidなど)を理解する

この記事では、VBAでヤフオクにアクセスして、”aiko”とつく商品を検索するという事例を紹介しました。

しかし、実際の解析は、インターネット上の情報を取得して、情報をエクセルに出力して

・日付で並び替えたり
・価格順で並べたり
・グラフにしたり

情報を分析するところまでやりたいですよね。

ですので、ここで紹介したコードでは、まだまだ不十分です。ウェブ情報をスクレイピングして、情報をエクセルに書きだすところまで自力で書けるようになりたいなら、DOM操作を学ぶ必要があります。

DOMとは、(Document Object Model)のことで、html・head・body・p・aなどのHTMLドキュメント要素にアクセスして操作するための仕組みのことです。

カンタンに言えば、VBAを使って、ウェブ情報を取得するための目印です。

もしあなたが、VBAを使ってウェブの情報をエクセルに出力したい、解析したいなら、DOM操作を利用して、コーディングする必要があります。

このDOM操作ですが、本記事の事例で言えば、

この部分で利用しています。

このコードは、「ウェブページ”input”タグに関連するhtmlテキストを全て洗い出す」操作を行っています。

このように、DOMについて理解し、DOMを活用する方法を学ぶことで、HTMLコンテンツ内の必要な箇所に簡単なコードでアクセスし、すぐにデータを取得することが可能です。

テンプレートファイルをダウンロードしたい方はコチラから

紹介したIEを操作するコードを一から作るのは大変なので、記事の中で紹介したマクロのコードが入ったファイルは無料でダウンロードできるようにします。以下のフォームにメールアドレスを入力いただくと、返信メールからエクセルファイルをダウンロードできます。

ぜひご活用ください。

IE操作をもっと知りたい!高度なレベルにチャレンジしてみたいなら

もし、もっと具体的にIE操作について知りたいなら、こちらの記事を読んでみてください。VBAでヤフオクのデータを取得し、Excelへ出力するマクロを紹介しています。ダウンロードしてすぐに使えるテンプレート付ですので、きっとお役に立てるはずです。

VBAでヤフオクのデータを取得しExcelへ出力!IE操作マクロのテンプレート付
・インターネット上にデータを自動取得したい ・マクロを使ってwebのデータを取得したいが、やりかたが分からない… ・「VBAでIE操作」と聞いたことはあるが、いまいちピンとこない 私がエクセルマクロを勉強したころ、「VB […]

また、ウェブページのリンクを自動クリックするプログラムについて、詳しく解説した記事はこちらです。ぜひ、参考にしてください。

VBAでie操作!リンクやボタンを自動クリックしてウェブ情報を取得
VBAでインターネットから情報を取得するとき、リンクやボタンを自動クリックするプログラムを作る必要があります。 このプログラムを入れておくことで、自動で次のページへ移動させることができます。そうすれば、ウェブの2ページ以 […]

以下の記事も参考になるはずです。

英語翻訳を自動化!エクセルの文章をまとめてGoogle翻訳するVBAツールを紹介
エクセル上の英語の文章を翻訳したいときはありませんか。 このとき、Google翻訳を使うとラクなのですが、複数の文章をまとめて翻訳するのが難しいというデメリットがあります。 具体的には、Google翻訳を使うとすれば、以 […]

競合サイトの目次取得ツール|記事タイトル,H2,H3を取得してエクセルへ一覧(無料ダウンロード可能)
競合サイトの目次取得ツール|記事タイトル,H2,H3を取得してエクセルへ一覧(無料ダウンロード可能)
ブログの記事を書いている人の中には、競合サイトのブログ記事を調査(リサーチ)する人は多いです。 このリサーチ作業の目的は、競合ブログがどのようなキーワードを目次に入れているかを確認することにあります。 しかし重要なのは理 […]

IE操作のコードを自力で書きたい!オススメの本や無料動画

いかがでしたか?初心者必見のVBAを使ったIE操作について、事例をあわせて紹介しました。

今回の内容をぜひVBAの勉強に活かしてみてください。

と、同時に「なんだか難しそう、、IE操作は自分にはできないだろう、、、」と感じている方も多いのではないでしょうか。

たしかに、一人で学ぶとVBAでのIE操作を習得するのは、ムズカシイでしょう。

しかし、良い教材で学べば、1~2ヵ月で、ここで紹介したコードはもちろん、さらにレベルの高いコードを書けるようになります。

VBAのIE操作に関しては、なかなかいい教材はありませんが、こちらがオススメです。

1.オススメ本

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

しかし、本だと「分からない部分を質問できない」、「情報がアップデートされていない」ことがあります。この本も少し不十分なところがあります。ですので、がっつり学びたい方には、物足りないかもしれません。

2.ウェブ連携をマスターしたいなら

もし、IE操作のコードやITの背景の部分の知識から、完全にマスターしたいなら、こちらのオンライン動画教材がオススメです。講師に質問できますので、分からないところがあっても安心ですし、今すぐ始めることができます。

3.IE操作(ウェブ連携)より、エクセルマクロの基礎から詳しく学ぶなら

この記事を読んだけど、「私にはまだチンプンカンプン…」、「自分で編集できそうにもない…」、「マクロの基礎も理解していない…」という場合なら、IE操作を学ぶ前に、エクセルマクロの基礎から学ぶことをオススメします。エクセルからインターネットを操作するマクロは、かなりハイレベルの内容です。土台ができていない内に学ぶと、挫折の原因になってしまいます。ですので、まずは基本を学びましょう。

もしきちんと学ぶなら、こちらの無料動画がオススメです。講師に質問できますので、分からないところがあっても安心ですし、今すぐ始めることができます。

この記事がVBAでIE操作したいあなたのお役に立てれば幸いです。