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
Post a Comment