Friday, 15 March 2013

vbscript - Open file dialog to select XML file -



vbscript - Open file dialog to select XML file -

i have vbscript selects file c: drive , gets info tag on xml file want user able select file dialog cant seem done, here script:

dim xmldoc, objnodelist, plot, fin set xmldoc = createobject("msxml2.domdocument") xmldoc.load("c:\users\user\documents\vbscript\mlb.xml") set objnodelist = xmldoc.getelementsbytagname("league") set objfso=createobject("scripting.filesystemobject") ' create file outfile= "c:\users\user\documents\vbscript\leagues.txt" set objfile = objfso.createtextfile(outfile,true) if objnodelist.length > 0 each x in objnodelist plot= x.getattribute("name") 'write file objfile.write plot & vbcrlf next else msgbox " field not found." end if objfile.close

any help appreciated.

for windows xp can utilize useraccounts.commondialog object, see documentation more details in short it's this:

set dlg = createobject("useraccounts.commondialog") dlg.initialdir = createobject("wscript.shell").specialfolders("mydocuments") dlg.filter = "xml files|*.xml" if dlg.showopen <> 0 set xmldoc = createobject("msxml2.domdocument") xmldoc.load(dlg.filename) ' code end if

note i'm using wscript.shell object user's documents folder (so don't have hard-code it). i'd suggest same thing output file.

unfortunately object has been removed in windows 7 (maybe because of security issues) have utilize else. there many candidates, let's see of them.

easier method utilize comdlg32.dll this:

set dlg = createobject("mscomdlg.commondialog.1") dlg.initialdir = createobject("wscript.shell").specialfolders("mydocuments") dlg.filter = "xml files|*.xml"

this dll seems don't registered on every system, if case have download it in c:\windows\system32 , register com objects regsrv32.

a decent alternative utilize shell object (explore methods on msdn):

set dlg = createobject("shell.application") set selectedfile = objshell.browseforfolder(0, "xml file:", &h00004000&, "c:\") if not selectedfile nil set xmldoc = createobject("msxml2.domdocument") xmldoc.load(selectedfile.self.path) end if

that isn't true open file dialog browse folder dialog files, improve solution utilize getopenfilename, code longer please refer this article total source , details. in short have import function:

declare function getopenfilename lib "comdlg32.dll" alias "getopenfilenamea" (ofn openfilename) boolean

you may want take this code on github, handles of tricky cases (yes such simple task isn't simple!!!)

xml vbscript

No comments:

Post a Comment