Donnerstag, Juni 4, 2020

Excel VBA makro zum kopieren von Dateien von einem Speicherort zu einem anderen auf der Grundlage der Datei-Pfad in der Spalte

Ich gesucht habe durchaus ein paar andere /ähnliche Themen, aber nicht in der Lage waren, mir zu helfen bekommen, was ich brauche.

Habe ich eine Liste von Datei-Pfade in Spalte A, muss ich kopieren Sie jede Datei in ein Verzeichnis, das genau die gleiche Ordner-Pfad (wie ein Backup wiederhergestellt wird).

So, ein makro durchläuft Spalte a und Spalte kopiert eine Datei und füge ihn in Spalte B Ort

Spalte A

C:\Users\user\Desktop\Test\test1\test1d.txt

C:\Users\user\Desktop\Test\test2\test2d.txt

C:\Users\user\Desktop\Test\test3\test3d.txt

Spalte B

D:\Users\Benutzer\Desktop\Test\test1\

D:\Users\user\Desktop\Test\test2\

D:\Users\user\Desktop\Test\test3\

Ich weiß, es wäre einfach nur das zu tun, eins nach dem anderen, aber ich habe über 8.000 Dateien, die ich brauche, um grundsätzlich zu kopieren, und fügen Sie Sie. auf ein Laufwerk hatte, dass einige 180gbs Dateien auf ihm.

  • Siehe rondebruin.nl/win/s3/win026.htm
  • searched quite a few different / similar topics, but non were able to help @tigeravatar hat dies mehrmals getan hier bei SO.
  • Können Sie einen link zu mir? ich meine, ich habe schon googeln den ganzen Tag, und dann habe ich gelesen und versucht, über 6 oder so auf mich hier.
  • Daneben, dass man nicht tut, was ich brauche, es zu tun. dass one erschien zum kopieren von Verzeichnissen als eine form mit vba zu tun, ein back-up, nicht unbedingt ein restore… es Kopien, die Sie an ein vorgegebenes Ziel… und der code oben, das speziell sagt, es wird nur 1 zu einer Zeit. Vielleicht lese ich das falsch, oder ich verstehe einfach nicht, wie es war, aber es scheint nicht zu sein, was ich mache…
  • Daneben finden Sie in diesem Teil, die Kopie von & zwei statisch sind, meine sind auch varieren, durch die Reihe.Sub Copy_Folder() ‚Dieses Beispiel kopiert alle Dateien und Unterordner aus FromPath zu ToPath. ‚Hinweis: Wenn ToPath bereits existieren, wird es überschreiben Sie vorhandene Dateien in diesen Ordner“, wenn ToPath nicht vorhanden, es wird für Sie gemacht. Dim FSO As Object Dim FromPath As String Dim ToPath As String FromPath = „C:\Users\Ron\Data“ ‚<< Ändern ToPath = „C:\Users\Ron\Test“ ‚<< Ändern
  • findwindow – ich habe gerade eine Suche für @tigeravatar, und keiner seiner Ausführungen auch nur im entferntesten nahe zu kommen, was ich verlange. vielen Dank für die Richtung, obwohl
  • stackoverflow.com/questions/35726602/… tut dies für eine Zeile brauchen Sie nur eine Schleife. Und es gibt ein paar andere, nicht ganz so relevant.
  • Jerry – für jetzt, dies ist eine, die ich versuche, mit zu arbeiten, bisher ohne Glück. ich halte den thread aktualisiert, wenn bin ich erfolgreich. Ich bin mir nicht bewusst, wie man es an die Schleife, aber wenn ich könnte es tun, nur ein Erster, kann ich wohl schauen, wie man die Quelle Weg-und dst-Pfad-Schleife
  • stackoverflow.com/questions/18617349/…
  • ich habe meine Lösung gelöst in die Antworten. Danke für alle, die wertvolle Informationen zur Verfügung gestellt.
  • findwindow, das ist definitiv nicht zu dieser. das sind excel-Formeln, keine Makros. es ist auch nicht kopieren oder einfügen einer Datei in keinster Weise.
  • findwindow – bitte Lesen Sie die gesamte Frage vor der Beantwortung der nächsten Zeit, die Sie sparen würde uns allen unnötigen ärger. ich glaube, Sie sah nur auf die Spalte A und Spalte B und angenommen ich wollte in der B-Spalte die Ergebnisse, das ist definitiv hier nicht der Fall.

InformationsquelleAutor mkn95u0 | 2016-05-11

