GoGoマクロのブログ

初心者向けマクロ講座「Go!Go!マクロ」の筆者三太郎の公式ブログです。

GoGoマクロ

エクセル仕事の自動化が誰でもできる本

Lesson 180 「IE連携」の補足

2013-03-20 00:03:45 | マクロ作成のコツ

■Google検索時のサンプルコード

Sub Macro2()

  n = Cells(Rows.Count, "A").End(xlUp).Row
  For i = 2 To n
    Range("A" & i).Select
    a = ActiveCell.Value
    Call Google検索(a)
  Next i

End Sub

Sub Google検索(keyWD)

  Set objIE = CreateObject("InternetExplorer.Application")
  strURL = "https://www.google.co.jp/

  With objIE
    .Visible = True
    .Navigate2 strURL
    Do While .Busy = True
      DoEvents
    Loop
    Do While .document.ReadyState <> "complete"
      DoEvents
    Loop
    .document.getElementsByName("q")(0).Value = keyWD
    .document.forms(0).Submit
  End With

End Sub




■以下は補足の解説になります。


Sub Yahoo検索(keyWD)

  Set objIE = CreateObject("InternetExplorer.Application")
  strURL = "http://www.yahoo.co.jp/"
  With objIE
    .Visible = True
    .Navigate2 strURL
    Do While .Busy = True
      DoEvents
    Loop
    Do While .document.ReadyState <> "complete"
      DoEvents
    Loop
    .document.getElementById("srchtxt").Value = keyWD
    .document.forms(0).Submit
  End With

End Sub



この、「ブラックボックスで使え!(無理に理解しようとするな!)」と言いましたコードですが、せっかくですのでちょっと簡単に解説だけしておきたいと思います。

まず、

  Set objIE = CreateObject("InternetExplorer.Application")

これは、ワード連携の時と同じですのでワードの時はこのInternetExplorerの部分が単純に、Wordとなっていましたので、色々に使えそうな予感もしてくるかとは思います。

次の

  strURL = "http://www.yahoo.co.jp/"

これは、読んで字のごとしなのでYahoo!のトップ画面(検索画面)のURLです。

で、難しくなるのはその次からですが、

  .Visible = True

これ、True ですのでこの逆には False もあるだろうというのはカンの良い方であれば容易に想像がつくとは思いますが、ここを

  .Visible = False

に変えるとIEの画面が立ち上がってきません。(検索はされますが人間の目で検索結果は見られなくなります。)

  .Navigate2 strURL

ここは、単純にURLを指定している行です。変数を使わないで直接ここに下記のように書き込んでしまっても大丈夫です。

  .Navigate2 "http://www.yahoo.co.jp/"

その次からの、

  Do While .Busy = True
    DoEvents
  Loop

  Do While .Document.ReadyState <> "complete"
    DoEvents
  Loop

この辺はちょっと理解が難しい話なのでそれこそブラックボックスだと思って(いじる必要のないものだと思って)よみ飛ばしてください。(ちなみに、ループの中のDoEventsですがこれは制御系で、沢山ぐるぐる回りそうなループの中には必ず入れておいた方がよいというものですが、その分、処理速度は遅くはなります。)


最後の2行、ここが、画面の検索窓にキーワードを入力して、

  .Document.getElementById("srchtxt").Value = keyWD

検索ボタンを押す(「サブミットする」なんて言います)

  .Document.forms(0).Submit

ということをやっている部分になります。


ここはYahoo!ならYahoo!固有(サイトの作りに依存する部分)なので、アクセスしにいくサイトによって異なってきます。


あと、前後の

  With objIE
    .Visible = True
    .Navigate2 strURL
       ・
       ・
    .Document.getElementById("srchtxt").Value = keyWD
    .Document.forms(0).Submit
  End With

この With ・・・ というのはよく見かけると思いますが、これは省略形なだけなので、ここは省略なしに(Withなしに)書くと、

    objIE.Visible = True
    objIE.Navigate2 strURL
       ・
       ・
    objIE.Document.getElementById("srchtxt").Value = keyWD
    objIE.Document.forms(0).Submit

と書いても意味はまったく同じです。



コメント

いざ、WBC準決勝!

2013-03-18 07:42:09 | よもやまな話


ブログでは久々の野球話ですが、

なんと言っても今日のWBC準決勝のプエルトリコ戦、

先発の前ケン次第、彼の出来に期待ですね。


前試合のすばらしいピッチングをすれば心配はいらないでしょうが、、

なにせ海の向こう、アメリカの地ですから。。。



それにしても、前ケンいいピッチャーですねー。

広島でくすぶってるのはほんともったいない!

ぜひ、我が中日ドラゴンズに欲しいピッチャーです。

(広島の皆さんにはごめんなさい。。m(__)m)



コメント

【お便り】被災地からのメール

2013-03-11 07:19:21 | マクロ作成のコツ

あれから2年、

早いような、長い月日だったような。。。ですが、



当講座の受講者さんで、津波の被害にあわれて

家を流されてしまった方から、先日メールを頂戴しました。



  震災後は、仮設住まいのため、パソコンを拡げられるスペースが確保できず、
  なかなか勉強は捗っていません。
  「1日10分」がお約束ですが、狭いことを言い訳にしてすみません。

  それでもお陰様で、新居の目途がつきました。
  春には新居に移ることが出来ます。
  
  今は、頂戴するメールを眺めているだけですが、
  老化防止のためにも、マクロの勉強を再開しようと
  「新年」に誓いました。

  今後ともご指導よろしくお願いいたします。

  余談ですが、パソコンに触れる時間が大幅に減った分で、
  スマホをマスターしました。ラインやら漫画カメラやらで頭の柔軟体操を
  しています。

  はやくマクロの勉強を再開して、「これは!」という質問を
  三太郎さんにぶつけてみたいです(^-^*)
 
  被災地の春はまだまだ遠いです。今後ともご支援よろしくお願いいたします。
  





実は2年前の大地震直後に、何かの助けになれればということで、当社開発の

地図ソフトで次のような被災地の地図を作りまして、それを震災の1週間後

くらいにホームページやYouTubeなどに公開をしていったのですが、

→ 東日本大震災 津波3DシミュレーションCG


(とにかく即興で作りましたし、実際の津波の高さも当時は未だわかっては
いませんでしたので、完成度はかなり低い地図ではありますが。。)



これを使って、当講座の生徒さんの中にも津波の被害にあわれた人はないかと

住所の確認をしていったわけです。


それで、該当者が数名おられるかもしれないことがわかりました。


それから1~2か月待って(多少落ち着かれたであろう時期を見計らって)

その方々に恐る恐るメールを出してみたんですが、その中でお返事を

もらうことができて何度かメールやり取りをしていただいたお一人が、

今回このメールをいただいた方です。



まだまだ大変なご様子の中にあっても、

それでも、力強い復興のお気持ちが伝わってくる

メールを頂いて大変嬉しく思いましたので、皆さんにもぜひ

読んでいただきたく、掲載させていただきました。




あれから2年が経ち、みんな色々な想いというのは沢山、

沢山あるわけですが、


やはり、2年前にみんなが、

「被災地のために何か自分に出来ることは・・・」

と、ひとり一人が一生懸命に考えて、そして行動をした。。。



あの時の気持ちを決して忘れてはならない。

あの時だけの事に終わらせてはならない。


今、そう強く思います。



その時だけに終わらせずに、

それを続けて困難にお互いが協力し合って立ち向かう国民になれたならば、

日本は、真に強い国になるだろうと思うわけです。


これからも被災地のために自分ができることを、

微力ながらも精一杯やっていきたい・・・

と思っています。


コメント