Microsoft Excel

Herbers Excel/VBA-Archiv

Datei mit bestimmten Namen suchen/kopieren | Herbers Excel-Forum


Betrifft: Datei mit bestimmten Namen suchen/kopieren von: Timothy
Geschrieben am: 18.01.2010 14:01:43

Hallo miteinander,

ich bin leider noch absoluter Neuling in der VBA-Programmierung.

Komme einfach nicht weiter......

Wie kann ich aus dem aktiven Sheet einen Namen (z.B. XYZ ) aus einer Zelle auslesen, diesen dann in einem Verzeichnis suchen, in welchem der Name als Datei gespeichert ist (z.B. C:\Tabellen\XYZ.mpr ), und diese Datei dann in ein gesondertes Verzeichnis kopieren (z.B. in D:\KopierteTabellen\XYZ.mpr) ??

Ich komm einfach nicht dahinter wie das gehen soll.....

Bitte um eure Hilfe. Besten Dank schon im Voraus!

MfG

Timothy

  

Betrifft: AW: Datei mit bestimmten Namen suchen/kopieren von: Josef Ehrensberger
Geschrieben am: 18.01.2010 15:10:29

Hallo Timothy,

Sub copyFile()
  Dim objFSO As Object
  Dim strFileToCopy, strOldPath As String, strNewPath As String
  
  strOldPath = "E:\Temp\" 'Verzeichnis in dem die Datei liegt
  strNewPath = "E:\Temp\Test\" 'Verzeichnis in welches kopiert werden soll
  
  With ActiveSheet
    strFileToCopy = .Range("A1") 'Zelle mit dem Namen
    strFileToCopy = strFileToCopy & ".mpr" 'Suffix anhängen
    If Dir(strOldPath & strFileToCopy, vbNormal) <> "" Then
      Set objFSO = CreateObject("Scripting.FileSystemObject")
      objFSO.copyFile strOldPath & strFileToCopy, strNewPath & strFileToCopy
    End If
  End With
  
  Set objFSO = Nothing
End Sub



Gruß Sepp



  

Betrifft: AW: Datei mit bestimmten Namen suchen/kopieren von: Timothy
Geschrieben am: 18.01.2010 15:59:33

Hallo Sepp,

es funktioniert genauso wie ich es möchte! Vielen Dank, genial wenn es so schlaue Köpfe wie dich gibt!!!

Wenn ich jetzt noch in der Spalte alle Zellen von z.B. 3-8 abarbeiten/kopieren will (H3-H8), dann kann ich dies doch einfach mit einer Schleife machen, oder?!?


  

Betrifft: AW: Datei mit bestimmten Namen suchen/kopieren von: Josef Ehrensberger
Geschrieben am: 18.01.2010 16:10:53

Hallo,

ja genau.

Sub copyFile()
  Dim objFSO As Object, rng As Range
  Dim strFileToCopy, strOldPath As String, strNewPath As String
  
  strOldPath = "E:\Temp\" 'Verzeichnis in dem die Datei liegt
  strNewPath = "E:\Temp\Test\" 'Verzeichnis in welches kopiert werden soll
  
  With ActiveSheet
    For Each rng In Range("A1:A5") 'Bereich anpassen!
      strFileToCopy = rng 'Zelle mit dem Namen
      strFileToCopy = strFileToCopy & ".mpr" 'Suffix anhängen
      If Dir(strOldPath & strFileToCopy, vbNormal) <> "" Then
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        objFSO.copyFile strOldPath & strFileToCopy, strNewPath & strFileToCopy
      End If
    Next
  End With
  
  Set objFSO = Nothing
  Set rng = Nothing
End Sub



Gruß Sepp



  

Betrifft: AW: Datei mit bestimmten Namen suchen/kopieren von: Timothy
Geschrieben am: 18.01.2010 17:03:56


Super, so ähnlich habe ich es jetzt gemacht!
Klasse Sepp!
Hier bin ich wohl wirklich auf einen Experten gestoßen ;);)

Aber jetzt ist mir noch eines aufgefallen, was ich gerne als letztes beheben würde:
Ich habe z.B. in der Spalte A den Wert XYZ doppelt aufgelistet (also z.B. in Zeile 3 und Zeile 4).
Wenn ich jetzt das Makro laufen lasse, kopiert es mir die Datei XYZ.mpr nur einmal.
Ich möchte aber dass dann z.B. der Zweite Wert als XYZ_2.mpr gespeichert wird.

Vielen Dank!
I


  

Betrifft: AW: Datei mit bestimmten Namen suchen/kopieren von: Josef Ehrensberger
Geschrieben am: 18.01.2010 17:53:15

Hallo Timothy,

bitte das nächste mal gleich mit der ganzen "Wahrheit" herausrücken.

Sub copyFile()
  Dim objFSO As Object, rng As Range
  Dim strFileToCopy, strNewFile As String, strOldPath As String, strNewPath As String
  Dim lngC As Long
  
  strOldPath = "E:\Temp\" 'Verzeichnis in dem die Datei liegt
  strNewPath = "E:\Temp\Test\" 'Verzeichnis in welches kopiert werden soll
  
  With ActiveSheet
    For Each rng In Range("A1:A5") 'Bereich anpassen!
      strFileToCopy = rng 'Zelle mit dem Namen
      strFileToCopy = strFileToCopy & ".mpr" 'Suffix anhängen
      lngC = 1
      If Dir(strOldPath & strFileToCopy, vbNormal) <> "" Then
        Do
          strNewFile = Left(strFileToCopy, InStr(1, strFileToCopy, ".") - 1) & _
            IIf(lngC > 1, "_" & CStr(lngC), "") & Mid(strFileToCopy, _
            InStrRev(strFileToCopy, "."))
          lngC = lngC + 1
        Loop While Dir(strNewPath & strNewFile, vbNormal) <> ""
        
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        objFSO.copyFile strOldPath & strFileToCopy, strNewPath & strNewFile
      End If
    Next
  End With
  
  Set objFSO = Nothing
  Set rng = Nothing
End Sub



Gruß Sepp



  

Betrifft: AW: Datei mit bestimmten Namen suchen/kopieren von: Timothy
Geschrieben am: 19.01.2010 09:51:14


Hallo Sepp,

genial deine Lösung, auch wenn ich dein Programmcode in der Do-Schleife nicht ganz durchschaue.... ;-(

Hab ich leider erst später gesehen, dass ich zwei gleiche Werte in einer Spalte habe, also "Sorry" für die nicht ganz korrekte Fragestellung!

Vielen, vielen Dank!


Beiträge aus den Excel-Beispielen zum Thema "Datei mit bestimmten Namen suchen/kopieren"