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, 15110 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
Microsoft Office

Excel Liste nach einem bestimmten Wert durchsuchen und dann einen bestimmten Wert ausgeben

gelöst Frage von michael1306Microsoft Office8 Kommentare

Hallo zusammen, zu meinem kleinen Problem. Ich habe eine Excel Tabelle die mit Daten gefüllt ist nur fehlen mir ...

Batch & Shell

Netzwerklaufwerk Ordner durchsuchen und Dateipfade ausgeben (Größe, Änderungsdatum)

Frage von sw33d1337Batch & Shell2 Kommentare

Hallo zusammen, ich habe mich noch nicht groß mit Batch Programmierung auseinandergesetzt, aber eventuell könnt ihr mir weiterhelfen. Problemstellung: ...

Batch & Shell

Batch Ordner durchsuchen nach Datei und Pfad ausgeben

gelöst Frage von easy4breezyBatch & Shell2 Kommentare

Hi, ich möchte mehrere Ordner/Festplatten nach einer Datei bzw. einem "Suchwort" durchsuchen und falls diese Datei/Dateien existiert/en den Pfad ...

Batch & Shell

Ordner anhand einer Excel-Liste kopieren

gelöst Frage von xsto123Batch & Shell6 Kommentare

Hallo, gibt es eine Möglichkeit, Ordner anhand einer Excel-Liste von einem Pfad in den anderen zu kopieren? Excel-Liste: Spalte ...

Neue Wissensbeiträge
E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzk vor 1 TagE-Mail10 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...

Hyper-V

Optimiertes Ubuntu per Microsoft Hyper-V-Schnellerstellung verfügbar

Anleitung von Frank vor 2 TagenHyper-V

Für Microsofts Virtualisierungssoftware Hyper-V ist ab sofort auch ein optimiertes Ubuntu 18.04.1 LTS verfügbar. In der "Hyper-V-Schnellerstellung" App, die ...

Sicherheits-Tools

Trend Micro WorryFree Business Security (WFBS) 10 - neuer Patch 1470 verfügbar

Tipp von VGem-e vor 2 TagenSicherheits-Tools1 Kommentar

Servus, mal sehen, ob mit Patch 1470, zu finden unter dann die angeblich fehlerhafte Funktion, die unter W10 im ...

Server-Hardware

Lösung für Ersatz eines defekter Raid-Controllers

Anleitung von wellknown vor 2 TagenServer-Hardware4 Kommentare

Hallo, da ich nichts gefunden habe und selbst eine Lösung brauchte, hier eine kleine Anleitung für alle die vor ...

Heiß diskutierte Inhalte
Tipps & Tricks
Nagstamon und PRTG Monitoring
Frage von Der.ITlerTipps & Tricks12 Kommentare

Hallo Ihr, heute am Sonntag bin ich mal früh aufgestanden um mich mit dem Problem von Gestern zu beschäftigen. ...

Batch & Shell
Bestimmte Textpassagen via bat löschen
gelöst Frage von Grisu84Batch & Shell10 Kommentare

Hallo, ich habe eine txt-Datei, in welcher ich durch eine bat bestimmte Zeilen löschen möchte. So soll die Datei ...

Windows 10
Windows 10 PC stürzt in letzter Zeit mit verschiedenen Fehlermeldungen ab (Bluescreen)
Frage von cyb012Windows 1010 Kommentare

Hallo zusammen, mein Rechner verabschiedet sich in letzter Zeit leider immer öfters. Meine Austattung, falls relevant: Arbeitsspeicher: 16GB G.Skill ...

E-Mail
Email-Apps und Verhalten bei Pop3
Erfahrungsbericht von kfranzkE-Mail10 Kommentare

Hallo Freunde, da mir mein diesbezüglicher Faden als gelöst markiert wurde, muss ich hier neu aufsetzen. Ich arbeite bewusst ...