koluschkib
Goto Top

Abfrage box in vbs

moin admins,

hab mal ne frage bezüglich VBS

und zwar soll ich mehrere möglichkeiten einer abfrage in ein script einbauen.

ist es möglich eine art abfrage box in ein vbs script zu schreiben, die 4 Buttons hat und hinter denn buttons genau befehle hinterlegt werden?

1.Button = Abbrechen
2.Button = Ordner nicht erstellen, aber die Datei in den bestehenden Ordner kopiern
3.Button = Bestehenden Ordner umbenennen und sprung im script zu der stelle wo der ordner mit der inputboxeingabe denn ordner erstellt
4.Button = Vorhandenen Ordner löschen und sprung zur Inputboxeingabe

im gesamten sollen 5 möglichkeiten sein, wobei eine schon erledigt ist, da wenn der ordner nicht existiert er einfach erstellt wird und die dateien kopiert werden
vielleicht hat einer von euch nen tipp, die üblichen möglichkeiten habe ich schon versucht. google. msdn scriptcenter usw.
für weiter hilfen bin ich dankbar

gruß

koluschki

Content-ID: 142293

Url: https://administrator.de/contentid/142293

Ausgedruckt am: 15.11.2024 um 15:11 Uhr

77559
77559 06.05.2010 um 12:06:40 Uhr
Goto Top
VBscript hat keine frei gestaltbaren Dialogboxen,
Du musst dich schon an die vorgegebene Syntax der MsgBox bzw der InputBox halten.

Gruß
LotPings
koluschkiB
koluschkiB 06.05.2010 um 13:09:32 Uhr
Goto Top
hey und danke für die antwort

frage:

ist es möglich die schaltflächen texte frei zu definieren? oder muss man sich wirklich an die befehle die da sind halten?

hab folgendes schon fertig

dim fs, a, f1

a = inputbox("Gebe den Namen des Ordners an!")  
set fs = CreateObject("Scripting.FileSystemObject")  
Set fs = CreateObject("Scripting.FileSystemObject")  
Set f1 = fs.GetFile("c:\beta\a.txt")  

