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

VBS - Datei auswählen

Frage Entwicklung VB for Applications

Mitglied: Dani

Dani (Level 5) - Jetzt verbinden

03.04.2007, aktualisiert 05.04.2007, 20272 Aufrufe, 17 Kommentare

Guten Abend zusammen,

ich bin auf der Suche nach dem Dateidialog. Sprich das Script läuft, öffnet den Dialog und ich kann dann eine Datei auswählen. Danach soll der Inhalt zeilenweise ausgelesen werden und in eine Variable speichern.

Kl. Sache am Rande: Wie kann ich ein String splitten?! Das Trennzeichen wäre z.B. ein Punkt. Der String davor bzw. danach sollte in eine extra Variable gespeichert werden.

Schon mal vielen Dank an die Programmierjungs / mädels. *gg*


Grüße
Dani
Mitglied: gemini
03.04.2007 um 20:23 Uhr
Hi,

Kl. Sache am Rande: Wie kann ich ein String splitten?! Das Trennzeichen wäre z.B.
ein Punkt. Der String davor bzw. danach sollte in eine extra Variable gespeichert werden.

01.
strString = "irgendwas.und.nochwas" 
02.
arrString = Split(strString,".", -1, 1) 
03.
MsgBox arrString(0) ' gibt 'irgendwas' aus 
04.
MsgBox arrString(1) ' gibt 'und' aus 
05.
MsgBox arrString(2) ' gibt 'nochwas' aus
HTH,
gemini
Bitte warten ..
Mitglied: bastla
03.04.2007 um 20:24 Uhr
Hallo Dani!

Nur kurz: Für die "Randsache" könntest Du die "Split"-Funktion verwenden:
01.
strTestText = "Ein.String.mit.vielen.Punkten." 
02.
arrTeile = Split(strTestText, ".") 
03.
WScript.Echo CStr(UBound(arrTeile) + 1) & " Teile:" 
04.
For i = 0 To UBound(arrTeile) 
05.
	WScript.Echo arrTeile(i) 
06.
Next
Zur Beachtung: Hinter dem letzten Punkt wird hier noch ein leerer String gefunden.

Grüße
bastla

[Edit] @gemini: Aber ich hab' mehr Punkte ... [/Edit]
Bitte warten ..
Mitglied: Dani
03.04.2007 um 20:29 Uhr
G' Abend ihr zwei,
vielen Dank! Somit wäre das kl. Problem gelöst. Aber das Große wäre wichtiger. *gg*

Ich habe hinbekommen das ich einen Ornder auswählen kann, aber das möchte ich nicht!!
Ordnerauswahl:
01.
Set Appshell = CreateObject("Shell.Application") 
02.
 
03.
if Sendenan.Count=0 then 
04.
	Set AppFolder = Appshell.BrowseForFolder(0, "",  &H0001, 17) 
05.
	Ordner = AppFolder.ParentFolder.ParseName(AppFolder.Title).Path 
06.
	If err.number > 0 then  
07.
		i=instr(AppFolder, ":") 
08.
		Ordner = mid(AppFolder, i - 1, 1) & ":\" 
09.
	end if 
10.
else 
11.
	Ordner=Sendenan(0) 
12.
	if not (myfiles.FolderExists(Ordner)) then 
13.
		g = msgbox("Wählen Sie bitte einen gültigen Ordner aus") 
14.
		wscript.quit 
15.
	end if 
16.
end if
So, nun möchte das Ganze mit einer Datei machen!


Grüße
Dani
Bitte warten ..
Mitglied: gemini
03.04.2007 um 20:30 Uhr
@bastla
[Edit] @gemini: Aber ich hab' mehr Punkte ... [/Edit]
Wenn Frank die Bewertung nicht abgeschalten hätte bekämst du in jedem Fall 5 Punkte.

gemini
Bitte warten ..
Mitglied: bastla
03.04.2007 um 20:42 Uhr
@gemini

Wenn Frank die Bewertung nicht abgeschalten hätte bekämst du in jedem Fall 5 Punkte.

Das ist aber nett von Dir - obwohl: so ganz ohne Leistungsdruck postet sich's doch viel entspannter ...

