Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Datei im Laufwerk finden

Datei im Laufwerk finden
20.08.2019 16:04:44
Tina
Hallo ihr lieben,
ich versuche seit Tage ein Makro zu schreiben im VBA.
Dieses Makro soll mir eine Datei vom Server suche und diese dann öffnen.
Wie der Buchstabe vom Laufwerk heißt weiß ich nicht, da das Makrodann auch bei anderen Personen genutzt werden soll.
Von der Datei weiß ich nur einen Bruchteil.
Ich habe schon ein Makro:
Sub Suche()
Dim Dateiname As String
Dim Datei As String
Datei = "*.xlsx"
Dim Projekt As String
Projekt = 'Bezeichnung in der Datei
Dim Pfad As String
Pfad = 'Laufwerkname
Dateiname = Pfad & "*" & "\" & Projekt & Datei
If Dateiname  "" Then
Workbooks.Open Dateiname
End If
End Sub
Auf diese Art und weiße bekomme ich immer eine Fehlermeldung: Datei kann nicht geöffnet werden Fehlermeldung 1004
Gebe ich den Weg aber Hardcase für ein Beispiel ein, hat er kein Problem.
Wo liegt mein Fehler?
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datei im Laufwerk finden
20.08.2019 16:09:57
Daniel
Hi
ist denn wenigstens das vollständige Verzeichnis bekannt?
dann könnte man ggf die die Laufwerksbuchstaben von C bis Z durchgehen und prüfen, ob sich unter dem jeweilgien Laufwerksbuchstaben was befindet.
oder kann man davon ausgehen, dass die Datei mit dem Makro vom gleichen Laufwerk aus gestartet wird wie die gesuchte Datei?
dann könnte man den Laufwerksbuchstaben übernehmen.
Gruß Daniel
Anzeige
AW: Datei im Laufwerk finden
20.08.2019 16:23:58
Tina
Hey,
die Datei befindet sich definitiv nicht im gleichen Laufwerk.
Das Makro schreibe ich gerade für andere Mitarbeiter, die damit umgehen sollten :)
Mit einem weiterem Makro suche ich schon den Laufwerkbuchstaben.
Option Explicit
Sub Laufwerksbuchstabe()
Dim objDrive As Object
Dim colDrives As Object
Dim bolDrive As Boolean
Dim strLaufwerk As String
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.Filesystemobject")
Set colDrives = objFSO.Drives
For Each objDrive In colDrives
If InStr(objDrive.ShareName, "Projekte") > 0 Then   'hier den Namen des  _
Netzlaufwerks ändern
strLaufwerk = objDrive.DriveLetter
bolDrive = True
End If
Next objDrive
If bolDrive = False Then
MsgBox "Das erforderliche Netzlaufwerk wurde nicht gefunden!", vbOKOnly +  _
vbCritical, "Fehler"
Exit Sub
End If
MsgBox "Der Laufwerksbuchstabe lautet " & strLaufwerk & "."
Set objFSO = Nothing
End Sub

Anzeige
AW: Datei im Laufwerk finden
20.08.2019 17:16:31
Nepumuk
Hallo Tina,
teste mal:
Option Explicit

Private Declare Function SearchTreeForFile Lib "imagehlp.dll" ( _
    ByVal RootPath As String, _
    ByVal InputPathName As String, _
    ByVal OutputPathBuffer As String) As Long

Private Const MAX_PATH As Long = 260&

