Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBScript und BatchScript mit OpenFileDialog und SaveFileDialog

Frage Entwicklung Batch & Shell

Mitglied: xstr3ck3rx

xstr3ck3rx (Level 1) - Jetzt verbinden

19.03.2013, aktualisiert 20.03.2013, 1962 Aufrufe, 10 Kommentare, 1 Danke

Hallo Leute!
Ich brauche eure Hilfe um mein vorhandendes VBScript und/oder BatchScript zu modifizieren!

Hallo Leute!
Ich habe aus meiner anderen Frage in diesem Forum ein VBScript bekommen und möchte das nun so modifizieren, dass wenn ich es starte sich ein OpenFileDialog öffnet und ich eine .xls oder eine .xlsx datei auswählen kann und sich anschließend ein SaveFileDialog öffnet, wo ich die Excel Datei als .txt Datei abspeichern kann.
Das konvertieren kann das script schon. Dazu kommt, dass das Script nach jeder Zeile noch ein ";" dran schreibt.
Also benötige ich nur die OpenFileDialog Funktion und die SaveFileDialog Funktion.

Hier mein VBScript:

01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
Set Args = WScript.Arguments 
03.
XLSDatei = Args(0) 
04.
TXTDatei = Args(1) 
05.
 
06.
If Not fso.FileExists(XLSDatei) Then WScript.Quit(1) 
07.
 
08.
Set XL = WScript.CreateObject("Excel.Application") 
09.
XL.Visible = False 
10.
XL.DisplayAlerts = False 
11.
Set WB = XL.Workbooks.Open(XLSDatei) 
12.
WB.SaveAs TXTDatei, 6, , , , , , , , , , True 
13.
WB.Saved = True 
14.
XL.Application.Quit 
15.
WScript.Sleep 1000 
16.
T = fso.OpenTextfile(TXTDatei).ReadAll 
17.
fso.CreateTextFile(TXTDatei).Write Replace(T, vbNewLine, ";" & vbNewLine)
Ich hoffe ihr könnt mir helfen. ;)
Schon mal ein fettes Dankeschön im Vorraus!

Mit freundlichen Grüßen
xstr3ck3rx
Mitglied: rubberman
19.03.2013 um 19:37 Uhr
Hallo xstr3ck3rx.

Da du Excel nun sowieso schon im Hintergrund öffnest, kannst du es auch gleich sichtbar öffnen und die entsprechenden Dialoge von Excel nutzen.

Grüße
rubberman
Bitte warten ..
Mitglied: xstr3ck3rx
20.03.2013, aktualisiert um 10:44 Uhr
Hallo rubberman!
Erst mal danke für deine Antwort.
Ich soll dieses Tool für die Arbeit fertigstellen und ich habe das VBScript, was auch oben steht und habe dies per batch gestartet. In Batch wurde dann nach einer Excel Datei (xls oder xlsx) abgefragt, die sich auf einem bestimmten Pfad befinden muss (Bei mir habe ich den Desktop eingestellt). So jetzt möchte ich die ganze Geschichte aber so modifizieren, dass sich wenn ich das VBScript oder das Batch script startet, sich ein OpenFileDialog öffnet, wo ich dann eine .xls oder eine .xlsx Datei auswählen kann und anschließend ein SaveFileDialog startet, wo ich angeben kann, wo die ausgewählte Excel Datei(.xls oder .xlsx) als txt gespeichert werden soll. Das konvertieren ist, wie schon gesagt im VBScript enthalten, mir fehlt nur der OpenFileDialog und der SaveFileDialog. Ich poste hier mal mein etwas längeres Batch script, was ich wenn ich eine OpenFile- und eine SaveFileDialog Funktion habe, wahrscheinlich nicht mehr benötigen werde.

