Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
728to732
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
728to732
728to732
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Pfad Automatisch Einlesen

Pfad Automatisch Einlesen
04.02.2006 19:37:03
Heinz
Hallo Leute
Ich habe ein Tab.Blatt,das in der Firma auf verschiedene PC's benutzt werden sollte.Das Tab.Blatt sucht verschiedene Tab,Blätter im Ordner "Packanweisungen"
Momentan muss ich den Pfad immer händisch im unteren Code ändern.
Gibt es eine Möglichkeit den Pfad automatisch zu ändern.
Er sollte suchen wo sich der Ordner "Packanweisungen"auf dem jeweiligen PC befindet,und automatisch eintragen.
Set ext_sheet = GetObject("C:\Dokumente und Einstellungen\HP_Besitzer\Desktop\Womat.02.02.06\PACKANWEISUNGEN\" & Range("c9").Value & ".xls")
Könnte mir da Bitte jemand weiterhelfen ?
Danke,Heinz

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad Automatisch Einlesen
04.02.2006 22:26:58
Nepumuk
Hallo Heinz,
mit folgenden Makros hast du das ganze im Griff:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Open()
    Call prcGetFolder
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function FindFirstFile Lib "kernel32.dll" Alias "FindFirstFileA" ( _
    ByVal lpFileName As String, _
    lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindNextFile Lib "kernel32.dll" Alias "FindNextFileA" ( _
    ByVal hFindFile As Long, _
    lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32.dll" ( _
    ByVal hFindFile As Long) As Long

Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const MAX_PATH = 260
Private Const S_FOLDER = "PACKANWEISUNGEN"

Private Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type

Private blnFound As Boolean

Public strPath As String

Public Sub prcGetFolder()
    Dim objFSO As Object, objDrive As Object
    blnFound = False
    strPath = GetSetting("Testmappe", "Daten", "Pfad", "")
    If strPath = "" Or (strPath <> "" And Dir$(strPath, vbDirectory) = "") Then
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        For Each objDrive In objFSO.Drives
            If objDrive.IsReady Then
                Call prcFindFolder(objDrive.DriveLetter & ":\")
                If blnFound Then Exit For
            End If
        Next
        If blnFound Then
            SaveSetting "Testmappe", "Daten", "Pfad", strPath
        Else
            MsgBox "Ordner nicht gefunden!", vbExclamation, "Hinweis"
            End
        End If
    End If
    MsgBox strPath 'nur zum Testen !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
End Sub

Private Sub prcFindFolder(ByVal strFolderPath As String)
    Dim udtWFD As WIN32_FIND_DATA, lngSearch As Long, strDirName As String
    If Not blnFound Then
        If Right$(strFolderPath, 1) <> "\" Then strFolderPath = strFolderPath & "\"
        lngSearch = FindFirstFile(strFolderPath & "*.*", udtWFD)
        If lngSearch <> INVALID_HANDLE_VALUE Then
            Do
                If (udtWFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) Then
                    strDirName = Left$(udtWFD.cFileName, _
                        InStr(udtWFD.cFileName, Chr(0)) - 1)
                    If (strDirName <> ".") And (strDirName <> "..") Then
                        If LCase$(strDirName) = LCase$(S_FOLDER) Then
                            strPath = strFolderPath & strDirName
                            blnFound = True
                            Exit Sub
                        Else
                            Call prcFindFolder(strFolderPath & strDirName)
                        End If
                    End If
                End If
            Loop While FindNextFile(lngSearch, udtWFD) And Not blnFound
            FindClose lngSearch
        End If
    End If
End Sub

Der Pfad befindet sich in der Variable strPath.
Gruß
Nepumuk

Anzeige
AW: Pfad Automatisch Einlesen
04.02.2006 22:47:10
Heinz
Hallo Nepumuk
Danke für Deine Hilfe,bekomm's einfach nicht hin !! - Bin noch zu schwach in VBA.
Wärst Du BITTE so nett und könntest Du mir den Code richtig einfügen ?
Recht herzlichen Dank,Heinz
https://www.herber.de/bbs/user/30672.zip
AW: Pfad Automatisch Einlesen
04.02.2006 23:16:06
Nepumuk
Hallo Heinz,
da hat ein Teil meines Codes gefehlt. Und dein Open-Ereignis habe ich auch aufgeräumt.
https://www.herber.de/bbs/user/30674.zip
Es kann sein, dass es beim ersten mal ein bisschen dauert, bis es den Ordner gefunden hat. Danach sucht es nur noch, wenn sich der Pfad des Ordners ändert.
Gruß
Nepumuk

Anzeige
AW: Pfad Automatisch Einlesen
04.02.2006 23:22:30
Heinz
Hallo Nepumuk
Echt SPITZE
Recht herzlichen Dank
Wünsche eine gute Nacht.
Gruss Heinz
PS:Muss leider noch bis 5 Uhr früh arbeiten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige