Thema Datum  Von Nutzer Rating
Antwort
26.03.2021 21:24:38 Harald
*****
Solved
Blau Doppelte Datensätze vermeiden
26.03.2021 23:10:09 Gast70548
*****
Solved
27.03.2021 12:46:29 Gast79617
*****
Solved
28.03.2021 13:18:06 Harald
NotSolved
28.03.2021 15:05:19 ralf_b
NotSolved
29.03.2021 05:14:06 Gast13692
NotSolved
29.03.2021 11:44:05 ralf_b
NotSolved

Ansicht des Beitrags:
Von:
Gast70548
Datum:
26.03.2021 23:10:09
Views:
363
Rating: Antwort:
 Nein
Thema:
Doppelte Datensätze vermeiden

z.B. so:

Option Explicit     ' force variable declaration
Option Compare Text ' "aBc" = "Abc" -> True

Public Sub Test()
  
  Dim objFso        As Object 'Scripting.FileSystemObject
  Dim strFolderSrc  As String
  Dim strFolderDst  As String
  
  strFolderSrc = "D:\SourceFolder"
  strFolderDst = "G:\DestinationFolder"
  
  'Scripting.FileSystemObject - late binding
  Set objFso = CreateObject("Scripting.FileSystemObject")
  
  If Not objFso.FolderExists(strFolderSrc) Then
    Call MsgBox("Source folder '" & strFolderSrc & "' does not exist.", vbExclamation)
    Exit Sub
  End If
  If Not objFso.FolderExists(strFolderDst) Then
    Call MsgBox("Destination folder '" & strFolderDst & "' does not exist.", vbExclamation)
    Exit Sub
  End If
  
  Dim rngCell As Excel.Range
  
  With Worksheets("Fundus")
    .Range("A1:B1").Font.Bold = True
    .Range("A1:B1").Value = Array("[Filename]", "[CopiedFrom]")
    'last free cell in column A
    Set rngCell = .Cells(.Rows.Count, "A").End(xlUp).Offset(1)
  End With
  
  Dim objFileSrc As Object 'Scripting.File
  
  For Each objFileSrc In objFso.GetFolder(strFolderSrc).Files
    If "pdf" = objFso.GetExtensionName(objFileSrc.Name) Then
      If Not FileAlreadyCopied(objFileSrc, objFso) Then
        Call objFileSrc.Copy(strFolderDst)
        'filename without file extension
        rngCell.Value = objFso.GetBaseName(objFileSrc.Name)
        'file path into the cell one to the right
        rngCell.Offset(0, 1).Value = objFileSrc.ParentFolder.Path
        'set next free cell to write into the next file name
        Set rngCell = rngCell.Offset(1)
      End If
    End If
  Next
  
  Set rngCell = Nothing
  Set objFileSrc = Nothing
  Set objFso = Nothing
  
End Sub

Public Function FileAlreadyCopied(File As Object, Fso As Object) As Boolean
  '<ToDo>
End Function

FileAlreadyCopied musst du noch implementieren.

Sprich in Spalte A nach dem Dateinamen suchen, wenn der gefunden wird, dann den Dateipfad mit dem Inhalt der Zelle daneben (also Spalte B) vergleichen. Wenn das auch übereinstimmt, dann FileAlreadyCopied = True setzen; falls nicht, dann weitersuchen - z.B: per Range.Find() oder du iterierst durch alle Zellen per For- oder ForEach-Schleife.

 

Grüße

PS: FileSystemObject (MSDN VBA-Referenz)

PPS: Allgemein gilt: Die MSDN (VBA) ist Dein Freund und Helfer und erste Anlaufstelle (am besten auf Englisch gestellt; die deutsche Übersetzung ist maschinelles ~lala).


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
26.03.2021 21:24:38 Harald
*****
Solved
Blau Doppelte Datensätze vermeiden
26.03.2021 23:10:09 Gast70548
*****
Solved
27.03.2021 12:46:29 Gast79617
*****
Solved
28.03.2021 13:18:06 Harald
NotSolved
28.03.2021 15:05:19 ralf_b
NotSolved
29.03.2021 05:14:06 Gast13692
NotSolved
29.03.2021 11:44:05 ralf_b
NotSolved