Vbscript saving pdf from Internet Explorer -


i wrote script open excel file contains hyperlinks. vbscript opens hyperlink internet explorer, , save page pdf pdf creator default printer.it in loop. issue script fails each , every time in different step. not know how rewrite script make stable one.

dim wshshell dim lastrow dim objfso   '#### cleanup left-over excel processes ####' dim objprocess, colprocess, strcomputer, objwmiservice dim strprocesskill  strcomputer = "." strprocesskill = "'excel.exe'"  set objwmiservice = getobject("winmgmts:" _ & "{impersonationlevel=impersonate}!\\" _  & strcomputer & "\root\cimv2")   set colprocess = objwmiservice.execquery _ ("select * win32_process name = " & strprocesskill ) each objprocess in colprocess objprocess.terminate() next  '#### end of cleanup left-over excel processes ####'   'open excel file , start macro code dim ws_path ws_path= replace(wscript.scriptfullname, wscript.scriptname, "")  set excelobject  = createobject("excel.application") excelobject.visible = true excelobject.workbooks.open(ws_path & "template.xlsm") excelobject.run ("filepreparation")    set wshshell = wscript.createobject( "wscript.shell" ) set objfso = wscript.createobject("scripting.filesystemobject")  'actual date save folder function twodigits(strparam)      if len(strparam) = 1          twodigits = "0" & strparam          else          twodigits = strparam      end if  end function   dtmactualtime = date  stractualtime = twodigits(day(dtmactualtime)) &  twodigits(month(dtmactualtime)) & year(dtmactualtime) strpath = replace(wscript.scriptfullname, wscript.scriptname, "")  folderpath= strpath & "outputs\"  if not objfso.folderexists(folderpath & stractualtime & "\")     objfso.createfolder (folderpath & stractualtime & "\") end if  savepath= folderpath & stractualtime & "\"   lastrow = excelobject.activeworkbook.sheets("links").cells(excelobject.activeworkbook.sheets("links").rows.count, "i").end("-4162").row  'loop through links in excel file prntname = "pdfcreator" num = 2  while (num <= lastrow)     on error resume next                 excelobject.activeworkbook.sheets("links").cells(1, 9).value = excelobject.activeworkbook.sheets("links").cells(num, 10).value         pdfname = excelobject.activeworkbook.sheets("links").cells(1, 9).value         urlname= excelobject.activeworkbook.sheets("links").cells(num, 9).value              'check if set of file has run, if quit script             set objfolder = objfso.getfolder(savepath)             set objfiles = objfolder.files                  i=0 objfiles.count                     if objfso.fileexists(savepath & pdfname & ".pdf" )                         'wscript.echo  "already run file!"                         excelobject.displayalerts = false                         excelobject.quit                         wscript.quit                      end if                 next               'default printer pdfcreator             dim objprinter             set objprinter = createobject("wscript.network")             objprinter.setdefaultprinter prntname                 'open url             set ie = createobject("internetexplorer.application")             ie.visible = true             ie.navigate urlname             wscript.sleep 5000             while ie.busy                 wscript.sleep 1000             wend              'activate iexplorer , print window pop             set processes = getobject("winmgmts:").instancesof("win32_process")             intprocessid = ""             each process in processes                 if strcomp(process.name, "iexplore.exe", vbtextcompare) = 0                     intprocessid = process.processid                     exit                 end if             next             if len(intprocessid) > 0                 createobject("wscript.shell")                     .appactivate intprocessid                  end             end if              wscript.sleep 3000             ie.execwb 6, 1             wscript.sleep 5000             wshshell.sendkeys  "{enter}"              wscript.sleep 5000               'activate pdfcreator window , click on save button             set processes = getobject("winmgmts:").instancesof("win32_process")             intprocessid = ""             each process in processes                 if strcomp(process.name, "pdfcreator.exe", vbtextcompare) = 0                     intprocessid = process.processid                     exit                 end if             next             if len(intprocessid) > 0                 createobject("wscript.shell")                     .appactivate intprocessid                  end             end if              wscript.sleep 5000             wshshell.sendkeys  "{enter}"              wscript.sleep 5000               'enter save path , close adobe , internet explorer             wshshell.sendkeys  savepath & pdfname & ".pdf"              wscript.sleep 5000             wshshell.sendkeys  "{enter}"              wscript.sleep 5000             wshshell.sendkeys "(%{f4})" 'alt + f4              wscript.sleep 5000             ie.quit             wscript.sleep 5000                    'check if new pdf exists or not in folder, if quit script             i=0 objfiles.count                 if not objfso.fileexists(savepath & pdfname & ".pdf" )                       num = num - 1                 end if             next       num = num + 1 loop wscript.sleep 5000  excelobject.displayalerts = false excelobject.quit wscript.quit 

maybe running out of room. seem creating ie objects never releasing them. perhaps add "ie.quit", followed wait loop, followed "set ie = nothing", when have printed each page. or reuse object without createobject each loop.


Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -