プロが教えるわが家の防犯対策術!

お世話になります。

Excel2016 32bit Windows10

IE自動操作に取り組んでいます。まだ勉強が足りず、ボタンのクリックができません(画像Gカレンダー保存ボタン)。
InputTypeでもaタグでもありません。idで取得はでき、roleがボタンでタブ選択もできるのに、VBAでクリックができません。
この手のボタンはVBA操作不可能なのでしょうか。初歩的な質問かもしれませんが、みなさまのお力添えを頂きたいです。

<div class="goog-inline-block goog-imageless-button" role="button" tabindex="0" style="user-select: none;">
<div class="goog-inline-block goog-imageless-button-outer-box">
<div class="goog-inline-block goog-imageless-button-inner-box"><div class="goog-imageless-button-pos">
<div class="goog-imageless-button-top-shadow"></div>
<div class="goog-imageless-button-content">保存</div>
</div>
</div>
</div>
</div>

「Excel VBAでのIE操作でクリック」の質問画像

質問者からの補足コメント

  • トライしたコードです。
    作成したURLを開き、表示が完了したのちにIDで取得し、クリックする流れをイメージしました。

    Dim ie As InternetExplorer
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    ie.Navigate "作成したURL(文字数の都合割愛)"

    Do While ie.Busy Or ie.ReadyState < READYSTATE_COMPLETE
    DoEvents
    Loop

    '/////課題の部分//////
    Dim htdoc As HTMLDocument
    Set htdoc = ie.Document
    htdoc.getElementById(":jc.save_top").Click

      補足日時:2016/11/17 22:16

A 回答 (2件)

こんにちは。



すみません。画像が、ものすごく小さかったのが災いしたのと、

「:jc.save_top」って、wrapper となっている所をみると、何かと組み合わさっていると思います。それをクリックされようとしていたので、なんだろうと考えしまいました。

>(画像Gカレンダー保存ボタン)

カレンダーの赤い「保存ボタン」をクリックですか?
質問の回答になっているのか、あまり確信がありません。

初歩の初歩としては、
<div class="goog-imageless-button-content" unselectable="on">保存</div>
ここから、

With objIE

Set buttons = .Document.getElementsByClassName("goog-imageless-button-content")
For Each n In buttons
   If n.innerText Like "保存*" Then ''= "保存" でもよい
    n.Click
    Exit For
   End If
Next n

End With

で、行けるのではないでしょうか。
もちろん、オブジェクト配列になっているはずですから、それで、何番目か探して、直接、buttons(9).Clickとしても行けるかとは思います。

質問と食い違っていたら、補足をつけてください。

それと、余談なのですが、Googleで、IEを使うのは抵抗ありませんか?フルに動かないと思います。かと言って、Google Chrome をVBAで扱う方法が、なぜか確立できていませんね。Selenium VBAを使うことにはなっているのですが、いろいろやってみて、どうやらバージョンが遅れていることに気が付きました。前から、ずっと遅れているようです。
    • good
    • 1
この回答へのお礼

ありがとうございます!まさに求めていた操作が実現しました。理解も深まり他の操作にも拡げることができました。
おっしゃる通りで、chromeでgoogleを利用するのがベストだと思います。ただ今の職場が極端にパソコンに弱い為、せいぜいエクセルが限界です(chromeのスプレッドシートなど、操作うんぬん以前に聞いただけでアレルギー反応が出そうです)。そのためVBAを基準にせざるをえなく、必然的にIEを使わざるを得ない状況です。

お礼日時:2016/11/18 18:56

この手のことは行ったことがないので、具体的にVBAでどの様に記述するのかはわからないのですが……



getElementByIdではなく、
GetElementsByClassNameで、クラス属性"goog-imageless-button-content"のdivタグを取得して、
clickするのではないでしょうか?
たぶん、クラス属性が"goog-imageless-button-content"のタグは1個だけだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます!おかげさまで思い描いていた操作が実現しました!

お礼日時:2016/11/18 18:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています