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, 15218 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
Sonstige Systeme
Es war einmal ein BeOS - Wer erinnert sich noch?
Information von BassFishFox vor 18 StundenSonstige Systeme4 Kommentare

Hallo, Bin gerade ueber Haiku gestolpert, von dessen Existenz als "Nachfolger des BeOS" ich wusste nur mich nie wirklich ...

Datenschutz

Microsoft und DSGVO - ob das wohl jemals klappt (Probleme beim Datenabfluss für Office Pro Plus)?

Tipp von VGem-e vor 21 StundenDatenschutz3 Kommentare

Servus Kollegen, siehe Aber wer setzt schon MS Office Pro Plus ein? Wie dann der Stand beim "normalen" MS ...

Windows 10

Macht Windows 10.1809 Probleme mit gemappten Netzlaufwerken (betrifft wohl insbes. AMD-Hardware und Trend Micro AV-Produkte)?

Tipp von VGem-e vor 1 TagWindows 103 Kommentare

Moin Kollegen, grad dazu gefunden und Hatten wir dies nicht bei früheren W10-Upgrades ebenfalls? Da bleibt nur, das Upgrade ...

Humor (lol)

Das neue Miniatur Wunderland OFFICIAL VIDEO - worlds largest model railway - railroad

Information von StefanKittel vor 1 TagHumor (lol)2 Kommentare

Hallo, wer noch nie im Miniatur Wunderland war, sollte es dringend mal nachholen. Es gibt eine neues Video. Viele ...

Heiß diskutierte Inhalte
Netzwerkgrundlagen
Werksreset HP 1920S-24G
gelöst Frage von HenereNetzwerkgrundlagen14 Kommentare

Servus zusammen, ich habe mir 2 neue Switche zugelegt, doch ich komme damit nicht ganz klar. Waren Vorführgeräte zum ...

Viren und Trojaner
Office365 Trojaner Analyse
Frage von ZeppelinViren und Trojaner14 Kommentare

Liebe Community, ich wende mich an euch, um mehr über den Office365 Trojaner zu erfahren, welcher grade seine Runden ...

DSL, VDSL
DSL Monitoring Tool - Quick and dirty?
Frage von george44DSL, VDSL13 Kommentare

Liebe Gemeinde, ich suche ein einfaches und vor allem schnell zu installierendes Monitoring-Tool zur kontinuierlichen Dokumentation (nur) der Internetanbindung. ...

Firewall
Sophos UTM 9.5 Firewall Log-File durchsuchen
gelöst Frage von Leo-leFirewall13 Kommentare

Hallo zusammen, weiß jemand von Euch, ob man bei der Sophos die Firewall logs noch etwas besser filtern kann? ...