4 Kommentare

  1. 1

    Schleife über die Zeilen und verwenden Sie FileCopy, so etwas wie (ich bin frei eingeben diesen, so müssen Sie möglicherweise zum Debuggen)

    Sub CopyFiles
    Dim X as long
    For X = 2 to range("A" & Rows.count).end(xlup).row 'Change 2 to 1 if you don't have headers
        FileCopy Range("A" & X).Text Range("B" & X).Text
    Next
    End Sub

    Ich weiß nicht, ob müssen Sie den Namen der Datei auf dem Ziel, wie ich noch nie verwendet, die FileCopy-Funktion, aber wenn Sie tun, ich bin sicher, Sie können die Quelle aus Spalte A, ohne Hilfe von mir. Hinweis Split und Ubound, um es zu bekommen

    • Danke, ich landete bewegen der sourcepath-und Sommerzeit Pfad innerhalb der Für r = Rubrik, zu ändern, passen die Struktur der Schleife (Bereich“c“ 7 r), dann verwendet Ihr & Zeilen.Zählung).end(xlup).Zeile anstelle des 3000, – … ich werde berichten in ein paar Minuten. ich bin in der Lage zu bekommen, einige mit Fehlern, aber ich denke, ich habe fast es
  2. 0

    Bitte versuchen Sie es wie folgt.

    Kopieren oder Verschieben einer Datei

    Für eine Datei Sie können die VBA-Namen und die FileCopy-Funktion und für ganze Ordner oder eine Menge von Dateien verwenden, die anderen makro-Beispiel ist auf dieser Seite.

    Sub Copy_One_File()
        FileCopy "C:\Users\Ron\SourceFolder\Test.xls", "C:\Users\Ron\DestFolder\Test.xls"
    End Sub
    
    Sub Move_Rename_One_File()
    'You can change the path and file name
        Name "C:\Users\Ron\SourceFolder\Test.xls" As "C:\Users\Ron\DestFolder\TestNew.xls"
    End Sub

    Kopieren oder verschieben Sie mehrere Dateien oder komplette Ordner

    Hinweis: Lesen Sie die kommentierte code-Zeilen in den code

    Sub Copy_Folder()
    'This example copy all files and subfolders from FromPath to ToPath.
    'Note: If ToPath already exist it will overwrite existing files in this folder
    'if ToPath not exist it will be made for you.
        Dim FSO As Object
        Dim FromPath As String
        Dim ToPath As String
    
        FromPath = "C:\Users\Ron\Data"  '<< Change
        ToPath = "C:\Users\Ron\Test"    '<< Change
    
        'If you want to create a backup of your folder every time you run this macro
        'you can create a unique folder with a Date/Time stamp.
        'ToPath = "C:\Users\Ron\" & Format(Now, "yyyy-mm-dd h-mm-ss")
    
        If Right(FromPath, 1) = "\" Then
            FromPath = Left(FromPath, Len(FromPath) - 1)
        End If
    
        If Right(ToPath, 1) = "\" Then
            ToPath = Left(ToPath, Len(ToPath) - 1)
        End If
    
        Set FSO = CreateObject("scripting.filesystemobject")
    
        If FSO.FolderExists(FromPath) = False Then
            MsgBox FromPath & " doesn't exist"
            Exit Sub
        End If
    
        FSO.CopyFolder Source:=FromPath, Destination:=ToPath
        MsgBox "You can find the files and subfolders from " & FromPath & " in " & ToPath
    
    End Sub

    Finden Sie alle details über den link unten.

    http://www.rondebruin.nl/win/s3/win026.htm

  3. 0

    Ok,

    Also von dem, was ich in der Lage gewesen zu vervollständigen, hier ist der code, den ich manipuliert, von
    excel-vba-makro-kopieren von mehreren Dateien von Ordner zu Ordner

    Sub copy()
    Dim r As Long
    Dim SourcePath As String
    Dim dstPath As String
    Dim myFile As String
    On Error GoTo ErrHandler
    For r = 2 To Range("A" & Rows.Count).End(xlUp).Row
    SourcePath = Range("C" & r)
    dstPath = Range("D" & r)
    myFile = Range("A" & r)
    FileCopy SourcePath & "\" & myFile, dstPath & "\" & myFile
    If Range("A" & r) = "" Then
    Exit For
    End If
    Next r
    MsgBox "The file(s) can found in: " & vbNewLine & dstPath, , "COPY COMPLETED"
    ErrHandler:
    MsgBox "Copy error: " & SourcePath & "\" & myFile & vbNewLine & vbNewLine & _
    "File could not be found in the source folder", , "MISSING FILE(S)"
    Range("A" & r).copy Range("F" & r)
    Resume Next
    End Sub

  4. 0

    Code unten funktioniert gut für mich. Aber es ist nicht in der Lage, Dateien kopieren, Dateien aus Unterordnern

    Sub copy() Dim r As Long
        Dim SourcePath As String
        Dim dstPath As String
        Dim myFile As String
        On Error GoTo ErrHandler
        For r = 2 To Range("A" & Rows.Count).End(xlUp).Row
        SourcePath = Range("C" & r)
        dstPath = Range("D" & r)
            myFile = Range("A" & r)
            FileCopy SourcePath & "\" & myFile, dstPath & "\" & myFile
            If Range("A" & r) = "" Then
               Exit For
            End If
        Next r
            MsgBox "The file(s) can found in: " & vbNewLine & dstPath, , "COPY COMPLETED" ErrHandler:
        MsgBox "Copy error: " & SourcePath & "\" & myFile & vbNewLine & vbNewLine & _
        "File could not be found in the source folder", , "MISSING FILE(S)" Range("A" & r).copy Range("F" & r) Resume Next End Sub

Kostenlose Online-Tests