Public Sub Tina_sucht()
    
    Const DRIVE_NAME As String = "Projekte"
    Const FILE_EXTENSION As String = "*.xlsx"
    
    Dim objFileSystemObject As Object, objDrives As Object, objDrive As Object
    Dim objWorkbook As Workbook
    Dim blnFoundDrive As Boolean, blnFoundFile As Boolean
    Dim strPath As String, strProject As String
    Dim lngReturn As Long
    
    strProject = "Häufigkeit" & FILE_EXTENSION 'Anpassen !!!
    
    Set objFileSystemObject = CreateObject("Scripting.FileSystemObject")
    Set objDrives = objFileSystemObject.Drives
    
    For Each objDrive In objDrives
        
        With objDrive
            
            If .IsReady Then
                
                If InStr(.ShareName, DRIVE_NAME) > 0 Then
                    
                    blnFoundDrive = True
                    strPath = String$(MAX_PATH, vbNullChar)
                    lngReturn = SearchTreeForFile(.DriveLetter & ":\", strProject, strPath)
                    
                    If lngReturn <> 0 Then
                        
                        blnFoundFile = True
                        strPath = Left$(strPath, InStr(1, strPath, vbNullChar) - 1)
                        Exit For
                        
                    End If
                End If
            End If
        End With
    Next
    
    If blnFoundDrive Then
        If blnFoundFile Then
            Set objWorkbook = Workbooks.Open(Filename:=strPath)
            
            'mach was mit dem Workbook
            
            Call objWorkbook.Close(SaveChanges:=False) 'oder True
            Set objWorkbook = Nothing
        Else
            Call MsgBox("Datei nicht gefunden.", vbCritical, "Fehler")
        End If
    Else
        Call MsgBox("Laufwerk nicht gefunden.", vbCritical, "Fehler")
    End If
    
    Set objDrive = Nothing
    Set objDrives = Nothing
    Set objFileSystemObject = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: Datei im Laufwerk finden
21.08.2019 07:12:55
Tina
Hallo Nepumuk,
danke für das Makro.
Was ist mit dem Wort "Häufigkeit" gemeint?
Kommt ihr mein Laufwerkpfad hinein?
Alles andere verstehe ich so weit.
AW: Datei im Laufwerk finden
21.08.2019 07:17:12
Nepumuk
Hallo Tina,
"Häufigkeit" war der Dateiname nach dem mein Makro gesucht hat. Ich musste es ja bei mir testen.
Gruß
Nepumuk
Anzeige
AW: Datei im Laufwerk finden
21.08.2019 07:40:56
Tina
Hallö,
Okay, war nach mehrmals lesen dann auch klar :)
Der Drive-Name ist das Laufwerk, was ich ansprechen möchte?
Ich habe defentiv keinen Laufwerkbuchstaben
AW: Datei im Laufwerk finden
21.08.2019 07:52:57
Tina
Ich sehe gerade eine Zeile:
lngReturn = SearchTreeForFile(.DriveLetter & ":\", strProject, strPath)
Ansicht heißt es ja: U:\P864798.xlxs
Richtig?
Leider ist das Laufwerk etwas nervi aufgebaut:
Wir haben viele Kunden, die jeder einen eigenen Ordner im Projekte Ordnern haben, und dazu viele kleine Unterordnern, die wiederum in aufgesplittet sind.
Pfad: U:\Projekte\"Kunden"\"Projekt+Bezeichnung"\Angbeot
U:\Projekte\"Kunden"\"Projekt+Bezeichnung"\Lieferungen
U:\Projekte\"Kunden"\"Projekt+Bezeichnung"\Arbeitsscheine
Mir ist alles bekannt was nicht in Anführungen aufgeführt ist und die Projektnummer und der das ganze läuft.
Anzeige
AW: Datei im Laufwerk finden
21.08.2019 08:13:41
Nepumuk
Hallo Tina,
die Funktion durchsucht im angegebenen Laufwerk alle Ordner und Unterordner nach dem Dateinamen. Wildcards wie der * sind zulässig. Ich teste das mal mit einem Netzlaufwerk, dauert aber ein bisschen.
Gruß
Nepumuk
AW: Datei im Laufwerk finden
21.08.2019 08:45:52
Tina
Hallo,
ich weiß nicht wie, aber nach dem ich die Funktion erneut in ein Modul eingetragen habe un minimale Anpassungen vorgenommen habe klappt es :)
Es ein völliger Traum.
1000 Dank
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Datei im Laufwerk finden


