マクロでウェブサイトをURL指定で開く方法について、事例としてGoogle Chromeを使用してサイトを開く場合を紹介します。
ただし、Excelのバージョンによってツールの参照先に「Microsoft Web Browser」がある場合はいいのですが、無い場合は「Microsoft Internet Controls」を代替的に使用することになるので複雑になります。
1.Microsoft Web Browserありの場合
Sub GOOGLE_Chromeでウェブサイトを開く_1()
'ウェブサイトのURLを指定する
Dim url As String
url = "https://yomoyamastudy.net"
'Google Chromeオブジェクトを作成する
Dim chrome As Object
Set chrome = CreateObject("Chrome.Application")
'ウェブサイトを開く
chrome.Navigate url
'ウェブサイトが開き終わるまで待機する
Do While chrome.Busy Or chrome.ReadyState <> 4
DoEvents
Loop
'ウェブサイトを閉じる
chrome.Quit
'オブジェクトを解放する
Set chrome = Nothing
End Sub
2.Microsoft Web Browser無し(Microsoft Internet Controls)の場合
Sub GOOGLE_Chromeでウェブサイトを開く_2()
Dim url As String
Dim ie As Object
Dim chromePid As Long
'ウェブサイトのURLを指定する
url = "https://yomoyamastudy.net"
'InternetExplorerオブジェクトを作成する
Set ie = CreateObject("InternetExplorer.Application")
'Google Chromeのプロセスを探す
chromePid = FindChromeProcessId()
'ChromeのPIDを指定してInternetExplorerオブジェクトを使用する
ie.Visible = True
ie.Navigate "about:blank"
Do While ie.Busy Or ie.ReadyState <> 4
DoEvents
Loop
ie.Navigate "chrome://process/" & chromePid
Do While ie.Busy Or ie.ReadyState <> 4
DoEvents
Loop
ie.Navigate url
'ウェブサイトが開き終わるまで待機する
Do While ie.Busy Or ie.ReadyState <> 4
DoEvents
Loop
'オブジェクトを解放する
Set ie = Nothing
End Sub
Function FindChromeProcessId() As Long
Dim shell As Object
Dim wmi As Object
Dim chromeProcesses As Object
'Google ChromeのPIDを取得する
Set shell = CreateObject("WScript.Shell")
Set wmi = GetObject("winmgmts:")
Set chromeProcesses = wmi.ExecQuery("SELECT * FROM Win32_Process WHERE Name LIKE '%chrome.exe'")
For Each chromeProcess In chromeProcesses
If InStr(chromeProcess.CommandLine, "--type=renderer") > 0 Then
FindChromeProcessId = chromeProcess.ProcessId
Exit Function
End If
Next chromeProcess
End Function
Microsoft Internet Controlsを使用する場合の上記コードですが、
まずInternetExplorerオブジェクトを作成し、Google ChromeのプロセスIDを取得するためにFindChromeProcessId関数を使用します。
その後、chrome://process/を使用して、ChromeのPIDを指定してウェブサイトを開きます。
最後に、オブジェクトを解放します。
コメント