none
VB6でEdgeの使用は可能でしょうか。 RRS feed

  • 質問

  • お世話になります。

    VBAでEdgeを使用する方法は下記を参考にしました。
    https://kyoyo-salon.hatenablog.com/entry/vba-edge
    https://qiita.com/grazios/items/b94033f7cea05024e4d3
    https://office-hack.com/windows/windows10-netframework/

               VBAでEdgeが動作確認できました
    ----------------------------------------------------------------------
     Dim driver As Selenium.EdgeDriver
        Set driver = New Selenium.EdgeDriver '[クラスが登録されていません]

        With driver
            .Start
            .Get "https://www.google.com/"
            .FindElementByName("q").SendKeys ("テスト検索なんだぜ")
            .FindElementById("tsf").submit
            Debug.Print .FindElementById("resultStats").Text
            .Quit
        End With
    ------------------------------------------------------------------------

    VBAでEdgeが動作確認できましたプログラムをVB6で動作しますと[クラスが登録されていません]となります。
    VB6でEdgeの使用は可能でしょうか。

    ご教示願えますと幸いであります。
    2022年1月10日 7:59

回答

  • 手元に VB6 が無いので検証はできませんが…

    コンパイルした exe を実行した場合にエラーになるのでしょうか。
    それとも、開発環境からのデバッグ実行で問題が出るのでしょうか。

    また、お使いの VBA は 32bit 版でしたか? 64bit 版でしたか?
    VB6 は 32bit 版しかありませんが、VBA には 32bit 版と 64bit 版がありますので、参照設定して利用する場合は、Selenium64.tlb と Selenium32.tlbの取り違いが起きていないかも確認しましょう。

    VB6 固有の問題なのかどうかを確認するため、下記の一行のみを書いた C:\test\test.vbs ファイルを Shift_JIS ファイルとして保存してみてください。

    MsgBox TypeName(CreateObject("Selenium.EdgeDriver"))

    そしてそれを、下記のコマンドラインから呼び出してみてください。
    『C:\Windows\SysWOW64\wscript.exe C:\test\test.vbs』
    『C:\Windows\System32\wscript.exe C:\test\test.vbs』

    正しく導入されていれば、 それぞれで EdgeDriver というメッセージが表示されるかと思います。
    一方、メッセージが表示されなかったりエラーになったりする場合は、ドライバーのインストールがうまくいっていないなど、実行環境に問題が生じている可能性があるのだと予想します。

    もし、VBScript からはメッセージが表示されるのだとすれば、Selenium とは無関係に、VB6 開発環境の問題かもしれません。VB6 単独で実行させた場合も「クラスが登録されていません」になっていたりましませんか?

    VB6 開発環境でエラーメッセージが出る場合は、いったん VB6 を終了してから、VB6 アイコンを右クリックして「管理者として実行」を行ってください。権限の問題でアドインがレジストリに登録できていない場合、起動時に「クラスが登録されていません」と表示されることがありますが、管理者実行するとレジストリへの登録が成功し復旧するという事例があります。

    もう一つ。セキュリティソフトによって起動が阻害されていないかも確認してみてください。もしもセキュリティソフトを一時停止すれば起動するのであれば、該当アプリケーションを許可リストに登録しておくなどの追加作業が必要になるかもしれません。

    • 回答の候補に設定 ShiroYuki_Mot 2022年1月17日 8:12
    • 回答としてマーク 20200908 2022年1月17日 8:29
    2022年1月10日 13:25
  • VB6が管理者権限で動いてませんか?

    Excelを管理者権限で実行してVBAから呼び出すと同じエラーになり、VB6でexeを作って一般権限で実行するとエラーになりませんでした。
    どうもSeleniumBasicのCOMを管理者権限のプロセスから呼び出すとこのエラーになるようです。

    VB6を管理者権限で実行するのをやめるか、以下のコマンドで登録し直しすればエラーにならずにうごきました。

    "%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /u
    "%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /tlb /codebase
    インストーラーが登録ミスってるんですかね
    (githubのプロジェクトにはインストーラーの設定がみるからないので不明)

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 編集済み gekkaMVP 2022年1月10日 15:53
    • 回答の候補に設定 ShiroYuki_Mot 2022年1月17日 8:13
    • 回答としてマーク 20200908 2022年1月17日 8:28
    2022年1月10日 15:52
  • 魔界の仮面弁士  様

    返答を下さいまして、ありがとうございました。

    >コンパイルした exe を実行した場合にエラーになるのでしょうか。
    実行ファイルProject1.exe作成して、実行しましたら問題なく実行されました。
    Form1内のコマンドボタン(プログラム)を押してもエラーになりませんでした。

    >VB6 は 32bit 版しかありませんが、VBA には 32bit 版と 64bit 版がありますので、
    >参照設定して利用する場合は、Selenium64.tlb と Selenium32.tlb?の取り違いが起きていないかも確認しましょう。
    はい、分かりました。

    >それとも、開発環境からのデバッグ実行で問題が出るのでしょうか。
    デバッグ実行でForm1内のコマンドボタン(プログラム)を押したらエラーになりました。

    >また、お使いの VBA は 32bit 版でしたか? 64bit 版でしたか?
    VBA は Excel2019 64bit 版です。

    >VB6 固有の問題なのかどうかを確認するため、下記の一行のみを書いた C:\test\test.vbs ファイルを Shift_JIS ファイルとして保存してみてください。
    >MsgBox TypeName(CreateObject("Selenium.EdgeDriver"))
    >そしてそれを、下記のコマンドラインから呼び出してみてください。
    >『C:\Windows\SysWOW64\wscript.exe C:\test\test.vbs』
    >『C:\Windows\System32\wscript.exe C:\test\test.vbs』
    >正しく導入されていれば、 それぞれで EdgeDriver というメッセージが表示されるかと思います。
    2個ともEdgeDriverというメッセージが表示されました。
    ご指導によりEdgeDriver正しく導入された事が確認できました。
    EdgeDriverの有無確認は勉強になりました。

    魔界の仮面弁士  様には以前、大変お世話になりました。

    深く感謝申し上げます。
    • 回答としてマーク 20200908 2022年1月10日 17:54
    • 回答としてマークされていない 20200908 2022年1月17日 10:01
    • 回答としてマーク 20200908 2022年1月17日 10:02
    2022年1月10日 17:52
  • gekka 様

    返答を下さいまして、ありがとうございました。

    >VB6が管理者権限で動いてませんか?
    はい、管理者権限で動いていました。

    >Excelを管理者権限で実行してVBAから呼び出すと同じエラーになり、VB6でexeを作って一般権限で実行するとエラーになりませんでした。
    >どうもSeleniumBasicのCOMを管理者権限のプロセスから呼び出すとこのエラーになるようです。
    はい、分かりました。

    >VB6を管理者権限で実行するのをやめるか、以下のコマンドで登録し直しすればエラーにならずにうごきました。
    >"%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /u
    >"%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /tlb /codebase
    VB6を管理者権限で実行するのをやめますとエラーになりませんでした。
    また、コマンドで登録し直しましたらエラーになりませんでした。

    >個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき
    >「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
    はい、分かりました。

    前回に引き続き、お世話になりました。深く感謝申し上げます。
    • 回答としてマーク 20200908 2022年1月10日 17:54
    2022年1月10日 17:54

