Тема: HTA/VBS: запуск в IE диалога "Save As..." - выходной файл без BODY
Захотел внутренности одного из элементов окна HTA сохранить в виде html-документа. Для этого создаю объект IE, пишу в него содержимое и вызываю метод объекта IE - диалог сохранения файла с подтверждением имени.
Смотрел на - Метод ExecWB
В созданном окне красиво видно переданное содержимое, но с записью файла заморочка:
1) если не указывать в "title" документа расширений файла, то предлагается по умолчанию тип файла
"Webarchive, single file (mht)" и по кнопке Save процесс сохранения какбы мелькает и без ошибок, но фактически файл так и не сохраняется;
2) если добавить в "title" расширение ".html", то предлагается уже "Webpage, complete (htm/html)", но документ сохраняется только с HEAD-ом - между тегами BODY - пусто;
3) если вручную выбрать тип "Webpage, HTML only (html)" - все чудесно сохраняется. А менять тип файла вручную совсем не хочется ![]()
Пришлось сохранить подготовленное для вывода в IE-документ содержимое в свой текстовый html-файл и запустить его через Run объекта "WScript.Shell". Но предварительное создание своего файла как-то не очень интересно.
Хотелось бы разобраться с таким поведением метода ExecWB...
'--- Открытие пустого документа в IE, перенос в него содержимого (параметр), запуск команды в IE "Save As..."'
Sub ue_btSaveLog_qqqq (param_innerHTML)
' формируем заголовок окна'
Dim sTitle
sTitle = "test_test_test"
Dim objIE
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Navigate "about:blank"
While objIE.Busy
Wscript.Sleep 200
Wend
' начинаем формировать строку для записи в документ'
sTitle = sTitle & ".html"
Dim sOut
sOut = "<HTML><HEAD>" &vbCrLf& "<TITLE>" & sTitle & "</TITLE>" &vbCrLf
sOut = sOut & "<meta http-equiv=content-type content=""text/html; charset=windows-1251"">" &vbCrLf
' добавляем стили'
sOut = sOut & _
"<STYLE>" & _
"*{font-family:Verdana;font-size:10;}" & _
"</STYLE>" & _
"</HEAD>" &vbCrLf
' добавляем "тело" - содержимое протокола'
sOut = sOut & "<BODY>" & param_innerHTML & "</BODY></HTML>"
objIE.Document.Write sOut
objIE.Visible = 1
Wscript.Sleep 500
objIE.ExecWB 4,1,0,0 'Save as...'
End SUBСкрипт предоставлен не в полном объеме, а только чуть подчищенная функция работы с IE.

