何度もお世話になります、よろしくお願いいたします。
本日、EXCEL VBAでWEBページを完全保存する方法を質問して
下記を紹介していただきました。
Option Explicit
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
"URLDownloadToFileA" ( _
ByVal pCaller As Long, ByVal szURL As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
--------------------------------------------------------------------------------
Sub DownloadFileFromWeb()
Const strUrl As String = "http://www.puremis.net/excel/index.shtml"
Dim strSavePath As String
Dim returnValue As Long
strSavePath = ThisWorkbook.Path & "\" & "Test.htm"
returnValue = URLDownloadToFile(0, strUrl, strSavePath, 0, 0)
If returnValue = 0 Then
MsgBox "Sccess!"
Else
MsgBox "Did not success."
End If
End Sub
-------------------------------------------------
この状態だと動作は完璧なんですが
たくさんのWEBページを保存するようにVBAを組みたいので
HPアドレスの部分に変数を使いたいのです。
この部分です:Const strUrl As String = "http://www.puremis.net/excel/index.shtml"
でも変数を使うとエラーになってしまうので困り果てております。何か良い方法はございませんでしょうか。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
こんにちは。
> WEBページを完全保存する方法
ご質問なさっていることは、かなり面倒なことです...ね。
ご存じかもしれませんが、WEB ページとは HTML ファイル以外にも
・CSS スタイルシートファイル
・JS などのスクリプトファイル
・画像ファイル
など複数の外部ファイルで構成されています。
# もちろん、HTML 単一で構成されたページもあります。
ご質問文にあるコードだと、この内 HTML ファイルのみローカルに保存して
いるだけで、出力されたファイルをブラウザで開くと、フルパス指定されて
いない画像などは欠けた状態になるはずです。
画像等も含めてローカルに保存したい場合、URLDownloadToFile API を使用
するなら、HTML の中で参照されている先述の外部ファイルも一緒に
URLDownloadToFile API でダウンロードし、かつ HTML ファイルを解析して
参照リンクも書き変えなければなりません。
■案1. IE を操作して保存ダイアログを使う方法
' // IE で WEB ページを保存する
Sub Sample1()
Const READYSTATE_COMPLETE As Long = 4
Const OLECMDID_SAVEAS As Long = 4
Const OLECMDEXECOPT_PROMPTUSER As Long = 1
Dim ie As Object ' // InternetExplorer
Dim url As String
url = "http://www.goo.ne.jp/"
' // ie を起動して目的のページを開く
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate url
While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend
' // 初期ファイル名を指定するため WEB ページタイトルを変更します
ie.Document.Title = "test"
' // ie の保存ダイアログを表示します
ie.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
End Sub
保存ダイアログの自動化は可能ですけど、API を駆使した面倒なコードになり
ますので省略します。
■案2. MHT ファイルでも良ければ...な方法(Windows2000以降限定)
参考(Wiki): http://ja.wikipedia.org/wiki/MHTML
Sub sample2()
' // この方法でも完全ではないが、実用上はほぼ問題ないか。。な
Const cdoSuppressNone As Long = 0
Const adSaveCreateOverWrite As Long = 2
Dim msg As Object ' // CDO.Message
Dim stm As Object ' // ADODB.Stream
Dim url As String
Dim outFilename As String
url = "http://www.goo.ne.jp/"
outFilename = ThisWorkbook.Path & "\sample.mht"
Set msg = CreateObject("CDO.Message")
msg.CreateMHTMLBody url, cdoSuppressNone, "", ""
Set stm = msg.GetStream
stm.SaveToFile outFilename, adSaveCreateOverWrite
stm.Close
Set stm = Nothing
Set msg = Nothing
End Sub
要するに、メールのように HTML に画像ファイルなどが添付されるような
イメージです。
なお、コードは一切エラー処理はしてませんし、必要最小限しか書いてません。
お試しになる場合は、ご自身で試行錯誤してみて下さい。
No.2
- 回答日時:
訂正
ゴミが残っていました
下段の方です
-------------------------------------------------------
Sub DownloadFileFromWeb()
Dim strUrl As String
Dim strSavePath As String
Dim returnValue As Long
strUrl = "http://www.puremis.net/excel/index.shtml"
strSavePath = ThisWorkbook.Path & "\" & "Test.htm"
・
・
・
No.1
- 回答日時:
Sub DownloadFileFromWeb()
Const strUrl As String = "http://www.puremis.net/excelindex.shtml"
Dim strSavePath As String
Dim returnValue As Long
strSavePath = ThisWorkbook.Path & "\" & "Test.htm"
・
・
・
-----------------------------------------------------------
Sub DownloadFileFromWeb()
Dim strUrl As String
Dim strSavePath As String
Dim returnValue As Long
strUrl = "http://www.puremis.net/excel/index.shtml"
strSavePath = ThisWorkbook.Path & "\" & "Test.htm"
・
・
・
違い分かりますか
もう少し理解された方が、後々良いと思いますよ
この回答への補足
ありがとうございます。
なんとか理解できました。
ずうずうしく追加で質問なんですが
IEでWEBページを完全保存したら
filesフォルダが一緒に作成されますけど
VBAの命令で同じように
htmlファイルと、filesフォルダが
同時に作成される方法はありますか?
よろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る バッチからEXEの結果を受け取りたいのですが、 下記のバッ 1 2023/07/04 15:13
- Visual Basic(VBA) batからexeを実行し戻り値を受け取る EXEの実行内容の結果によって、戻り値を0か1かで返したい 1 2023/07/04 16:40
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
一番最初にネットにつないだのはいつ?
ネットユーザーもいろんな世代が生まれていますが、始めて接続したときのワクワクは同じはず! 人生で一番最初にネットに接続したときの思い出を教えて下さい。
-
2024年に成し遂げたこと
今年も残すところわずか。 皆さんが今年達成したことを教えていただきたいです。 どんな小さなものでも構いません。
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
エクセルのマクロでアクティブシートをhtml保存
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル マクロ
-
ユーザーフォルダの在り処
-
ファイルの保存先を指定(固定...
-
保存したWebページが見られなく...
-
サムネイルの保存場所
-
Excelから落としたCSVファ...
-
ジャンプリストでピン留の保存場所
-
ファイルの保存先限定
-
SONY Music Center For PC に付...
-
エクセル・ワードのデータや文...
-
XPのデフォルトアイコンの保存場所
-
メモ帳の保存先がマイドキュメ...
-
インターネットで閲覧した画像...
-
マクロ、PDFを任意のフォルダへ...
-
拡張子が .mht というファイル...
-
ダウンロードしたファイルがゼ...
-
ファイルをダウンロードすると...
-
薄い色のアイコン
-
USBメモリの使用履歴を見る方法...
-
firefoxをsandboxieで仮想化し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイルの保存先を指定(固定...
-
ZIP,JPEGファイルをDLしても0K...
-
ジャンプリストでピン留の保存場所
-
エクセル マクロ
-
マクロ、PDFを任意のフォルダへ...
-
サムネイルの保存場所
-
SONY Music Center For PC に付...
-
Thunderbird 添付ファイルの保...
-
デスクトップ保存だけ遅い
-
デスクトップに保存した壁紙はH...
-
mhtファイルが開けないです
-
共有フォルダの情報がリアルタ...
-
保存先を記憶する
-
画像ファイル名で検索しても表...
-
インターネットで閲覧した画像...
-
Sonic Stage ファイルの保存先
-
保存したWebページが見られなく...
-
勝手にフォルダーが出来る。
-
クライアントは要求された特権...
-
「名前を付けてページを保存」...
おすすめ情報