Außerdem: Auch so würde ich Dich punktemäßig wohl nicht so bald einholen (womit ich andererseits gut leben kann ).

Grüße
bastla

P.S.: @Dani - Ich habe nicht vergessen, worum's hier eigentlich gehen sollte ...
Bitte warten ..
Mitglied: bastla
03.04.2007 um 20:50 Uhr
@Dani

Vielleicht kannst Du damit etwas anfangen: http://www.visualbasicscript.com/m_1575/tm.htm
Anderer Ansatz hier: http://dieseyer.de/scr-html/alle.html
Einer noch: http://www.scriptinganswers.com/vault/Files%20and%20Folders/

Grüße
bastla

[Edit] Der Suchbegriff ist natürlich jeweils "BrowseForFile". [/Edit]
Bitte warten ..
Mitglied: bastla
03.04.2007 um 21:06 Uhr
... so, und das (gefunden hier, aber ursprünglich wohl eher von hier stammend) ist jetzt sogar (unter XP) getestet:
01.
MsgBox BrowseForFile("C:\", "JPEG Images (.jpg)|*.jpg|All Files|*.*") 
02.
 
03.
Function BrowseForFile(pstrPath, pstrFilter) 
04.
Set objDialog = CreateObject("UserAccounts.CommonDialog") 
05.
objDialog.Filter = pstrFilter 
06.
objDialog.InitialDir = pstrPath 
07.
objDialog.Flags = &H80000 + &H4 + &H8 
08.
intResult = objDialog.ShowOpen 
09.
BrowseForFile = objDialog.FileName 
10.
End Function
Anmerkung: Trennzeichen "|" musste angepasst werden.

Liste der möglichen Flags (von hier):
Alle Flags für den "Öffnen" - Dialog:

Public Const OFN_READONLY = &H1
Public Const OFN_OVERWRITEPROMPT = &H2
Public Const OFN_HIDEREADONLY = &H4
Public Const OFN_NOCHANGEDIR = &H8
Public Const OFN_SHOWHELP = &H10
Public Const OFN_ENABLEHOOK = &H20
Public Const OFN_ENABLETEMPLATE = &H40
Public Const OFN_ENABLETEMPLATEHANDLE = &H80
Public Const OFN_NOVALIDATE = &H100
Public Const OFN_ALLOWMULTISELECT = &H200
Public Const OFN_EXTENSIONDIFFERENT = &H400
Public Const OFN_PATHMUSTEXIST = &H800
Public Const OFN_FILEMUSTEXIST = &H1000
Public Const OFN_CREATEPROMPT = &H2000
Public Const OFN_SHAREAWARE = &H4000
Public Const OFN_NOREADONLYRETURN = &H8000&
Public Const OFN_NOTESTFILECREATE = &H10000
Public Const OFN_NONETWORKBUTTON = &H20000
Public Const OFN_NOLONGNAMES = &H40000
Public Const OFN_EXPLORER = &H80000
Public Const OFN_NODEREFERENCELINKS = &H100000
Public Const OFN_LONGNAMES = &H200000

Normalerweise schreibt man das dann so:

CommonDialog.Flags = OFN_HIDEREADONLY Or OFN_FILEMUSTEXIST


Grüße
bastla

[Edit] Läuft nicht unter W2000 [/Edit]
[Edit2] Liste mit Flags hinzugefügt [/Edit2]
Bitte warten ..
Mitglied: Biber
03.04.2007 um 21:12 Uhr
[Edit] Läuft nicht unter W2000 [/Edit]
Es sei denn, das NET-Framework 2.0 oder höher ist installiert

Gruss Biber
Bitte warten ..
Mitglied: bastla
03.04.2007 um 21:33 Uhr
@Biber

Abgesehen davon, dass ich mich natürlich frage, woher Du das nun schon wieder weißt: Wie hoch wäre denn "höher"?

Grüße
bastla
Bitte warten ..
Mitglied: Dani
03.04.2007 um 22:02 Uhr
Also vielen Dank an euch! So klappts wunderbar. Das wäre mal wieder ein 4-5 Punkte Thread. *gg* Die Hilfe hier ist einfach nur perfekt (kann ich nur immer wiederholen). Man bekommt so zusagen die Lösung auf dem Silbertablett + Quelle(n).

Nun habe ich den Pfad der Datei. So würde ich die Datei dann einlesen:
01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
Set objFile = objFSO.OpenTextFile("ou.txt", 1) 
03.
 
04.
Do Until objFile.AtEndOfStream 
05.
     Redim Preserve arrFileLines(i) 
06.
     arrFileLines(i) = objFile.ReadLine 
07.
i = i + 1 
08.
Loop 
09.
objFile.Close
Grüße
Dani
Bitte warten ..
Mitglied: bastla
03.04.2007 um 22:14 Uhr
... oder (zum "Splitten"-Üben ):
01.
Set objFSO = CreateObject("Scripting.FileSystemObject") 
02.
Set objFile = objFSO.OpenTextFile("ou.txt", 1) 
03.
arrFileLines = Split(objFile.ReadAll, vbCrLF) 
04.
objFile.Close
Grüße
bastla
Bitte warten ..
Mitglied: Biber
03.04.2007 um 22:17 Uhr
@bastla
Wie hoch wäre denn "höher"?
Um mal eine meiner heissgeliebten Tankstellen-PC-Zeitschriften zu zitieren:
Download: Microsoft .net Framework 3.0 (32 Bit und 64-Bit-Version)

Allerdings -da hast Du natürlich Recht- wird sich das wohl kaum auf W2000 installieren lassen.
Also streiche das "oder höher". Und vielleicht auch das "2.0".
Kann sein, dass es auch schon mit NET 1.1 lief.
ist mir eigentlich auch egal

@Dani
BTW, wo ich Dich grad sehe... wie ist denn der Status in Deinem MySQL-Thread??
Bitte warten ..
Mitglied: bastla
03.04.2007 um 22:26 Uhr
@Biber

Auch wenn's auch mir nicht ganz sooo wichtig ist (und nur falls Du's bei der Hand hast): Was bräuchte ich außer dem .NET-Framework noch (derzeit Fehlermeldung: "ActiveX-Komponenten kann kein Objekt erstellen: 'UserAccounts.CommonDialog' / Code: 800A01AD")?

