プロが教えるわが家の防犯対策術!

VBAでWebページをMHTMLファイルで保存して、Chromeで表示がしたいです。
VBAでWebページをMHTMLで保存するマクロは下記の通りで保存ができました。

---------------------------
Public Sub GetUrlPerfectWeb(ByVal downLoadURL As String, ByVal outFileName As String)
Const cdoSuppressNone As Long = 0
Const adSaveCreateOverWrite As Long = 2
Dim msg As Object ' // CDO.Message
Dim stm As Object ' // ADODB.Stream
Set msg = CreateObject("CDO.Message")
msg.CreateMHTMLBody downLoadURL, cdoSuppressNone, "", ""
Set stm = msg.GetStream
stm.SaveToFile outFileName, adSaveCreateOverWrite
stm.Close
Set stm = Nothing
Set msg = Nothing
End Sub
---------------------------

上記で保存したファイルをIE9だと表示できるのですが、Chromeだとファイルの中身?の文字列がそのまま表示されてしまい、テキストエディタで開いた様な状態になってしまいます。VBAで保存したMHTMLファイルをChromeで表示できるようにするにはどうしたらよいでしょうか?

Chromeが悪いのか、VBAが悪いのか分からない状況ですが、こちらに投稿させていただきます。

なお、ChromeはデフォでMHTMLファイルは表示できないので、以下を参考にMHTMLを有効化しています。
http://qiita.com/takoratta/items/aa943b35ce5a439 …

また、ChromeでCtr+SからMhtml形式で保存したファイルはChromeでもIEでも表示できます。

--
エクセル2013
Chrome バージョン 46.0.2490.86 m
IE 9.0.8...

A 回答 (1件)

具体的な対処方法ではありませんが・・・。



MHTMLだからということではなく、HTMLでもCGIから出力すると同様の現象が起こる場合があります。
CGIの場合だと、ファイル出力の先頭で「Content-type:text/html」を出力してから出力します。
これを忘れると、IEでは表示されるがChromeではソースが表示されてしまいます。
本来は出力が必要な項目なのですが、IEはあいまいに出来ていて表示出来てしまいます。

VBAはマイクロソフトが開発していますので、その辺があいまいになっている可能性があり、
あくまでも想像ですが、VBAの問題だと思います。

解決方法がわかりませんが、参考になれば・・・。
    • good
    • 0
この回答へのお礼

ありがとうございます。

VBAで保存したMHTMLファイルは
「Content-Type: multipart/related;」となっており、

ChromeのCtr+Sで保存した場合は
「Content-Type: multipart/related;
type="text/html";」

となっていたため、試しに、VBAで保存したファイルをテキストエディタで開いて、「type="text/html";」を追加してみましたが、動作は同じでした。やなりVBAで保存したMHTMLファイルはChromeでは開けませんでした。

お礼日時:2015/11/24 22:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!