すべての返信

  • 手元に VB6 が無いので検証はできませんが…

    コンパイルした exe を実行した場合にエラーになるのでしょうか。
    それとも、開発環境からのデバッグ実行で問題が出るのでしょうか。

    また、お使いの VBA は 32bit 版でしたか? 64bit 版でしたか?
    VB6 は 32bit 版しかありませんが、VBA には 32bit 版と 64bit 版がありますので、参照設定して利用する場合は、Selenium64.tlb と Selenium32.tlbの取り違いが起きていないかも確認しましょう。

    VB6 固有の問題なのかどうかを確認するため、下記の一行のみを書いた C:\test\test.vbs ファイルを Shift_JIS ファイルとして保存してみてください。

    MsgBox TypeName(CreateObject("Selenium.EdgeDriver"))

    そしてそれを、下記のコマンドラインから呼び出してみてください。
    『C:\Windows\SysWOW64\wscript.exe C:\test\test.vbs』
    『C:\Windows\System32\wscript.exe C:\test\test.vbs』

    正しく導入されていれば、 それぞれで EdgeDriver というメッセージが表示されるかと思います。
    一方、メッセージが表示されなかったりエラーになったりする場合は、ドライバーのインストールがうまくいっていないなど、実行環境に問題が生じている可能性があるのだと予想します。

    もし、VBScript からはメッセージが表示されるのだとすれば、Selenium とは無関係に、VB6 開発環境の問題かもしれません。VB6 単独で実行させた場合も「クラスが登録されていません」になっていたりましませんか?

    VB6 開発環境でエラーメッセージが出る場合は、いったん VB6 を終了してから、VB6 アイコンを右クリックして「管理者として実行」を行ってください。権限の問題でアドインがレジストリに登録できていない場合、起動時に「クラスが登録されていません」と表示されることがありますが、管理者実行するとレジストリへの登録が成功し復旧するという事例があります。

    もう一つ。セキュリティソフトによって起動が阻害されていないかも確認してみてください。もしもセキュリティソフトを一時停止すれば起動するのであれば、該当アプリケーションを許可リストに登録しておくなどの追加作業が必要になるかもしれません。

    • 回答の候補に設定 ShiroYuki_Mot 2022年1月17日 8:12
    • 回答としてマーク 20200908 2022年1月17日 8:29
    2022年1月10日 13:25
  • VB6が管理者権限で動いてませんか?

    Excelを管理者権限で実行してVBAから呼び出すと同じエラーになり、VB6でexeを作って一般権限で実行するとエラーになりませんでした。
    どうもSeleniumBasicのCOMを管理者権限のプロセスから呼び出すとこのエラーになるようです。

    VB6を管理者権限で実行するのをやめるか、以下のコマンドで登録し直しすればエラーにならずにうごきました。

    "%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /u
    "%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /tlb /codebase
    インストーラーが登録ミスってるんですかね
    (githubのプロジェクトにはインストーラーの設定がみるからないので不明)

    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 編集済み gekkaMVP 2022年1月10日 15:53
    • 回答の候補に設定 ShiroYuki_Mot 2022年1月17日 8:13
    • 回答としてマーク 20200908 2022年1月17日 8:28
    2022年1月10日 15:52
  • 魔界の仮面弁士  様

    返答を下さいまして、ありがとうございました。

    >コンパイルした exe を実行した場合にエラーになるのでしょうか。
    実行ファイルProject1.exe作成して、実行しましたら問題なく実行されました。
    Form1内のコマンドボタン(プログラム)を押してもエラーになりませんでした。

    >VB6 は 32bit 版しかありませんが、VBA には 32bit 版と 64bit 版がありますので、
    >参照設定して利用する場合は、Selenium64.tlb と Selenium32.tlb?の取り違いが起きていないかも確認しましょう。
    はい、分かりました。

    >それとも、開発環境からのデバッグ実行で問題が出るのでしょうか。
    デバッグ実行でForm1内のコマンドボタン(プログラム)を押したらエラーになりました。

    >また、お使いの VBA は 32bit 版でしたか? 64bit 版でしたか?
    VBA は Excel2019 64bit 版です。

    >VB6 固有の問題なのかどうかを確認するため、下記の一行のみを書いた C:\test\test.vbs ファイルを Shift_JIS ファイルとして保存してみてください。
    >MsgBox TypeName(CreateObject("Selenium.EdgeDriver"))
    >そしてそれを、下記のコマンドラインから呼び出してみてください。
    >『C:\Windows\SysWOW64\wscript.exe C:\test\test.vbs』
    >『C:\Windows\System32\wscript.exe C:\test\test.vbs』
    >正しく導入されていれば、 それぞれで EdgeDriver というメッセージが表示されるかと思います。
    2個ともEdgeDriverというメッセージが表示されました。
    ご指導によりEdgeDriver正しく導入された事が確認できました。
    EdgeDriverの有無確認は勉強になりました。

    魔界の仮面弁士  様には以前、大変お世話になりました。

    深く感謝申し上げます。
    • 回答としてマーク 20200908 2022年1月10日 17:54
    • 回答としてマークされていない 20200908 2022年1月17日 10:01
    • 回答としてマーク 20200908 2022年1月17日 10:02
    2022年1月10日 17:52
  • gekka 様

    返答を下さいまして、ありがとうございました。

    >VB6が管理者権限で動いてませんか?
    はい、管理者権限で動いていました。

    >Excelを管理者権限で実行してVBAから呼び出すと同じエラーになり、VB6でexeを作って一般権限で実行するとエラーになりませんでした。
    >どうもSeleniumBasicのCOMを管理者権限のプロセスから呼び出すとこのエラーになるようです。
    はい、分かりました。

    >VB6を管理者権限で実行するのをやめるか、以下のコマンドで登録し直しすればエラーにならずにうごきました。
    >"%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /u
    >"%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /tlb /codebase
    VB6を管理者権限で実行するのをやめますとエラーになりませんでした。
    また、コマンドで登録し直しましたらエラーになりませんでした。

    >個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき
    >「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
    はい、分かりました。

    前回に引き続き、お世話になりました。深く感謝申し上げます。
    • 回答としてマーク 20200908 2022年1月10日 17:54
    2022年1月10日 17:54
  • 重ねてお礼申し上げます。

    VB6で自分の使用範囲になりますがEdgeはIE11と同じよに使用できるようになりました。

    参考
    https://kyoyo-salon.hatenablog.com/entry/vba-edge

    最新版のEdgeDriver
    https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/

    EdgeDriverが旧版になりますとエラーになりますので最新版edgedriver.exeと差し替える必要がありました。

    そこで旧版でエラーになった場合は以下の流れをVB6にしました。
    最新版EdgeDriverをダウンロード→解凍→名称変更(msedgedrive.exer→edgedrive.exer)→edgedriver.exe(最新版)を
    C:\Users\?ユーザー名?\AppData\Local\SeleniumBasic\内のedgedriver.exe(旧版)と入れ替えします。

    その他
    Windows11では「Windows 音声認識」も組み合わせて使用しています。
    「Windows 音声認識」VB6でコントロール(オン/オフ)するには管理者として実行する必要がありました。

    以下のコマンドで登録し直しすればエラーにならずにうごきました。
    「コマンドプロンプト」を管理者として実行し、ウインドウを開き、以下のコマンドを実行して、レジストリ登録を行います。
    --------------------------------------------------------------------------------------------------------
    "%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumBasic\Selenium.dll" /u
    "%windir%\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" "%localappdata%\SeleniumB
    --------------------------------------------------------------------------------------------------------

      gekka さま      魔界の仮面弁士 さま

    ご教示して下さいまして深謝申し上げます。



    • 編集済み 20200908 2022年2月12日 3:57
    2022年2月12日 2:41