01.
@echo off 
02.
title Excel to TXT Converter 
03.
color 1E 
04.
:start 
05.
color 1E 
06.
echo. 
07.
set /P "Datei1=Bitte geben Sie den Namen der Excel Datei ein: " 
08.
if "%Datei1%" == "" goto fehler 
09.
if "%Datei1%" == " " goto fehler 
10.
if NOT exist C:\Users\%username%\Desktop\"%Datei1%".xls goto komisch 
11.
if exist C:\Users\%username%\Desktop\"%Datei1%".xls goto komisch2 
12.
:komisch 
13.
if NOT exist C:\Users\%username%\Desktop\"%Datei1%".xlsx goto falsch2 
14.
if exist C:\Users\%username%\Desktop\"%Datei1%".xlsx goto weiter0 
15.
:komisch2 
16.
if not exist C:\Users\%username%\Desktop\"%Datei1%".xlsx goto weiter0 
17.
:weiter0 
18.
color 1E 
19.
echo. 
20.
set /P "Datei2=Bitte geben Sie den Namen des Ausgabedokuments ein: " 
21.
if "%Datei2%" == "" goto fehlerz 
22.
if exist C:\Users\%username%\Desktop\"%Datei2%".txt goto falsch1 
23.
if NOT exist C:\Users\%username%\Desktop\"%Datei1%".xls goto komisch3 
24.
if exist C:\Users\%username%\Desktop\"%Datei1%".xls goto komisch4 
25.
echo. 
26.
:komisch3 
27.
if NOT exist C:\Users\%username%\Desktop\"%Datei1%".xlsx goto falsch2 
28.
if exist C:\Users\%username%\Desktop\"%Datei1%".xlsx goto weiter3 
29.
:komisch4 
30.
if not exist C:\Users\%username%\Desktop\"%Datei1%".xlsx goto weiter2 
31.
if exist C:\Users\%username%\Desktop\"%Datei1%".xlsx goto zwischen3 
32.
:haha3 
33.
if exist C:\Users\%username%\Desktop\"%Datei2%".txt goto falsch1 
34.
if NOT exist C:\Users\%username%\Desktop\"%Datei2%".txt goto weiter2 
35.
:weiter2 
36.
cscript //nologo "C:\Excel to TXT\Scripts\XL2CSV.vbs" "C:\Users\%username%\Desktop\%Datei1%.xls" "C:\Users\%username%\Desktop\%Datei2%.txt" 
37.
goto test85 
38.
:weiter3 
39.
cscript //nologo "C:\Excel to TXT\Scripts\XL2CSV.vbs" "C:\Users\%username%\Desktop\%Datei1%.xlsx" "C:\Users\%username%\Desktop\%Datei2%.txt" 
40.
goto test85 
41.
:test85 
42.
if NOT exist C:\Users\%username%\Desktop\"%Datei2%".txt goto test88 
43.
if exist C:\Users\%username%\Desktop\"%Datei2%".txt goto Ende1 
44.
:test88 
45.
color C4 
46.
echo msgbox "%Datei2%.txt konnte nicht erstellt werden!" > %tmp%\tmp.vbs 
47.
cscript /nologo %tmp%\tmp.vbs 
48.
del %tmp%\tmp.vbs 
49.
cls 
50.
goto start 
51.
:zwischen4 
52.
echo. 
53.
echo Waehle zwischen: 
54.
echo. 
55.
echo %Datei1%.xls mit der Zahl 1  
56.
echo. 
57.
echo %Datei1%.xlsx mit der Zahl 2 
58.
echo. 
59.
SET /p wahl= 
60.
if '%wahl%' EQU '1' goto haha1 
61.
if '%wahl%' EQU '2' goto haha2 
62.
if '%wahl%' NEQ '1' goto piep 
63.
if '%wahl%' NEQ '2' goto piep 
64.
:haha1 
65.
if exist C:\Users\%username%\Desktop\"%Datei2%".txt goto falsch1 
66.
if NOT exist C:\Users\%username%\Desktop\"%Datei2%".txt goto weiter2 
67.
:haha2 
68.
if exist C:\Users\%username%\Desktop\"%Datei2%".txt goto falsch1 
69.
if NOT exist C:\Users\%username%\Desktop\"%Datei2%".txt goto weiter3 
70.
:zwischen3 
71.
echo msgbox "Waehle zwischen: %Datei1%.xls mit der Zahl 1 | %Datei1%.xlsx mit der Zahl 2" > %tmp%\tmp.vbs 
72.
cscript /nologo %tmp%\tmp.vbs 
73.
del %tmp%\tmp.vbs 
74.
cls 
75.
goto zwischen4 
76.
:piep 
77.
echo msgbox "Ungueltige Eingabe!" > %tmp%\tmp.vbs 
78.
cscript /nologo %tmp%\tmp.vbs 
79.
del %tmp%\tmp.vbs 
80.
cls 
81.
goto zwischen4 
82.
:falsch2 
83.
color C4 
84.
echo msgbox "%Datei1%.xls(x) konnte nicht gefunden werden!" > %tmp%\tmp.vbs 
85.
cscript /nologo %tmp%\tmp.vbs 
86.
del %tmp%\tmp.vbs 
87.
cls 
88.
goto neustart 
89.
:Ende1 
90.
echo msgbox "%Datei2%.txt wurde erstellt!" > %tmp%\tmp.vbs 
91.
cscript /nologo %tmp%\tmp.vbs 
92.
del %tmp%\tmp.vbs 
93.
goto schliessen 
94.
:fehler 
95.
color C4 
96.
echo msgbox "Ungueltige Eingabe!" > %tmp%\tmp.vbs 
97.
cscript /nologo %tmp%\tmp.vbs 
98.
del %tmp%\tmp.vbs 
99.
cls 
100.
goto start 
101.
:fehlerz 
102.
color C4 
103.
echo msgbox "Ungueltige Eingabe!" > %tmp%\tmp.vbs 
104.
cscript /nologo %tmp%\tmp.vbs 
105.
del %tmp%\tmp.vbs 
106.
cls 
107.
echo. 
108.
echo Bitte geben Sie den Namen der Excel Datei ein: %Datei1%  
109.
goto weiter0 
110.
:falsch1 
111.
color C4 
112.
echo msgbox "%Datei2%.txt existiert bereits. Bitte waehlen Sie einen anderen Namen!" > %tmp%\tmp.vbs 
113.
cscript /nologo %tmp%\tmp.vbs 
114.
del %tmp%\tmp.vbs 
115.
cls 
116.
echo. 
117.
echo Bitte geben Sie den Namen der Excel Datei ein: %Datei1% 
118.
goto weiter0 
119.
:neustart 
120.
@call %0 
121.
goto neustart2 
122.
:neustart2 
123.
exit 
124.
:schliessen

