1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VBAで5分以内にEdgeでアクセスしたページのHTMLを読み込む(Edge操作なし、キャッシュ使う)

Posted at

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
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?