【Excelマクロ(VBa)】IEの操作(データを取得する)


IE起動~終了までは述べたので、起動後のIEの操作をExcelマクロ(VBa)で行います。尚、コーディングするにあたっては、多少htmlの知識が必要です。(読めないと記述できません)

操作するページは引き続きYahooの乗換案内です。(サンプルソース)


   画面の値


IEの操作でテキストボックスラジオボタンコンボボックスチェックボックス、【検索】ボタンのクリックをご紹介しましたが、今回は検索した結果のデータ取得をご紹介します。

東京 ~ 渋谷までの乗換案内検索をすると、下記のような結果が取得できました。




   html


これをhtml上で確認すると、下記となります。(今回は「ルート1」時間・金額・乗換回数に限定)
idが設定されていれば getElementById("~") を使う事で簡単に値を取得する事ができるのですが、今回はidが設定されていないので、dlタグliタグclass="~"に注目します。

<dl>
<dt><a href="#route01"><span class="icnAnchor">[↓]</span>ルート1</a></dt>
<dd >
<ul>
<li class="time">26分</li>
<li class="fare"><span class="mark">194円</span></li>
<li class="transfer">乗換:<span class="mark">0回</span></li>
<li class="priority"><span class="icnPriTime">[早]</span><span class="icnPriTrans">[楽]</span><span class="icnPriFare">[安]</span></li>

</ul>
</dd>
</dl>


   html(dlタグ)


dlタグは乗換案内の検索結果のページに多く出てくるので、ループして該当の箇所を見つけます。見つけ方はルート1の文字列を含むものを特定します。

  <乗換案内html>
<dl>
<dt><a href="#route01"><span class="icnAnchor">[↓]</span>ルート1</a></dt>
<dd >
<ul>
  ・
  ・
</ul>
</dd>
</dl>

  <Excelマクロ(VBa)>
'変数定義
Dim dl As IHTMLElement

'dlタグ分ループする
For Each dl In objIE.document.getElementsByTagName("dl")

  '「ルート1」を含むかチェックする
  If InStr(dl.innerText, "ルート1") > 0 then
    ・
    ・
  End If

Next dl


   html(liタグclass)


liタグは上記dlタグ(ルート1)に4回出てくるので、dlタグと同じようにループを使います。該当のデータを見つけるにはclassで特定します。

今までは文書全体からデータを取得していたので、
  objIE.document.getElementsByTagName
を使ってましたが、今回は該当のdlタグが取得できたので、
  dl.getElementsByTagName
を使います。

また、classはタグではなく属性なので getAttribute("属性") を使います。但し、class の場合には getAttribute("className") と記述する点は注意が必要です。(getAttribute("class")ではない)

  <乗換案内html>
<li class="time">26分</li>
<li class="fare"><span class="mark">194円</span></li>
<li class="transfer">乗換:<span class="mark">0回</span></li>
<li class="priority"><span class="icnPriTime">[早]</span><span class="icnPriTrans">[楽]</span><span class="icnPriFare">[安]</span></li>

  <Excelマクロ(VBa)>
'変数定義
Dim dl_li As IHTMLElement

'dlタグ内をループする
'  (注)上記「If InStr(dl.innerText, "ルート1") > 0 then」内に記述する
For Each dl_li In dl.getElementsByTagName("li")

  '時間を特定
  If dl_li.getAttribute("className") = "time" Then
    ・
    ・
  End If

  '金額を特定
  If dl_li.getAttribute("className") = "fare" Then
    ・
    ・
  End If

  '乗換回数を特定
  If dl_li.getAttribute("className") = "transfer" Then
    ・
    ・
  End If

Next dl_li

 

   データの取得


これでようやく該当のデータに辿り着けたので、innerText を使って該当の値を取得します。

  <乗換案内html>
<li class="time">26分</li>

  <Excelマクロ(VBa)>
dl_li.innerText


   乗換案内のルート1の金額を取得する


最後に通して記述すると下記のようになります。

'変数定義
Dim dl As IHTMLElement
Dim dl_class As IHTMLElement
Dim dl_li As IHTMLElement

'dlタグ分ループする
For Each dl In objIE.document.getElementsByTagName("dl")

  '「ルート1」を含むかチェックする
  If InStr(dl.innerText, "ルート1") > 0 Then

    'dlタグ内をループする
    For Each dl_li In dl.getElementsByTagName("li")

      '金額を特定
      If dl_li.getAttribute("className") = "fare" Then
        '乗換案内のルート1の金額を取得する
        MsgBox dl_li.innerText
      End If

    Next dl_li

  End If

