Edgeで開かれているページのHtmlを取得したい
過去には、Shell.ApplicationのWindowを用いて開かれているIEのページを取得したり、win32api1のFindWindowを用いてIEモードのページを取得したりしていたと思います。
しかし、同様のことをEdgeでやろうとすると、どうしても自動ログインや複雑な操作が避けられません。
そこで、簡単なコードでキャッシュから直近のHTMLとってきちゃおうという試みです。
Edgeを操作せず直近でアクセスしたサイトから情報を取り込む
5分以内のキャッシュをHTMLドキュメントとして取り込む例です。
もっとも、サイトによって文字コードはUTF-8,EUC-jpなど様々です。
取り出したいサイトの文字コードをあらかじめ調べておくとよいと思います。
vba
Sub pickup_cache()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim CacheFolder As Object
Set CacheFolder = fso.GetFolder("C:\Users\" & Environ("USERNAME") & "\AppData\Local\Microsoft\Edge\User Data\Default\Cache\Cache_Data")
Dim adoDbStream As Object
Set adoDbStream = CreateObject("ADODB.Stream")
Dim file As Object
For Each file In CacheFolder.Files
If DateAdd("n", -5, Now) < file.DateLastModified And InStr(file.ShortName, "f_") > 0 Then
Dim htmlDoc As Object
Set htmlDoc = CreateObject("htmlfile")
With adoDbStream
.Open
.Charset = "UTF-8"
.LoadFromFile file.Path
Dim cTxt As String
cTxt = ""
cTxt = .readText
If InStr(cTxt, "UTF-8") > 0 Then'そのサイトに必ず含まれる文章で拾う
htmlDoc.write .readText
Debug.Print htmlDoc.nameProp
End If
.Close
End With
End If
Next file
End Sub