Das heißt ich möchte nur eine OpenFileDialog und eine SaveFileDialog Funktion ins Batchscript oder ins VBScript einbauen, sodass die eigentliche Funktion des VBScripts aber bleibt.

Mit freundlichen Grüßen
xstr3ck3rx

PS: Sry für das ständige Wiederholen, es ist noch sehr früh *gähn*
Bitte warten ..
Mitglied: rubberman
20.03.2013 um 19:20 Uhr
Hallo xstr3ck3rx,

sorry, habe mir deinen Batch jetzt nicht genauer angesehen. Der würde sich vom ersten Überfliegen sicher auf ein Viertel eindampfen lassen. Aber egal, das war nicht deine Frage. Wie schon gesagt, öffnest du sowieso Excel im Hintergrund und Excel hat die entsprechenden Dialoge. Wie du ja bereits weißt, lässt sich Excel recht gut per VBScript steuern, also auch die Dialoge.

Habe das Script von bastla mal entsprechend angepasst.
01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
 
03.
Set XL = WScript.CreateObject("Excel.Application") 
04.
XL.Visible = True 
05.
XL.DisplayAlerts = False 
06.
XLSDatei = XL.GetOpenFilename("Excel-Dateien (*.xls; *.xlsx),*.xls;*.xlsx", _ 
07.
  1, "Excel-Datei zum konvertieren öffnen ...", , False) 
08.
If XLSDatei <> False Then 
09.
  Set WB = XL.Workbooks.Open(XLSDatei) 
10.
  TXTDatei = XL.GetSaveAsFilename(fso.GetBaseName(XLSDatei) & ".txt", _ 
11.
    "Text-Dateien (*.txt), *.txt", 1, "Text-Datei speichern unter ...") 
12.
  If TXTDatei <> False Then 
13.
    WB.SaveAs TXTDatei, 6, , , , , , , , , , True 
14.
    WB.Saved = True 
15.
  End If 
16.
End If 
17.
XL.Application.Quit 
18.
If TXTDatei <> False Then 
19.
  WScript.Sleep 1000 
20.
  T = fso.OpenTextfile(TXTDatei).ReadAll 
21.
  fso.CreateTextFile(TXTDatei).Write Replace(T, vbNewLine, ";" & vbNewLine) 
22.
End If
Evtl. funktioniert das auch mit
XL.Visible = False
in der 4. Zeile, einfach testen.

Die Doku findest du hier bzw. hier.

Grüße
rubberman
Bitte warten ..
Mitglied: xstr3ck3rx
21.03.2013 um 08:43 Uhr
Hallo rubberman!
VIELEN LIEBEN DANK!
Ich werde es gleich mal testen! ;)

Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: xstr3ck3rx
21.03.2013, aktualisiert um 12:31 Uhr
Hallo rubberman!
Eine Frage allerdings habe ich noch.
Kann man die VBS Datei in eine EXE umwandeln? Weil die ganzen converter im Internet funktionieren aber machen eine msgbox bevor das script startet, wo drin steht, dass es nur die Demo Version sei.
Wüsstest du da eine kostenlose Lösung?

Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: rubberman
21.03.2013, aktualisiert um 21:05 Uhr
Hallo xstr3ck3rx.

VBScript ist, wie der Name schon sagt, eine Scriptsprache die interpretiert und nicht kompiliert wird. Von irgendwelchen Krücken von Konvertern die versuchen daraus eine *.exe Datei zu machen, halte ich überhaupt nichts.
Willst du ein Executable, lerne eine kompilierbare Programmiersprache.