if fs.folderexists ("d:\"& a) Then  
antwort = MsgBox("Der Ordner Existiert bereits, wie wollen sie weiter vorgehen?", vbOkCancel + vbQuestion, "Was tun?")  

else
fs.createfolder("d:\" & a)  
f1.Copy "d:\" & a & "\"  
msgbox "Der Ordner wurde angelegt und Dateien kopiert!"  

End If

ich muss ja 4 Buttons haben ggf wäre es möglich, einfach durch klicken eines Buttons eine weiter msgbox aufzurufen. aber da wäre ja noch das problem mit dem text der Buttons ne art alias bezeichnung

gruß

koluschki
77559
77559 06.05.2010 um 13:26:29 Uhr
Goto Top
Bist du schon auf die Idee gekommen die Frage "intelligent" zu stellen, so das Ja/Nein/Abbrechen und die Auswertung von Antwort dich weiterbringt?

Gruß
LotPings
koluschkiB
koluschkiB 06.05.2010 um 13:44:54 Uhr
Goto Top
habs nach der antwort schon umgebastelt, hab gelesen das man die Buttons nichts definieren kann
das sie festgelegt sind

sieht wiefolgt aus im augenblick

antwort = MsgBox("Der Ordner Existiert bereits, willst fortfahren?", vbOkCancel + vbQuestion, "Was tun?")  

if antwort = vbOk Then
Xantwort = msgbox("Ok = Ordner Löschen und neuen anlegen oder" & Chr(13) & Chr(13) & "Ignore = Ordnernameneingaben Ingnorieren und Daten ins bestehenden Verzeichnis kopieren", vbOkIgnore + vbQuestion, "Was nun?")  
End If

das problem ist im augenblick, dass bei der zweiten msgbox das Ignore fehlt.
wie macht man es, dass zwei unterschiedliche schaltflächen da sind?
bei vb OkCancel, klappts super aber vbOkIgnore gibt es leider nicht.
wie trennt man zwei buttonbefehle? vbOK und VbIgnore

danke im vorraus

und gruß
koluschkiB
koluschkiB 06.05.2010 um 14:02:17 Uhr
Goto Top
bin schon weiter gekommen

momentaner stand:

dim fs, a, b, f1

a = inputbox("Gebe den Namen des Ordners an!")  
set fs = CreateObject("Scripting.FileSystemObject")  
Set fs = CreateObject("Scripting.FileSystemObject")  
Set f1 = fs.GetFile("c:\beta\a.txt")  

if fs.folderexists ("d:\"& a) Then  
antwort = MsgBox("Der Ordner Existiert bereits, willst fortfahren?", vbOkCancel + vbQuestion, "Was tun?")  

if antwort = vbOk Then
Xantwort = msgbox("Ok = Vorhandenen Ordner Löschen und neuen anlegen oder" & Chr(13) & Chr(13) & "Wiederholen = Zurück zur Inputbox und neuen Namen angeben" & Chr(13) & Chr(13) &  "Ignorieren = Ordnernameneingabe Ingnorieren und Daten ins bestehenden Verzeichnis kopieren", vbAbortRetryIgnore + vbQuestion, "Was nun?")  
End If

if Xantwort = vbRetry Then
b = inputbox("Gebe den Namen des Ordners an!")  
fs.createfolder("d:\" & b)  
f1.Copy "d:\" & b & "\"  
msgbox "Der Ordner wurde angelegt und Dateien kopiert!"  
elseif Xantwort = vbIgnore Then
f1.Copy "d:\" & a & "\"  
msgbox "Der Ordner wurde angelegt und Dateien kopiert!"  
End If

else
fs.createfolder("d:\" & a)  
f1.Copy "d:\" & a & "\"  
msgbox "Der Ordner wurde angelegt und Dateien kopiert!"  

End If

der feinschliff fehlt noch, aber das kommt noch
77559
77559 06.05.2010 um 14:35:40 Uhr
Goto Top
der feinschliff fehlt noch, aber das kommt noch
sehe ich aus so, ich würde
  • statt chr(13) die Konstanten vbCR oder vbCRLF nehmen,
  • überlange Zeilen mit einem " _" am Ende splitten
  • (If-)Blöcke einrücken, dann behält man eher die Übersicht.

Gruß
LotPings
koluschkiB
koluschkiB 06.05.2010 um 14:46:45 Uhr
Goto Top
???

wie soll das gehen mit dem "_"?
habs mal getestet, aber kriegt nen fehlermeldung

sah so in etwa aus

blbndjkfhasjdb lsjdfhjks _
djkbvasjd

hab was gefunden was vielleicht hilfreich sein könnte, was die buttons angeht

schau mal

http://www.vbarchiv.net/tipps/details.php?id=687

gruß

koluschki
77559
77559 06.05.2010 um 14:58:01 Uhr
Goto Top
Zitat von @koluschkiB:
wie soll das gehen mit dem "_"? habs mal getestet, aber kriegt nen fehlermeldung
Ich nehme mal deine Zeilen 11-13
if antwort = vbOk Then 
  Xantwort = msgbox("Ok = Vorhandenen Ordner Löschen und neuen anlegen oder" & vbCR & vbCR & _  
  "Wiederholen = Zurück zur Inputbox und neuen Namen angeben" & vbCR & vbCR & _  
  "Ignorieren = Ordnernameneingabe Ingnorieren und Daten ins bestehenden Verzeichnis kopieren",  _  
  vbAbortRetryIgnore + vbQuestion, "Was nun?")   
End If
hab was gefunden was vielleicht hilfreich sein könnte, was die buttons angeht
Da geht es aber NICHT um VBS.

Gruß
LotPings
koluschkiB
koluschkiB 06.05.2010 um 15:14:39 Uhr
Goto Top
ja shit, blöde buttons da face-smile

das mit dem "_" hat geklappt

sieht jetzt so aus:

dim fs, a, b, f1

a = inputbox("Gebe den Namen des Ordners an!")  
set fs = CreateObject("Scripting.FileSystemObject")  
Set fs = CreateObject("Scripting.FileSystemObject")  
Set f1 = fs.GetFile("c:\beta\a.txt")  

if fs.folderexists ("d:\"& a) Then  
antwort = MsgBox("Der Ordner Existiert bereits, willste fortfahren?", vbYesNo + vbQuestion, "Was tun?")  

	if antwort = vbYes Then
	Xantwort = msgbox("Ok = Vorhandenen Ordner Löschen und neuen anlegen oder" & vbCR & vbCR & _  
	"Wiederholen = Zurück zur Inputbox und neuen Namen angeben" & vbCR & vbCR & _  
	"Ignorieren = Namenseingabe Ignorieren und Daten ins bestehenden Verzeichnis kopieren", _  
	vbAbortRetryIgnore + vbExclamation, "Was nun?")  
	End If

		if Xantwort = vbRetry Then
		b = inputbox("Gebe den Namen des Ordners an!")  
		fs.createfolder("d:\" & b)  
		f1.Copy "d:\" & b & "\"  
		msgbox "Der neue Ordner wurde angelegt und Dateien kopiert!"  
		elseif Xantwort = vbIgnore Then
		f1.Copy "d:\" & a & "\"  
		msgbox "Dateien wurden in den vorhandenen Ordner kopiert!"  
		End If

else
fs.createfolder("d:\" & a)  
f1.Copy "d:\" & a & "\"  
msgbox "Der Ordner wurde angelegt und Dateien kopiert!"  

End If

nochmal ne frage zu den Buttons

kann man sie nun kombinieren?

also zb vbYesNo & vbAbortRetryIgnore in eine MSGBOX packen?
im augenblick hab eich noch denn text "ok= blabla" drin stehen, und die möglichkeit sollte weiterhin drin bleiben.
da bei häng ich momentan auch..

hoffe jemand kann helfen

gruß

koluschki
koluschkiB
koluschkiB 06.05.2010 um 15:21:30 Uhr
Goto Top
was? face-smile
ich bin breit... ich mein bereit ^^


wie man macht man es denn nun?

ich will vbAbortRetryIgnore & vbYes gleichzeitig anzeigen

egal welches zeichen ich dazwischen setze, er nimmt imemr denn wert, der vor dem + steht

bsp.

antwort = MsgBox("Der Ordner Existiert bereits, willste fortfahren?", vbYesNo  AND vbOK+ vbQuestion, "Was tun?")  

in dem bsp wird nur noch OK angezeigt, was ja dumm ist

gruß
77559
77559 06.05.2010 um 15:25:34 Uhr
Goto Top
Zitat von @koluschkiB:
nochmal ne frage zu den Buttons
kann man sie nun kombinieren?
Die einfache Antwort ist: nur die in obiger Referenz angegebebenen Kombinationen.
Für die komplexe, über VBS hinausgehende, Antwort bist du noch nicht bereit face-wink (oder ich, es dir zu erklären)

Gruß
LotPings
koluschkiB
koluschkiB 06.05.2010 um 16:21:36 Uhr
Goto Top
hola face-smile

hab ne andere lösung mir überlegt

dim fs, a, b, f1, objFSO

a = inputbox("Gebe den Namen des Ordners an!")  
set fs = CreateObject("Scripting.FileSystemObject")  
Set fs = CreateObject("Scripting.FileSystemObject")  
Set f1 = fs.GetFile("c:\beta\a.txt")  
Set objFSO = CreateObject("Scripting.FileSystemObject")  

	if fs.folderexists ("d:\"& a) Then  
	antwort = MsgBox("Der Ordner Existiert bereits!" & vbCR & VbCR &_  
	"Ja = Vorhandenen Ordner Löschen und neuen anlegen!" & vbCR & vbCR &_  
	"Nein = Weiter Möglichkeiten!" & vbCR & vbCR & _  
	"Abbrechen = Is klar, ne?!", vbYesNoCancel + vbQuestion, "Was tun?")  
	
		if antwort = vbYes Then
		objFSO.DeleteFolder("d:\" & a)  
		fs.createfolder("d:\" & a)  
		f1.Copy "d:\" & a & "\"  
		msgbox "Alter Ordner weg, Neuer da incl. Dateien!"  
		elseif antwort = vbNo Then
		Xantwort = msgbox("Abbrechen = Is klar, ne?!"& vbCR & vbCR & _  
		"Wiederholen = Zurück zur Inputbox und neuen Namen angeben" & vbCR & vbCR & _  
		"Ignorieren = Namenseingabe Ignorieren und Daten ins bestehenden Verzeichnis kopieren", _  
		vbAbortRetryIgnore + vbExclamation, "Was nun?")  
		End If

			if Xantwort = vbRetry Then
			b = inputbox("Gebe den Namen des Ordners an!")  
			fs.createfolder("d:\" & b)  
			f1.Copy "d:\" & b & "\"  
			msgbox "Der neue Ordner wurde angelegt und Dateien kopiert!"  
			elseif Xantwort = vbIgnore Then
			f1.Copy "d:\" & a & "\"  
			msgbox "Dateien wurden in den vorhandenen Ordner kopiert!"  
			End If

else
fs.createfolder("d:\" & a)  
f1.Copy "d:\" & a & "\"  
msgbox "Der Ordner wurde angelegt und Dateien kopiert!"  

End If

paar sachen müssen noch umgebastellt werden wie zb die benutzdefinierte angabe des Quellverzeichnisses face-smile
aber ansonsten bin ich dank euch schon gut voran gekommen

DANKE

aber werde mich sicherlich noch mal melden

gruß

koluschki
77559
77559 06.05.2010 um 16:51:10 Uhr
Goto Top
Zitat von @koluschkiB:
was? face-smile
ich bin breit... ich mein bereit ^^
Nee, da bist du jetzt im falschen Film Spongebob.

wie man macht man es denn nun?

ich will vbAbortRetryIgnore & vbYes gleichzeitig anzeigen

egal welches zeichen ich dazwischen setze, er nimmt imemr denn wert, der vor dem + steht
Nein er nimmt den Wert den ein binäres AND ergibt d.h. wenn die gleichwertigen bits (nein nicht die aus der Eifel) beide gesetzt sind.


in dem bsp wird nur noch OK angezeigt, was ja dumm ist
Ich weiss jetzt nicht, wie ich dich von der Richtigkeit meiner allerersten Aussage überzeugen kann.

Ratlos
LotPings
koluschkiB
koluschkiB 07.05.2010 um 08:18:00 Uhr
Goto Top
ich hasse spongebob face-smile

aber dennoch besten dank für die hilfe bei denn sachen

gruß

koluschki