Schritt-für-Schritt-Anleitung

  1. Makro zum Suchen der Datei erstellen:

    • Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul hinzu (Einfügen > Modul).
    • Kopiere und füge den folgenden VBA-Code ein:
    Sub Suche()
       Dim Dateiname As String
       Dim Datei As String
       Datei = "*.xlsx"
       Dim Projekt As String
       Projekt = "Bezeichnung in der Datei" ' Hier den tatsächlichen Projektnamen eingeben
       Dim Pfad As String
       Pfad = "Laufwerkname" ' Hier den Laufwerksnamen eingeben
       Dateiname = Pfad & "*" & "\" & Projekt & Datei
       If Dateiname <> "" Then
           Workbooks.Open Dateiname
       End If
    End Sub
  2. Laufwerksbuchstaben herausfinden:

    • Erstelle ein weiteres Makro, um den Laufwerksbuchstaben zu suchen:
    Sub Laufwerksbuchstabe()
       Dim objDrive As Object
       Dim colDrives As Object
       Dim bolDrive As Boolean
       Dim strLaufwerk As String
       Dim objFSO As Object
       Set objFSO = CreateObject("Scripting.Filesystemobject")
       Set colDrives = objFSO.Drives
       For Each objDrive In colDrives
           If InStr(objDrive.ShareName, "Projekte") > 0 Then
               strLaufwerk = objDrive.DriveLetter
               bolDrive = True
           End If
       Next objDrive
       If bolDrive = False Then
           MsgBox "Das erforderliche Netzlaufwerk wurde nicht gefunden!", vbOKOnly + vbCritical, "Fehler"
           Exit Sub
       End If
       MsgBox "Der Laufwerksbuchstabe lautet " & strLaufwerk & "."
       Set objFSO = Nothing
    End Sub
  3. Die Makros ausführen:

    • Führe zuerst das Makro Laufwerksbuchstabe aus, um den Laufwerksbuchstaben zu ermitteln.
    • Passe das erste Makro Suche an, indem du den ermittelten Laufwerksbuchstaben einfügst.

Häufige Fehler und Lösungen

  • Fehler 1004: Datei kann nicht geöffnet werden:

    • Stelle sicher, dass der Dateipfad korrekt ist und die Datei tatsächlich existiert. Überprüfe, ob du die richtigen Berechtigungen hast, um auf die Datei zuzugreifen.
  • Laufwerk nicht gefunden:

    • Überprüfe, ob der Laufwerksbuchstabe korrekt ermittelt wurde und das Laufwerk erreichbar ist. Manchmal kann es auch an einer Netzwerkverbindung liegen.

Alternative Methoden

  • Verwendung der Windows-Suche: Du kannst auch die Windows-Suche verwenden, um die Datei im gewünschten Laufwerk zu suchen. Gehe dazu in den Datei-Explorer und gib den Dateinamen ein.

  • PowerShell: Nutze PowerShell-Skripte, um Dateien im Laufwerk zu suchen. Hier ein einfaches Beispiel:

    Get-ChildItem -Path "U:\Projekte\" -Filter "*.xlsx" -Recurse

Praktische Beispiele

  1. Beispiel 1: Suche nach einer bestimmten Datei:

    • Angenommen, du möchtest die Datei Angebot.xlsx im Laufwerk suchen. Setze den Projektnamen im Makro auf "Angebot".
  2. Beispiel 2: Suche in einem spezifischen Unterordner:

    • Wenn du nur in einem bestimmten Kundenordner suchen möchtest, passe den Pfad im Makro entsprechend an, z.B. U:\Projekte\Kunden\Kunde1\.

Tipps für Profis

  • Verwende Wildcards: Nutze Wildcards wie * und ? in deinen Suchen, um flexibler nach Dateien zu suchen.

  • Makros optimieren: Achte darauf, deine Makros regelmäßig zu überprüfen und anzupassen, damit sie auch bei Änderungen im Laufwerk oder Dateinamen funktionieren.

  • Laufwerksbuchstaben ändern: Wenn sich die Laufwerksbuchstaben ändern, aktualisiere die Makros oder nutze eine dynamische Ermittlung des Laufwerksbuchstabens.


FAQ: Häufige Fragen

1. Wie finde ich den Laufwerksbuchstaben?
Du kannst das Makro Laufwerksbuchstabe verwenden, um den Buchstaben des benötigten Laufwerks zu ermitteln.

2. Was ist, wenn die Datei nicht gefunden wird?
Überprüfe, ob der Dateipfad korrekt ist und die Datei tatsächlich existiert. Achte auch auf Berechtigungen im Netzwerk.

3. Kann ich auch andere Dateiformate suchen?
Ja, passe einfach die Filter im Makro an, um auch nach anderen Formaten wie .xls oder .csv zu suchen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige