Top-Themen

Aktuelle Themen (A bis Z)

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 Ordner durchsuchen und Treffer als Liste ausgeben (Excel)

Mitglied: omochka

omochka (Level 1) - Jetzt verbinden

04.02.2008, aktualisiert 11.02.2008, 15484 Aufrufe, 14 Kommentare

Hallo!

Ich möchte durch klicken auf ein Objekt bzw. Button einen Ordner nach einer zuvor eingegebenen Nummer durchsuchen und mir das Ergebnis als Liste (nicht Excel-Liste, sondern UserForm) ausgeben lassen. Diese Liste soll als PopUp erscheinen. Wenn ich ein Ergebnis anklicke, wird die entsprechende Datei mit dem entsprechendem Programm geöffnet.

Kann mir einer helfen?

0c9326df99db8706bd603f9064ec7cd8-testuw3 - Klicke auf das Bild, um es zu vergrößern
Mitglied: bastla
07.02.2008 um 18:23 Uhr
Hallo omochka!

Du benötigst

- Schaltfläche (in der Tabelle) "btnShowAll", Caption: "Alle zeigen", Code (die zu suchende Nummer wird in diesem Beispiel aus Zelle C5 entnommen):
01.
Private Sub btnShowAll_Click()
02.
Datei = Dir(Fld & "\" & "*" & [C5] & "*.*")
03.
frmOpenFile.lstFiles.Clear
04.
Do While Datei <> ""
05.
    frmOpenFile.lstFiles.AddItem Datei
06.
    Datei = Dir
07.
Loop
08.
frmOpenFile.Show
09.
End Sub
- UserForm "frmOpenFile", Caption und weitere Gestaltung nach Wunsch, mit
- ListBox "lstFiles" und
- CommandButton "btnClose", Caption "Schließen"
- Code:
01.
Private Sub btnClose_Click()
02.
Me.Hide
03.
End Sub
04.

05.
Private Sub lstFiles_Click()
06.
ShellExecute hWnd, "open", Fld & "\" & lstFiles.Text, "", "", SW_NORMAL
07.
End Sub
- ein Modul mit folgendem Code:
01.
Public Const Fld As String = "D:\Dein Ordner" 'ohne abschließenden "\", auch nicht bei Root (daher nicht "D:\", sondern nur "D:")
02.

03.
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
04.
 (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
05.
  ByVal lpParameters As String, ByVal lpDirectory As String, _
06.
  ByVal nshowcmd As Long) As Long
07.

08.
Const SW_HIDE = 0                  ' Versteckt öffnen
09.
Const SW_MAXIMIZE = 3              ' Maximiert öffnen
10.
Const SW_MINIMIZE = 6              ' Minimiert öffnen
11.
Const SW_NORMAL = 1
12.
Const SW_RESTORE = 9
13.
Const SW_SHOWMAXIMIZED = 3
14.
Const SW_SHOWMINIMIZED = 2
15.
Const SW_SHOWMINNOACTIVE = 7
16.
Const SW_SHOWNOACTIVATE = 4
Gutes Gelingen!

Grüße
bastla

[Edit] Löschen der Dateiliste im ersten Sub ergänzt. [/Edit]
Bitte warten ..
Mitglied: omochka
08.02.2008 um 15:17 Uhr
Wow! Vielen-vielen Dank! Hätte nicht gedacht, dass mir einer helfen kann.

Eine Frage habe ich noch: Was ändert sich am Code, wenn auch noch die Unterordner des Stammordners durchsucht werden sollen? Bzw. ein Ordner, wenn es einen Ordner mit der gleichen Nummer gibt, dann soll er auch durchsucht werden.
Bitte warten ..
Mitglied: bastla
08.02.2008 um 15:42 Uhr
Hallo omochka!

Wenn der Ordnernamen mit der Nummer übereinstimmt, ginge es so:
01.
Private Sub btnShowAll_Click()
02.
Datei = Dir(Fld & "\" & "*" & [C5] & "*.*")
03.
frmOpenFile.lstFiles.Clear
04.
Do While Datei <> ""
05.
    frmOpenFile.lstFiles.AddItem Datei
06.
    Datei = Dir
07.
Loop
08.
Datei = Dir(Fld & "\" & [C5] & "\*.*")
09.
Do While Datei <> ""
10.
    frmOpenFile.lstFiles.AddItem [C5] & "\" & Datei
11.
    Datei = Dir
12.
Loop
13.
frmOpenFile.Show
14.
End Sub
Soferne auch für den Ordner gilt, dass die gesuchte Nummer nur Namensbestandteil ist, oder, dass auch noch Unterordner des Ordners einbezogen werden müssten, wäre eine Suche über das "FileSystemObject" zu überlegen.

Übrigens noch ein Nachtrag (hier im Code bereits berücksichtigt): Die Liste muss mit
01.
frmOpenFile.lstFiles.Clear
vor dem Befüllen gelöscht werden, da sich ansonsten noch die vorher gefundenen Einträge darin befinden. Ich trage das auch in dem in meinem vorigen Beitrag geposteten Code nach.

Grüße
bastla
Bitte warten ..
Mitglied: omochka
08.02.2008 um 16:39 Uhr
Vielen Dank! Ich probiere es gleich aus. Wenn man beim Schließen der Liste "Unload Me" ausführt, dann werden die Einträge ebenfalls gelöscht.
Bitte warten ..
Mitglied: bastla
08.02.2008 um 16:46 Uhr
Hallo omochka!

Mit "Unload" hast Du natürlich recht, und bei diesem einfachen Formular bringt es vermutlich ohnehin nicht viel, es geladen zu lassen und nur zu "hide"en.

Grüße
bastla
Bitte warten ..
Mitglied: omochka
08.02.2008 um 17:29 Uhr
Funktioniert super, bastla! Vielen Dank!

Wenn du Glück hast, dann werde ich noch eine weitere Frage stellen. Ich versuche es allerdings erst selber. :D
Bitte warten ..
Mitglied: omochka
08.02.2008 um 17:38 Uhr
Ne, das würde zu lange dauern, wenn ich es selbst versuche.
Ich möchte nun alle Dateien im Ordner mit der gegebenen Nummer anzeigen lassen, sogar, wenn sich diese in Unterordnern befinden. Kannst du mir noch mal helfen, bastla?
Bitte warten ..
Mitglied: bastla
08.02.2008 um 17:45 Uhr
Hallo omochka!

Betrifft dies nur eine (Unter-)Ordnerebene, oder muss noch tiefer gegraben werden?

Zusatzfrage: Lassen sich Dateien und Ordner dadurch unterscheiden, dass nur Dateien einen Typ haben (bzw alle Ordnernamen keinen Punkt enthalten)?

Grüße
bastla
Bitte warten ..
Mitglied: omochka
08.02.2008 um 18:10 Uhr
Hallo bastla!

Es muss tiefer gegraben werden bis es keine Ordner mehr gibt.
Ordner habe keine Punkte.

MfG
omochka
Bitte warten ..
Mitglied: bastla
09.02.2008 um 17:52 Uhr
Hallo omochka!

Dann starten wir das Ganze eben so:
01.
Private Sub btnShowAll_Click()
02.
'Zugriff über das VBScript-"FileSystemObject", daher das Object erzeugen
03.
Set objFS = CreateObject("Scripting.FilesystemObject")
04.

05.
'Liste löschen
06.
frmOpenFile.lstFiles.Clear
07.

08.
'Durchsuchen des Ordnerbaumes starten
09.
DoFolders objFS.GetFolder(Fld) 'Startordner als Objekt übergeben
10.

11.
'Dateiliste fertig, UserForm anzeigen
12.
frmOpenFile.Show
13.
End Sub
14.

15.

16.
Sub DoFolders(Folder As Object)
17.
Dim Subfolder As Object
18.

19.
If LCase(Folder.Name) <> LCase("System Volume Information") Then 'nur zur Sicherheit ...
20.
    For Each File In Folder.Files 'Reihenfolge in der Ordnerstruktur von "oben" nach "unten", daher zunächst die Dateien ...
21.
        If InStr(1, File.Name, [C5], vbTextCompare) Then 'Suchkriterium im Dateinamen (allerdings inkl. Extension) enthalten?
22.
            frmOpenFile.lstFiles.AddItem Replace(File.Path, Fld & "\", "") 'relativen Pfad verwenden
23.
        End If
24.
    Next
25.

26.
    For Each Subfolder In Folder.SubFolders ... und jetzt erst die Unterordner
27.
        DoFolders Subfolder 'Rekursiver Aufruf des Sub für Unterordner
28.
    Next
29.
End If
30.
End Sub
Da der relative Pfad verwendet werden soll, muss sichergestellt sein, dass die Angabe des Startordners in der Konstanten "Fld" keinen abschließenden "\" enthält - bitte bei der Deklaration der Konstanten berücksichtigen (oder, umgekehrt, dafür sorgen, dass "Fld" mit einem "\" endet und hier im Code das Anfügen des "\" weglassen).

Grüße
bastla
Bitte warten ..
Mitglied: omochka
11.02.2008 um 18:53 Uhr
Leider bekomme ich keine Ergebnisse, da sich mein Rechner mit dieser Lösung immer aufhängt. Hm.
Bitte warten ..
Mitglied: bastla
11.02.2008 um 19:08 Uhr
Hallo omochka!

Da ist mir leider ein Kommentarzeichen in der Zeile "For Each Subfolder ..." abhanden gekommen (beim Posten noch schnell verschlimmbessert ) - richtig wäre:
01.
For Each Subfolder In Folder.SubFolders '... und jetzt erst die Unterordner
Ansonsten klappts bei mir mit dem geposteten Code.

Grüße
bastla
Bitte warten ..
Mitglied: omochka
11.02.2008 um 19:35 Uhr
Das habe ich gemerkt, weil dieser Bereich des Codes rot eingefärbt war. Das Zeichen habe ich gesetzt, trotzdem. Ich werde es noch mal probieren.
Bitte warten ..
Mitglied: bastla
11.02.2008 um 19:55 Uhr
Hallo omochka!

Du könntest nach "If LCase ..." ein
01.
Debug.Print Folder.Name
einbauen (und ev auch auf die nächste Zeile einen Breakpoint setzen) - wenn Du jetzt direkt aus dem VBA-Editor startest (und mit Strg-G vorher das "Direktfenster" einblendest), siehst Du zumindest einmal, welcher Ordner zuletzt durchsucht wurde ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
TODO List in ( Batch )
gelöst Frage von clragonBatch & Shell4 Kommentare

Hallo Liebe Forum-Nutzer Ich habe heute versucht, mir eine Batch zu schreiben die Notizen anzeigt, aka eine Todo Liste ...

Windows 7
Win7 firewall list von
Frage von AtoAtoWindows 77 Kommentare

hallo in Win7 kann ich mit dem Befehl netsh advfirewall firewall show rule status=enabled name=all zeige alle Rules, die ...

Exchange Server
Fehler 553 validrcptto list Exchange
gelöst Frage von zeroblue2005Exchange Server5 Kommentare

Hallo Zusammen, ein Benutzer meldete mir diesen Fehler eine T-Online.de Absender, der folgende Fehlermeldung zurück erhält: The mail system ...

Windows 10
Jump List geändert ohne Erfolg
Frage von ErbsenzaehlerWindows 10

Hallo, bin neu hier - habt Nachsicht und schon mal im Voraus danke für Eure Hilfe. Ich möchte die ...

Neue Wissensbeiträge
Windows Server

Zähe Update-Installation auf Windows Server 2016

Information von kgborn vor 2 TagenWindows Server4 Kommentare

Mir sind in der Vergangenheit immer wieder Beschwerden von Admins unter die Augen gekommen, die sich über die doch ...

Humor (lol)
Turnschuhe per Firmware lahmlegen
Information von Henere vor 2 TagenHumor (lol)8 Kommentare

Und was kommt demnächst ? Bekomme ich kein Klopapier mehr, weil der Spender einem DDOS unterliegt ? :-) Ich ...

Sicherheit

Sicherheitsrisiko in WinRAR und Co. durch Schwachstelle in UNACEV2.DLL

Information von kgborn vor 2 TagenSicherheit

In der seit 2005 nicht mehr aktualisierten Bibliothek UNACEV2.DLL gibt es eine Path-Traversal-Schwachstelle. Diese ermöglicht es, bei ACE-Archiven Dateien ...

Internet

CDU Propaganda: Urheberschutz im Internet - Ende des digitalen Wild-West

Information von Frank vor 3 TagenInternet6 Kommentare

Hallo Administratoren, aus einem Kommentar heraus habe ich folgenden Beiträge von Herr Sven Schulze und Axel Voss (beide CDU ...

Heiß diskutierte Inhalte
Windows Tools
Dateiname Automatisch auf PDF Klartext oder als Barcode abdrucken
Frage von spongebob24Windows Tools29 Kommentare

Hallo Zusammen, habe eine tolle Anforderung bekommen. Ich sollte auf mehrere PDF Dateien Automatisch einen Stempel anbringen lassen. Toll ...

Internet
SDSL oder ADSL - Preis-Leistungs-Verhältnis
Frage von ZeppelinInternet22 Kommentare

Wehrte Community, der Unterschied dieser beiden Techniken ist recht einfach erklärt. Das S, steht für Synchron (Gleich) und das ...

Microsoft Office
MicroSoft und seine Lizenzen
Frage von ZeppelinMicrosoft Office19 Kommentare

Wehrte Community, ich wende mich an die Community weil MicroSoft dazu keine Stellung nehmen möchte. Ich öffne mein Web-Browser ...

Hyper-V
Setup zu 2019 Hyper-V Coreserver gesucht
Frage von DerWoWussteHyper-V16 Kommentare

Moin. Ich habe unter die Möglichkeit, Hyper-V-Server 2012 R2 runterzuladen! Tolle Wurst, Microsoft! Nehme ich eine andere Quelle, nämlich ...