Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1708to1712
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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?

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
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige