Thema Datum  Von Nutzer Rating
Antwort
24.09.2021 22:50:20 Elmo84
NotSolved
25.09.2021 08:50:48 Gast60693
NotSolved
25.09.2021 13:53:22 Elmo84
NotSolved
26.09.2021 23:34:13 Nobody
NotSolved
27.09.2021 17:33:34 Elmo84
NotSolved
27.09.2021 18:32:49 Gast35658
NotSolved
27.09.2021 18:38:40 Nobody
NotSolved
27.09.2021 19:03:50 Elmo84
NotSolved
27.09.2021 20:00:18 Nobody
NotSolved
Blau Excel VBA MoveFile - Zielpfad in Unterordner ermitteln
28.09.2021 11:54:37 Nobody
NotSolved
28.09.2021 21:03:34 Nobody
NotSolved
03.10.2021 13:16:13 elmo84
NotSolved

Ansicht des Beitrags:
Von:
Nobody
Datum:
28.09.2021 11:54:37
Views:
450
Rating: Antwort:
  Ja
Thema:
Excel VBA MoveFile - Zielpfad in Unterordner ermitteln

Hallo          Ziel erreicht ....   Juhu

ich habe ein komplett laufendes Programm zum verschieben von Dateien. Mit einem Test Ordrner getestet. Hier mein Testaufbau zum nachbauen.

In einem Testordner liegen zwei weitere Ordner:  Statusliste und Schäden als Ordner.  Im Schäden Ordner zwei Ordner für Kund A, Kunde B

Im Stutusordner sind drei Dateien mit der Überschrift:  Kunde A Schaden 1.xlsx, Kunde A Schaden 2.xlsx, Kunde B Schaden 1

In der Verschiebedatei sind drei Button zum Makro Start:  Ordner_auflisten,   Ordner_suchen_2,  Dateien_verschieben

Das Suchmakro wurde von mir geändert, weil ich einen Gedankenfehler hatte. Der Dateiname in Spalte C ist ja länger als der Ordnername in Spalte G. Mein erster Suchlauf konnte somit nicht erfolgreich sein. Erst durch den Aufbau eines Test Ordners fiel mir der Fehler auf. Sinnvoll ist es den Unterordner Name am letzten "\" abzuschneiden, und in Spalte C nach Dateien suchen wo der Ordnername vorkommt!! Das funktioniert auch erfolgreich.

Anschliessend nach dem Verrschieben listet das 3. Makro automatisch beide Ordner auf, so das man das Verschieben auf Anhieb sieht. Bei mir klappte es einwandfrei. Nun bin ich gespannt wie dieser neue Aufbau bei dir funktioniert? Ich hoffe alles klappt so wie du dir es gewünscht hast. Toi toi toi ...

Hinweis:      ich bin nicht jeden Tag im Forum, pausiere manchmal mehrere Wochen. Diesen Thread beobachtet ich bis zum Wochenende.

mfg Nobody

Modul 1

Option Explicit         '28.9.2021  Nobody  für VBA Forum
Dim lngCount As Long    'Dateien verschieben Makro


'Zelle C1=Status Ordner, G1=Schäden Ordner
'in diesen Zellen bitte Ordnerpfad angeben

Sub Ordner_auflisten()
    With ThisWorkbook.Worksheets("Tabelle4")
        .Range("A4:J1000").Clear
        lngCount = 3    '1.Zeile zum auflistern
        SearchFiles_Status Range("C1"), "*.*"  '"*.pdf"
        lngCount = 3    '1.Zeile zum auflistern
        SearchFiles_Schäden Range("G1"), "*.*"  '"*.pdf"
    End With
End Sub


Private Sub SearchFiles_Status(strFolder As String, strFileName As String)
    Dim objFolder As Object, d As Integer
    Dim objFile As Object, objFSO As Object
    With ThisWorkbook.Worksheets(4)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    lngCount = lngCount + 2
    Cells(lngCount, 3) = strFolder
    Cells(lngCount, 3).Font.ColorIndex = 5
    For Each objFile In objFSO.GetFolder(strFolder).Files
        If objFile.Name Like strFileName Then
            lngCount = lngCount + 1: d = d + 1
            Cells(lngCount, 3) = objFile.Name
        End If
    Next
    If d = 0 Then lngCount = lngCount - 2
    For Each objFolder In objFSO.GetFolder(strFolder).SubFolders
        SearchFiles_Status strFolder & "\" & objFolder.Name, strFileName
    Next
    End With
End Sub


Private Sub SearchFiles_Schäden(strFolder As String, strFileName As String)
    Dim objFolder As Object, d As Integer
    Dim objFile As Object, objFSO As Object
    With ThisWorkbook.Worksheets(4)
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    lngCount = lngCount + 2
    Cells(lngCount, 7) = strFolder
    Cells(lngCount, 7).Font.ColorIndex = 5
    For Each objFile In objFSO.GetFolder(strFolder).Files
        If objFile.Name Like strFileName Then
            lngCount = lngCount + 1: d = d + 1
            Cells(lngCount, 7) = objFile.Name
        End If
    Next
    If d = 0 Then lngCount = lngCount - 2
    For Each objFolder In objFSO.GetFolder(strFolder).SubFolders
        SearchFiles_Schäden strFolder & "\" & objFolder.Name, strFileName
    Next
    End With
End Sub

 


Modul 2

Option Explicit         '28.9.2021  Nobody  für VBA Forum
Dim AC As Range, lz1 As Long
Dim Adr1 As String, rFind As Range

 

Sub Ordner_suchen_2()
Dim SuName As String, n As Integer
With ThisWorkbook.Worksheets("Tabelle4")
     .Range("E4:E1000").Clear
      lz1 = .Cells(Rows.Count, 7).End(xlUp).Row
      Application.ScreenUpdating = False
    
      For Each AC In .Range("G5:G" & lz1)
         If InStr(AC, ":\") Then
         'Kunden Ordner ermitteln  (Pfad abschneiden)
         SuName = Trim(Mid(AC, InStrRev(AC, "\") + 1))
         Set rFind = .Columns(3).Find(What:=SuName, After:=[c5], LookIn:=xlFormulas, LookAt:= _
             xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)

         If Not rFind Is Nothing Then
            Adr1 = rFind.Address
            Do
               If InStr(rFind, SuName) Then
                  rFind.Offset(0, 1) = AC.Value
                  n = n + 1
               End If
               Set rFind = .Columns(3).FindNext(rFind)
            Loop Until rFind.Address = Adr1
         End If
nx:      End If
      Next AC
      MsgBox n & "  Dateien markiert"
End With
End Sub

 


Modul 3

Option Explicit         '28.9.2021  Nobody  für VBA Forum
Dim AC As Range, lz1 As Long

 

Sub Dateien_verschieben()
Dim quelle As String, n As Integer
Dim Ziel As String, Datei As String
With ThisWorkbook.Worksheets("Tabelle4")
      lz1 = .Cells(Rows.Count, 3).End(xlUp).Row
      Application.ScreenUpdating = False
      
      For Each AC In .Range("C5:C" & lz1)
         If InStr(AC, ":\") Then GoTo nx
         If AC.Offset(0, 1) <> Empty Then
            Datei = Trim(AC)
            quelle = Range("C1") & "\" & Datei
            Ziel = AC.Offset(0, 1) & "\" & Datei
            Name quelle As Ziel
            n = n + 1
nx:      End If
      Next AC
      MsgBox n & "  Dateien verschoben"
      Call Ordner_auflisten
End With
End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
24.09.2021 22:50:20 Elmo84
NotSolved
25.09.2021 08:50:48 Gast60693
NotSolved
25.09.2021 13:53:22 Elmo84
NotSolved
26.09.2021 23:34:13 Nobody
NotSolved
27.09.2021 17:33:34 Elmo84
NotSolved
27.09.2021 18:32:49 Gast35658
NotSolved
27.09.2021 18:38:40 Nobody
NotSolved
27.09.2021 19:03:50 Elmo84
NotSolved
27.09.2021 20:00:18 Nobody
NotSolved
Blau Excel VBA MoveFile - Zielpfad in Unterordner ermitteln
28.09.2021 11:54:37 Nobody
NotSolved
28.09.2021 21:03:34 Nobody
NotSolved
03.10.2021 13:16:13 elmo84
NotSolved