Страницы: 1
RSS
Открытие и Сохранение IE файлов из VBA
 
Уважаемые форумчане, возникла необходимость пересохранить тучу файлов *.mht в формате *.html. Есть макрос, считывающий построчно содержимое файлов и, в зависимости от начинки строки, собирающий ФИО клиентов в таблицу. Не было проблем, пока файлы были небольшие и вне зависимости от расширения (*.mht или *.html) имели текстовое содержимое. Теперь же, файлы *.mht выросли и, будучи веб-архивами, содержат в себе архив и считывание их построчно теряет смысл (в строках - абра-кадабра)). Как выход - пересохранять все файлы *.mht в формате *.html, вызывая в макросе IE. Буду благодарен за вариант решения этой задачи (возможно, будут другие идеи...).
 
Как сохранить документ из IE - не знаю (вроде там не всё так просто)

Попробуйте делать это через Word - там есть метод SaveAs
(Word должен понимать форматы файлов mht и html)
 
гуглить не пробовали? http://yandex.ru/yandsearch?text=%D1%81%D1%89%D1%82%D0%BC%D1%83%D0%BA%D0%B5%20%D1%8C%D1%­80%D0%B5%20%D0%B5%D1%89%20%D1%80%D0%B5%D1%8C%D0%B4&clid=9403&lr=20032
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Нагуглил примерно такой скрипт (20-23 строки - то, что сам добавил - часть отвечающую за сохранение в htm)..., но проблема в том, что после открытия файла mht в окне IE, окно IE видимо перестает быть активным (хотя и остается на экране) и команды-клавишы по сохранению файла летят в другие окна (в проводник, например). Подскажите, как сделать снова активным окно IE и те ли команды я ему передаю?...


Код
Set sh = CreateObject("WScript.Shell")
Set ie = CreateObject("InternetExplorer.Application")
ie.visible=True
Set fso = CreateObject("Scripting.FileSystemObject")
Set outf = fso.CreateTextFile("convert.log")
Set fld = fso.GetFolder(".")
For Each fi In fld.Files
If UCase(Right(fi, 4)) = ".MHT" Then 
   ie.navigate(fi)
   i1=InStrRev(fi, ".")
   i2=InStrRev(fi, " ", i1)
   nfi = Mid(fi, i2+1, i1 - i2 - 1)
   Do While ie.busy
     WScript.Sleep 100
   Loop
   sh.SendKeys("{F10}{Down 5}{Enter}" & nfi & "{Enter}")
   Do While ie.busy
     WScript.Sleep 100
   Loop
   sh.SendKeys("{F10}{Down 8}{Enter}" & nfi & "{Tab}{Down 2}{Enter 2}") 
   Do While ie.busy 
     WScript.Sleep 100 
   Loop
   outf.WriteLine(fi & " saved as " & nfi & ".htm")
 End If
Next
Set fld = Nothing
outf.close
Set outf = Nothing
Set fso = Nothing
ie.quit
Set ie = Nothing
Set sh = Nothing
Изменено: vk72 - 04.08.2014 14:50:32
 
Игорь, попробовал вручную сохранить в Word файл mht как html - на выходе Word-овский html, весьма своеобразный, в общем Word, как конвертер, не годится.
Изменено: vk72 - 14.08.2014 14:09:35
Страницы: 1
Читают тему
Наверх