VBScript - Creating a Microsoft Web Archive (*.mht) File Programmatically
VBScript - Creating a Microsoft Web Archive (*.mht) File Programmatically
Submitted by Corey Goldberg on Wed, 10/01/2007 - 21:23.Normally you would create an MHT by using the "Save As..." option in IE. This script allows you to create one programmatically.
Sample Usage:
for a remote html file:
>cscript mht_converter.vbs http://www.example.com/temp/foo.html foo.mht
for a local html file:
>cscript mht_converter.vbs file:/temp/foo.html foo.mht
... And now the code:
'mht_converter.vbs
Const adSaveCreateNotExist = 1
Const adSaveCreateOverWrite = 2
Const adTypeBinary = 1
Const adTypeText = 2
Set args = WScript.Arguments
if args.Count = 0 then
WScript.Echo "Usage:
[CScript | WScript] mht_converter.vbs <html file> <mht filename>"
WScript.Quit 1
end if
Set objMessage = CreateObject("CDO.Message")
objMessage.CreateMHTMLBody args.Item(0)
SaveToFile objMessage, args.Item(1)
Sub SaveToFile(Msg,
Fn)
Dim Strm,
Dsk
Set Strm = CreateObject("ADODB.Stream")
Strm.Type = adTypeText
Strm.Charset = "US-ASCII"
Strm.Open
Set Dsk = Msg.DataSource
Dsk.SaveToObject Strm, "_Stream"
Strm.SaveToFile Fn, adSaveCreateOverWrite
End Sub
Caveat: I am not a VB programmer... don't pretend to be... and never wanna be. This was just something I needed to do and this was the only way I could quickly figure out how to do it.
