https://app.codegrid.net/entry/datauri-basic#toc-0
上記のサイトの画像のように、img要素のsrcが「http://~~~」ではなく、「data:~~~」の場合の画像を、VBAから保存するにはどうすれば良いでしょうか?
IEを起動せずに行いたいです。
URLDownloadToFileの取得先URLに対して、img要素のsrcの内容を指定しても、ダウンロードできませんでした。
以下は実行ソースのサンプルです。
vba
1Declare Function URLDownloadToFile Lib "urlmon" Alias _ 2 "URLDownloadToFileA" (ByVal pCaller As Long, _ 3 ByVal szURL As String, _ 4 ByVal szFileName As String, _ 5 ByVal dwReserved As Long, _ 6 ByVal lpfnCB As Long) As Long 7 8Declare Function DeleteUrlCacheEntry Lib "wininet" _ 9 Alias "DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long 10Public Sub subA() 11 '-------------------------- 12 ' 画像のdata URI取得 13 '-------------------------- 14 Dim objXML As New MSHTML.HTMLDocument 15 Dim htmlDoc As New MSHTML.HTMLDocument 16 Dim objITEM As Object 17 18 ' srcが「data:~~」形式のimg要素が一つのみ存在するページとします 19 Set htmlDoc = objXML.createDocumentFromUrl("http://example.com/hogehoge.html", vbNullString) 20 Call untilReady(htmlDoc) 21 22 Dim strDataURL As String 23 strDataURL = htmlDoc.getElementsByTagName("img")(0).src 24 25 '-------------------------- 26 ' ダウンロード処理 27 '-------------------------- 28 Dim fileName As String 29 Dim savePath As String 30 Dim cacheDel As Long, result As Long 31 32 '画像ファイル名 33 fileName = "test.jpeg" 34 35 '画像保存先(+画像ファイル名) 36 savePath = "C:\Users\user\Desktop\" & fileName 37 38 ' キャッシュクリア 39 cacheDel = DeleteUrlCacheEntry(strDataURL) 40 41 '画像ダウンロード 42 result = URLDownloadToFile(0, strDataURL, savePath, 0, 0) 43 44 If result = 0 Then 45 MsgBox "ダウンロードできました" 46 Else 47 MsgBox "ダウンロードできませんでした" '※※result = -2147024774 でここに来ます※※ 48 End If 49 50 Set objITEM = Nothing 51 Set htmlDoc = Nothing 52 Set objXML = Nothing 53 54End Sub 55 56Sub untilReady(htmlDoc As MSHTML.HTMLDocument) 57 Do Until htmlDoc.readyState = "complete" 58 DoEvents 59 Loop 60 DoEvents 61End Sub
IEを起動しない方法であれば、どのような形でも良いです。
なにか方法はありますでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/17 06:58