「VBA Edge制御 導入」の版間の差分
(→概要) |
編集の要約なし |
||
(同じ利用者による、間の16版が非表示) | |||
1行目: | 1行目: | ||
<yjavascript></script> | |||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/vs2015.css"> | |||
<link rel="stylesheet" href="https://wiki.yo-net.jp/custom.css"> | |||
<script src="https://wiki.yo-net.jp/highlight/highlight.js"></script> | |||
<script src="https://wiki.yo-net.jp/custom.js"></script> | |||
<script type="text/javascript" charset="UTF-8" src="https://wiki.yo-net.jp/highlight/highlightjs-vba/dist/vba.min.js"></script> | |||
<script type="text/javascript">hljs.initHighlightingOnLoad();</script> | |||
<script></yjavascript> | |||
[[VBA]]に戻る。 | [[VBA]]に戻る。 | ||
36行目: | 44行目: | ||
この面倒な操作はコマンドラインプログラムをC言語で組んだりして、自動化できるらしいです。管理人もゆくゆくはやってみようと思っていますが、後日の対応になりそうです。 | この面倒な操作はコマンドラインプログラムをC言語で組んだりして、自動化できるらしいです。管理人もゆくゆくはやってみようと思っていますが、後日の対応になりそうです。 | ||
[[VBA Edge制御 更新自動化コマンドプロンプトプログラム]] | |||
47行目: | 58行目: | ||
ここまで来たら、VBAでテストスクリプトを動かしてみましょう。Googleの仕様が変わっていなければ動くサンプルです。変わっていればちょこっと修正が必要でしょう。参照設定にSelenium Libraryというのが選択できるようになっています。チェックボックスに印を入れて以下のスクリプトを入力します。 | |||
< | <yjavascript></script> | ||
Public Sub グーグル検索() | <!-- | ||
data-line-num-start="1" | |||
data-line-highlight="3, 10-" | |||
With driver | data-max-lines="10" | ||
--> | |||
<div class="hljs-wrap"><pre data-label="GoogleSearchVBAFunction.bas" class="pre-wrap"> | |||
<code class="language-vba">Public Sub グーグル検索() | |||
Dim driver As Selenium.EdgeDriver | |||
Set driver = New Selenium.EdgeDriver | |||
With driver | |||
End Sub | .Start | ||
</ | .Get "https://www.google.com/" | ||
.FindElementByName("q").SendKeys ("Yonewiki") | |||
.FindElementByCss("input.gNO89b").Click '.FindElementById("btnK").Click | |||
Debug.Print .FindElementById("search").Text | |||
.Quit | |||
End With | |||
End Sub</code></pre></div> | |||
<script></yjavascript> | |||
2025年1月12日 (日) 18:40時点における最新版
VBAに戻る。
概要
VBAでEdge制御をするには、ちょっと準備が必要です。InternetExplorerの制御の場合はあまり準備はいらないらしい。今後のこととInternetExplorer非対応のWebサイトもありますので、Edge制御を勉強していこうと思います。InternetExplorerの制御から勉強するのもいいかもしれない。
まずSeleniumBasicというものをインストールしないとVBAから制御できないです。制御できるように橋渡しをしてくれるLibraryです。なんでこんなことになってしまったんでしょ。ちなみにChromeもこのツールから制御できます。橋渡ししてくれるツールがあるだけありがたいと思えって感じだね。
以下のリンクからダウンロードします。
https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0
インストーラー形式なので、承諾したり次へ次へという感じだけでインストールできるものです。簡単なのでこまごまとした操作までは説明しません。
次に、Edge Web Driverというものをダウンロードする必要があります。これはバージョン毎にMicrosoftからDriverが提供されますが、Edgeが1か月に1回くらいのペースで更新されるので、都度、同じバージョンのDriverに更新しつづける必要があります。同じバージョンのDriverはSelenumBasicのWindowsの場合、ユーザ毎の設定領域に保存する必要があります。
- User\(UserID)\AppData\Local\SeleniumBasicというフォルダにedgedriver.exeという名前で保存する必要があります。
マイクロソフトが提供するDriverファイル名はmsedgedriver.exeという名前なのでリネームが必要です。
Driverファイルは以下のサイトから入手します。
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/?form=MA13LH#downloads
のStable Channelというカテゴリのものをダウンロードします。今日時点では、Version 131.0.2903.112です。なのでEdgeを最新に更新して合わせこまないといけません。EdgeのVersionはブラウザを表示しているときのアドレスバーの右にある[…]というボタンを押して表示されるメニューから、[ヘルプとフィードバック]の中の[Microsoft Edgeについて]というのをクリックして表示される設定ページで確認できます。バージョン情報は一番上の方に薄い灰色の文字で表記されています。バージョン 131.0.2903.112 (公式ビルド) (64 ビット)のような表記があります。Edgeの状態がその下に表示されていてMicrosoft Edge は最新です。と表示されていれば最新なので、最新版のDriverをダウンロードするだけです。最新版に更新しないといけないときもここから更新できます。とにかく、Versionはひとつの違いもない、全く同じものをダウンロードする必要があります。
この面倒な操作はコマンドラインプログラムをC言語で組んだりして、自動化できるらしいです。管理人もゆくゆくはやってみようと思っていますが、後日の対応になりそうです。
VBA Edge制御 更新自動化コマンドプロンプトプログラム
そして、.NetFramework3.5のインストールとドライバの動作確認をするべく
- User\(UserID)\AppData\Local\SeleniumBasic\ScriptにあるStartEdge.vbsを動かします。
vbsを動かせない環境もあるらしいですが、その場合は別の方法でインストールして下さい。StartEdge.vbsが動くとEdgeが起動して、メッセージボックスが表示されて、Edgeが終了するという正常な動作が起こります。
ここまで来たら、VBAでテストスクリプトを動かしてみましょう。Googleの仕様が変わっていなければ動くサンプルです。変わっていればちょこっと修正が必要でしょう。参照設定にSelenium Libraryというのが選択できるようになっています。チェックボックスに印を入れて以下のスクリプトを入力します。
Public Sub グーグル検索()
Dim driver As Selenium.EdgeDriver
Set driver = New Selenium.EdgeDriver
With driver
.Start
.Get "https://www.google.com/"
.FindElementByName("q").SendKeys ("Yonewiki")
.FindElementByCss("input.gNO89b").Click '.FindElementById("btnK").Click
Debug.Print .FindElementById("search").Text
.Quit
End With
End Sub
うまく動けば、Edgeを起動して、Yonewikiという検索ワードで検索して、イミディエイトウィンドウにその結果を表示して、Edgeが閉じられるという動作になりあす。関数が終了するとdiverのオブジェクトが消えるので、Edgeブラウザも消えます。開いたままにするには、途中でスクリプトを止めるダイアログボックスを表示して、.Quitを実行せずにプログラムを待ち状態にする必要があります。たぶん。Edgeでの操作が終わったらダイアログボックスを操作して閉じる感じか続けての操作をするとか言う感じになるのかもしれません。あるいは、ダイアログボックスではなくブレークポイントを設定するだけでもよいでしょう。とにかく関数が終了してdirverオブジェクトが閉じられると、Quitの実行するもしないも関係なくEdgeブラウザも終了してしまいます。
VBAに戻る。