Next dl
カテゴリー: VBa(Excelマクロ), システム開発 | コメントする

【ポケモンGO】グローバルチャレンジ(ブロンズ解放!)



2017年11月20日から開始した「グローバルチャレンジ」イベントですが、第一関門のブロンズを1日半くらいで解放しました!

既に以下の効果が得られていますが、「ポケモンが多く見つかる」という効果はイマイチよく分からないです。確かに余り見かけないポケモンが町中でPOPするので効果は少し実感できる・・・程度です。この効果はシルバーの「ポケモンがより多く見つかる」に期待です。

・経験値2倍
・ルアーモジュールの有効期間が6時間
・ポケモンが多く見つかる

ところで、ナイアンテック社もムリなお題は出さないだろう・・・と高を括ってましたが、30億ポケモンをゲットするには厳しいのでは?という声が一部で挙がり始めました。

確かに5億匹ゲットに1日半費やしたとしたら、6倍ともなると9日間必要という事になります。

開始が月曜だったという事と、告知が行き渡っているか?!という点が疑問です。

30億匹ゲットを達成してガルーラをゲットしたいですね!


カテゴリー: ポケモンGO | コメントする

【ポケモンGO】グローバルチャレンジ(2017/11/20~2017/11/26)



イベント期間 2017年11月20日(月) ~ 2017年11月26日(日) に30億匹のポケモンをゲットしよう!(公式サイト)のイベントです。この間は 特にイベントらしきものがありませんが、この間に捕まえたポケモンの数によって、発生するイベントが変わってきます。5億匹ゲットした時点で、ブロンズの効果が発動、15億匹ゲットした時点で、シルバーの効果が発動・・・というように。


   ■ ブロンズ : 世界で合計5億匹のポケモンをゲット!


・経験値2倍
・ルアーモジュールの有効期間が6時間
・ポケモンが多く見つかる


   ■ シルバー : 世界で合計15億匹のポケモンをゲット!


・経験値2倍
・ルアーモジュールの有効期間が6時間
・ポケモンがより多く見つかる
・ほしのすな2倍


   ■ ゴールド : 世界で合計30億匹のポケモンをゲット!


・経験値2倍
・ルアーモジュールの有効期間が6時間
・ポケモンが多く見つかる
・ほしのすな2倍
・ガルーラが東アジアに登場!
・カモネギが世界中に登場!

この間に是非とも30億匹をゲットしてゴールドをゲットし、ガルーラが東アジアに湧くように頑張りましょう!(^^)!

ところで、2017年6月8日時点でポケモンGOのダウンロード数は7億5千万回(公式サイト)なので、単純に計算すれば、一人4匹ゲットすればゴールドゲットとなるハズなのですが、結構ユーザー離れしていそうなので・・・実稼動数は何人なんでしょう?


カテゴリー: ポケモンGO | コメントする

【Excelマクロ(VBa)】IEの操作(ボタンをクリック)

IE起動~終了までは述べたので、起動後のIEの操作をExcelマクロ(VBa)で行います。尚、コーディングするにあたっては、多少htmlの知識が必要です。(読めないと記述できません)

操作するページは引き続きYahooの乗換案内です。(サンプルソース)


   ボタンをクリック


IEの操作でテキストボックスラジオボタンコンボボックスチェックボックスの操作をご紹介しましたが、Yahooの乗換案内を操作する上で【検索】ボタンを押さないと意味がありません。



これも今まで通りで、ソースコードは下記の通り、注目はid=~です。タグにidが設定されている場合は、getElementById("~") を使う事で操作できます。

そして、ボタンをクリックする場合は、
objIE.document.getElementById(idの値).Click
で操作します。

【検索ボタン】
  <乗換案内html>
<p class="btnSearch"><input type="submit" value="検索" id="searchModuleSubmit"></p>

  <Excelマクロ(VBa)>
  ▽検索ボタンをクリック
objIE.document.getElementById("searchModuleSubmit").Click


カテゴリー: VBa(Excelマクロ), システム開発 | コメントする

【映画】モータル・コンバット2/魔界来襲(原題:MORTAL KOMBAT:ANNIHILATION)



監督:ジョン・R・レオネッティ
出演者:ロビン・ショウ(リュウ・カン(劉鋼) 役)
    タリサ・ソト(キタナ王女 役)
    ジェームズ・レマー(ライデン(雷電) 役)
    ブライアン・トンプソン(シャオ・カーン 役)
    サンドラ・ヘス(ソニア・ブレイド 役)

----------------------------------------

あらすじ・感想(ネタバレ):

モータル・コンバットの続編。人間界に平和が訪れたと思ったら、魔界の皇帝シャオ・カーンが攻め てきた。人間界が6日で魔界に併合される。

シャオ・カーンが攻めてきた軍勢の中にキタナ王女の母シンデル女王が蘇生され魔界側についていた。

ライデン vs シャオ・カーン戦、始めライデンが優勢だったが、ソニア・ブレイドを人質に取られ、救出しようとしたジョニー・ケイジが殺される。

一旦退き、ライデンの助言により、ライデンとソニアはジャックスを探しにいき、リュウ・カンとキタナ王女はナイトウルフに会って更なる修行を積む旅へと出る。

先にネタバレしてしまうと、ライデンとシャオ・カーンは兄弟で、父(神々のうちの一人)が弟シャオ ・カーンに与して魔界の門を開け人間界を併合しようとしていた。そして父とシャオ・カーンは世界を思い通りにしようと企む。

ナイトウルフを探している中、リュウ・カンはキタナ王女を守ると誓った直後に魔界の者に襲われ、キタナ王女が連れ去られてしまった。

今回もキタナ王女がカギを握っており、魔界は、モータル・コンバットではリュウ・カンとキタナ王女が会うのを阻止したように、モータル・コンバット2では、キタナ王女と母シンデル女王と会うのを阻止しようとしていた。(魔界の門が閉じると考えられていた)

リュウ・カンはキタナ王女を追おうとするが、今のリュウ・カンの実力では勝てないと言われ、ナイトウルフの下へ向かった。

ソニア・ブレイドはジャックスと会うことが出来た。ジャックスは両腕に機械を付けていて素 手の4倍の威力があると威張る。ジャックスは研究室に閉じこもっていたから魔界に併合される事については全く知らなかった。

その研究室に魔界の手の者が攻めてきた。ジャックス・・より、ソニア・ブレイドの力により撃退し た。

その頃、リュウ・カンは砂漠(?)を歩いていた。夜が更けるとナイトウルフが襲ってくる。襲われたリ ュウ・カンは、何か頼りない。教えを請いに来たのに態度がでかいのも何か違和感を感じる。

ナイトウルフは、カーンを倒すために3つの試練が必要だと。1つは勇気(夢の世界に身を投じて動物 的本能を目覚めさせる)。殴られ気絶し、夢の中に身を投じた。(他の2つは何だったんだろう?)

目が覚めるとジェイドという女性が誘惑してくる。キタナ王女がいるため誘惑から自分を律するとジェイドが襲ってくる。退けると王女の下へと案内するというのでジェイドについていく事にした。

キタナ王女はシャオ・カーンに捕らわれていた。

ソニアとジャックスが進んでいくと魔界の者に襲われる。多勢に無勢で逃げる。

ライデンは神々に会いに行き、聖なる掟が破られた事を報告するが、神々は力を貸そうとしない。

ソニアとジャックスが神殿に向かって行くとリュウ・カン、ジェイドと合流するが、魔界の者が襲っ てくるので更に逃げる。

ライデンと合流すると、シャオ・カーン、シンデル女王が襲ってきたので、ライデンが空間に穴を開 け逃れる。ジェイドが秘密の通路に案内をし更に先に進む。ジェイドはシンデル女王の背後から襲い、捕らえる事が出来た。

リュウ・カンは無事にキタナ王女を救出し、キタナ王女とシンデル女王を引き合わせる事に成功した。
しかし、これは実は罠で、シンデル女王を改心させても魔界の門は閉じない。

ライデン一味を倒せなかったジェイドはシャオ・カーンによって殺されてしまう。

最終決戦、ライデンはシャオ・カーンの一撃によりあっけなく命を落とす。

リュウ・カン vs シャオ・カーン、キタナ王女 vs シンデル女王、ジャックス vs ケンタウルス(みたいなの)、ソニア vs その他 との戦いが始まった。

始めは人間側が押されていたが、徐々に魔界の軍勢を圧倒し始め、最後はリュウ・カン vs シャオ・カーンとの戦いとなった。リュウ・カンは動物的本能が目覚めた事によりドラゴンとなると、シャオ・カーンも負けずドラゴンとなって戦うが一瞬で元の姿に戻ってしまった。(リュウ・カンは何者?!)

シャオ・カーンが優勢だったが、徐々にリュウ・カンが押し、最後には一方的にシャオ・カーンを倒す事ができた。

そして、世界が元通りとなり、死んだライデンは生き返って父の後を継ぎ神になった。

カテゴリー: アクション, 映画 | コメントする