Grüße
rubberman
Bitte warten ..
Mitglied: xstr3ck3rx
22.03.2013 um 09:34 Uhr
Hallo rubberman!
okay und Vielen Dank für deine Antwort.

Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Mitglied: xstr3ck3rx
22.03.2013, aktualisiert um 14:29 Uhr
Hallo Leute!
Ich hätte da noch eine letzte Frage:
Unzwar möchte ich in mein VBScript noch eine weitere Funktion einbauen:
Das VBScript soll immer in der umgewandelten txt datei in der 3. Spalte im Textdokument so viele "0" VOR die Zahl machen, sodass die Zahl immer 10 stellig ist.

Also hier ein Beispiel wie es vorher im Textdokument aus sieht:

Beispiel;Hallo;350;Beispiel2;Tschüss;
Beispiel;Hallo;42;Beispiel2;Tschüss;
Beispiel;Hallo;3505;Beispiel2;Tschüss;

Und hier wie es nachher in der txt aussehen soll:

Beispiel;Hallo;0000000350;Beispiel2;Tschüss;
Beispiel;Hallo;0000000042;Beispiel2;Tschüss;
Beispiel;Hallo;0000003505;Beispiel2;Tschüss;

Also wie du siehst immer eine 10stellige Zahl in der 3. Spalte aber wirklich nur 10 stellig und wirklich nur in der 3. Spalte.

Schon mal danke im Vorraus!!! ;)

Mf
xstr3ck3rx

PS: Vielleicht kann man das im script dann so vormulieren, dass nach jedem 2. ";" so viele nullen müssen, dass die gesamte Zahl 10 stellig ist.
Bitte warten ..
Mitglied: rubberman
22.03.2013 um 22:52 Uhr
Hallo xstr3ck3rx,

dazu muss die Textdatei zeilenweise eingelesen werden und an den Semikola aufgesplittet und neu zusammengesetzt werden.

01.
Set fso = CreateObject("Scripting.FileSystemObject") 
02.
 
03.
Set XL = WScript.CreateObject("Excel.Application") 
04.
XL.Visible = True 
05.
XL.DisplayAlerts = False 
06.
XLSDatei = XL.GetOpenFilename("Excel-Dateien (*.xls; *.xlsx),*.xls;*.xlsx", _ 
07.
  1, "Excel-Datei zum konvertieren öffnen ...", , False) 
08.
If XLSDatei <> False Then 
09.
  Set WB = XL.Workbooks.Open(XLSDatei) 
10.
  TXTDatei = XL.GetSaveAsFilename(fso.GetBaseName(XLSDatei) & ".txt", _ 
11.
    "Text-Dateien (*.txt), *.txt", 1, "Text-Datei speichern unter ...") 
12.
  If TXTDatei <> False Then 
13.
    WB.SaveAs TXTDatei, 6, , , , , , , , , , True 
14.
    WB.Saved = True 
15.
  End If 
16.
End If 
17.
XL.Application.Quit 
18.
If TXTDatei <> False Then 
19.
  WScript.Sleep 1000 
20.
  T = "" 
21.
  Set F = fso.OpenTextfile(TXTDatei) 
22.
  Do While Not F.AtEndOfStream 
23.
    A = Split(F.ReadLine, ";") 
24.
    On Error Resume Next 
25.
    If IsNumeric(A(2)) Then A(2) = Right("0000000000" & A(2), 10) 
26.
    On Error Goto 0 
27.
    T = T & Join(A, ";") & ";" & vbNewLine 
28.
  Loop 
29.
  F.Close 
30.
  fso.CreateTextFile(TXTDatei).Write T 
31.
End If
Grüße
rubberman
Bitte warten ..
Mitglied: xstr3ck3rx
31.03.2013 um 13:39 Uhr
Hallo rubberman!
Vielen Dank für dieses wunderbare Script.
Sry das es so lange gedauert hat, dass ich antworten konnte.
VIELEN DANK!

Mit freundlichen Grüßen
xstr3ck3rx
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Entwicklung
gelöst Get ip from external txt file and use in vbscript (5)

Frage von thankusomuch zum Thema Entwicklung ...

VB for Applications
gelöst Vbscript bestimmte Zeile ungeachtet der Nummerierung löschen (4)

Frage von aletri zum Thema VB for Applications ...

Windows 7
Windows 7: Per VBScript Netzwerkdrucker ersetzen (1)

Frage von donnyS73lb zum Thema Windows 7 ...

Batch & Shell
gelöst VBscript - WMI - ServerAddress + ConnectionStatus (Windows 7) (10)

Frage von Highend01 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...