Dialogfenster zur Dateiauswahl

saumann

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich bin noch Anfänger in der Branche und versuche mittlerweile schon verzweifelt
icon9.png
für eine RT-PC Win 7 ein VBS Programm zu schreiben welches ein Dialogfenster zur Dateiauswahl öffnen und in eine Variable schreiben soll. Ich habe schon diverse Skripte aus dem Internet ausprobiert, leider ohne Erfolg.
Software : Windows 7 Pro 64 Bit, WinCC Flexible Advanced 2008 SP3. Hat jemand hierzu eine Lösung?

Das ist mein letzter Stand.
Vielen Dank im Voraus
Mfg

Dim objShell, fs, BrowseForFile, fso, TABfile, zeile, i, laenge, parameter, wert

Set objShell = CreateObject("Shell.Application")
Set fs = objShell.BrowseForFolder(0, "Choose for file:", &H4000)
BrowseForFile = fs.self.Path
Set fso = CreateObject( "Scripting.FileSystemObject" )
Set TABfile = fso_OpenTextFile(fs.Value,False )
Do While TABfile.AtEndOfStream <> True
zeile = TABfile.ReadLine
i=InStr(zeile,"=") 'trennzeichen suchen
laenge = Len(zeile)
parameter = Left(zeile,i-1)
wert = Right(zeile,laenge -i )
'zuweisungen Radial

If parameter = "Fz1" Then ZZ_Fz_1 = wert
If parameter = "Fz2" Then ZZ_Fz_2 = wert
Loop
 
Hallo,

habe mein Programm so hinbekommen, dass sich ein Dialogfenster öffnet. Ich verstehe aber nicht wie ich die ausgewählte (*txt) in die Variablen schreiben kann.
Kann mir da bitte jemand helfen?

Hier mein VBS

Code:
Dim oDlg, sIniDir, sFilter, sTitle, GetFileDlgEx, rep
Dim objShell, fs, BrowseForFile, fso, TABfile, zeile, i, laenge, parameter, wert
 Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""")  
 oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';"  
 GetFileDlgEx = oDlg.StdOut.ReadAll  
 
sIniDir = "C:\Windows\*"  
sFilter = "All files (*.*)|*.*|Microsoft Word (*.doc;*.docx)|*.doc;*.docx|Adobe pdf (*.pdf)|*.pdf|Image files (*.gif;*.png;*jpg;*.bmp)|*.gif;*.png;*jpg;*.bmp|Html files (*.htm;*.html;*.mht)|*.htm;*.html;*.mht|"  
sTitle = "GetFileDlg by omen999 2014 - [URL]http://omen999.developpez.com[/URL]"  

Set fso = CreateObject( "Scripting.FileSystemObject" )
Set TABfile = fso.OpenTextFile("GetFileDlgEx")  
Do While TABfile.AtEndOfStream <> True 
zeile = TABfile.ReadLine
i=InStr(zeile,"=") 
laenge = Len(zeile)
parameter = Left(zeile,i-1)
wert = Right(zeile,laenge  -i )
'zuweisungen Radial
 
If parameter = "Fz1" Then ZZ_Fz_1 = wert 
If parameter = "Fz2" Then ZZ_Fz_2 = wert 
 Loop
 
Zuviel Werbung?
-> Hier kostenlos registrieren
dieser teil muss auf jeden fall schon mal
Code:
sIniDir = "C:\Windows\*"  
sFilter = "All files (*.*)|*.*|Microsoft Word (*.doc;*.docx)|*.doc;*.docx|Adobe pdf (*.pdf)|*.pdf|Image files (*.gif;*.png;*jpg;*.bmp)|*.gif;*.png;*jpg;*.bmp|Html files (*.htm;*.html;*.mht)|*.htm;*.html;*.mht|"  
sTitle = "GetFileDlg by omen999 2014 - [URL="http://omen999.developpez.com/"][COLOR=#07466f]http://omen999.developpez.com[/COLOR][/URL]"
vor diesem stehen.
Code:
oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';"

um *.txt zu filtern msst du den sfilter erweitern. z.b. so
Code:
[sFilter = "[B][COLOR=#ff0000]Textdateien (*.txt)|*.txt|[/COLOR][/B]All files (*.*)|*.*|............/CODE]
 
Nachtrag

um einen startpfad vorzugebn muss das so aussehen

sIniDir = "C:\\Windows\\*"
 
Kann es sein, daß Du durch Deinen Dateiauswahl-Dialog die ganze Skript-Engine blockierst (d.h. während der Dialog offen ist, werden keine weiteren Skripte ausgeführt)?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Danke für die Antworten,

habe das Problem jetzt so gelöst
Code:
 GetFileDlgEx = oDlg.StdOut.ReadAll  
' sample test 
sIniDir = "C:\Windows\*"  
sFilter = "All files (*.*)|*.*|Microsoft Word (*.doc;*.docx)|*.doc;*.docx|Adobe pdf (*.pdf)|*.pdf|Image files (*.gif;*.png;*jpg;*.bmp)|*.gif;*.png;*jpg;*.bmp|Html files (*.htm;*.html;*.mht)|*.htm;*.html;*.mht|"  
sTitle = "GetFileDlg"  
Set fso = CreateObject( "Scripting.FileSystemObject" )
Set TABfile = fso.OpenTextFile(GetFileDlgEx)
@ Harald
Ja da hast Du wohl Recht! Wie kann ich das verhindern?

Und noch eine andere Frage
Ich würde gerne aus einem Textfile mehrere Werte zyklisch nacheinander an eine Variable übergeben. Hier ein kleiner TXT Auszug.
Unbenannt.PNG

Ich hätte mir das so vorgestellt
Wert 1000 an Variable "X" übergeben. Nach 100ms dann Wert 2100 usw. bis das Ende erreicht ist.
Ich dachte da an eine FOR Schleife aber irgendwie finde ich da keinen Ansatz dafür.
Ist so etwas überhaupt realisierbar?
 
Zurück
Oben