Grüße
bastla
Bitte warten ..
Mitglied: Dani
04.04.2007 um 10:36 Uhr
Moin,
genau...das Problem habe ich jetzt auch auf meinem Windows Server 2003. Framework 2.0 und 3.0 sind vorhanden!


Gr
Bitte warten ..
Mitglied: Dani
04.04.2007 um 13:18 Uhr
Hi,
also ich habe nun eine Lösung!


Gruß
Dani
Bitte warten ..
Mitglied: Biber
04.04.2007 um 14:35 Uhr
@bastla

Hm...ich habe auch noch ein wenig recherchiert... Kann sein, dass es auch unter W2000 nicht läuft, weil eigentlich das UserAccounts-Control-Panel (Nusrmgr.cpl) benötigt wird.

Und das gibt es ja erst ab WinXP.
Gestern hätte/hatte ich jedenfalls diesen FileDialog noch dem NET-Framework zugeordnet.

Sorry, wenn ich da unerfüllbare Hoffnungen geweckt haben sollte.

Wieso lesen hier denn so selten die Unterschleißheimer mit, die vielleicht mal Verbindliches aussagen könnten?

Grüße
Biber
>"also ich habe nun eine L" ?!? *rotwerd*
Wollen wir mal hoffen, dass es eine "Lösung" war... *ggg
Bitte warten ..
Mitglied: Dani
05.04.2007 um 07:54 Uhr
Moin,
also nächster Versuch. Hier mal meine Lösung für einen Windows Server 2003:
01.
'Datei auswählen 
02.
Set objOpenDialog = CreateObject("SAFRCFileDlg.FileOpen") 
03.
intReturn = objOpenDialog.OpenFileOpenDlg 
04.
 
05.
If intReturn Then 
06.
    strFilePath = objOpenDialog.FileName 
07.
Else 
08.
	MsgBox("Keine Datei ausgewählt!") 
09.
    Wscript.Quit 
10.
End If
So gehts bei mir mal. *gg*


Grüße
Dani
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

VB for Applications
VBS oder Batch um eine Datei in Unterordner zu verschieben (1)

Frage von MrRoyal zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...