Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1236to1240
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
Inhaltsverzeichnis

Tabelle kopieren und in andere Datei einfügen

Tabelle kopieren und in andere Datei einfügen
VBAmateur
Hallo an alle,
nachdem ich mich hier schon mehrfach mit Code bedient habe, möchte ich erstmal allen danken die sich die Mühe machen für "Gottes Lohn" anderen zu helfen.
Für die Lösung meines aktuellen Problems konnte ich leider nicht das richtige finden. Vielleicht können mir die Profis hier weiterhelfen.
Ich habe zwei Ordner die Excel Dateien enthalten. Dies können bis zu 250 Stück pro Ordner sein. Die Anzahl der Dateien ist in beiden Ordnern aber immer gleich. Die Dateinamen unterscheiden sich nur in den letzten beiden Stellen. Z. B. Auswertung_01_AB und Auswertung _01_CD
Ich möchte ein komplettes Blatt (Tabelle1) aus der einen Datei kopieren und in eine andere Datei einfügen.
Ich habe ein Makro mit dem ich ein Inhaltsverzeichnis der beiden Ordner erstellen kann. Ich stelle mir vor den Inhalt der beiden Ordner (die Dateinamen) in zwei Spalten nebeneinander aufsteigend sortiert aufzulisten.
Nun benötige ich eine Schleife die mir aus der Quelldatei aus z. B. Zelle A1 die Tabelle1 kopiert und in die Zieldatei aus Zelle B1 einfügt. Anschließend aus A2 nach B2, A3 nach B3 usw. bis keine Werte mehr vorhanden sind.
Ich bekomme dies mit meinen Kenntnissen leider nicht hin.
Vielen Dank schonmal.
VBAmateur
AW: Tabelle kopieren und in andere Datei einfügen
11.11.2011 21:33:05
Josef

Hallo ?,
deine Beschreibung ist etwas unverständlich.
Erst sagst du:
"Ich möchte ein komplettes Blatt (Tabelle1) aus der einen Datei kopieren und in eine andere Datei einfügen."
Und dann:
"Nun benötige ich eine Schleife die mir aus der Quelldatei aus z. B. Zelle A1 die Tabelle1 kopiert und in die Zieldatei aus Zelle B1 einfügt."
Was willst du denn nun genau?

« Gruß Sepp »

Anzeige
AW: Tabelle kopieren und in andere Datei einfügen
11.11.2011 22:21:52
VBAmateur
Hallo Sepp,
ich möchte die Tabelle1 aus jeder in Ordner A enthaltenen Datei kopieren und in die dazugehörende Datei aus Ordner B einfügen.
Die Ermittlung der Quell- und Zieldatei soll über eine Auflistung in zwei nebeneinanderliegenden Spalten erfolgen.
Ich liste den Inhalt von Ordner A also in Spalte A auf und den Inhalt des Ordners B in Spalte B. Anchließend sortiere ich beide Spalten aufsteigend. Somit habe ich die Pfade der Dateien mit gleichem Namen (bis auf die unterschiedlichen letzten beiden Stellen) nebeneinander.
Also
Kopiere die Tabelle1 aus der Datei deren Pfad in Zelle A1 steht in die Datei deren Pfad in der rechts daneben stehenden Zelle liegt, also B1. Das kopierte Blatt kann an die erste oder letzte Stelle in der Zieldatei eingefügt werden. Das spielt keine Rolle.
Anschließend A2 nach B2, A3 nach B3 usw.
Hoffentlich etwas klarer beschrieben.
tschau
VBAmateur
Anzeige
AW: Tabelle kopieren und in andere Datei einfügen
11.11.2011 23:14:05
Josef

Hallo ?,
warum muss man dazu erst die Namen auflisten?
Warum nicht einfach alle Dateien im Ordner A durchlaufen, entsprechende Datei in B suchen und Spalte(A) aus Datei(B) in Spalte(B) von Datei(A) kopieren?

« Gruß Sepp »

AW: Tabelle kopieren und in andere Datei einfügen
12.11.2011 10:50:50
VBAmateur
Guten Morgen Sepp,
Du schreibst:
Warum nicht einfach alle Dateien im Ordner A durchlaufen, entsprechende Datei in B suchen
das ist genau was ich brauche, ich weiss aber nicht wie ich da hinbekommen soll. Die entsprechende Datei ist diejenige die genauso heißt wie die andere BIS auf die letzten beiden Stellen.
Ich hatte deshalb die Idee für die Zuordnung die Auflistung zu verwerden.
Also Quelldatei (der Pfad) steht in Zelle A1 und Zieldatei (der Pfad) steht daneben in A2.
Und nun sollte das Makro einfach die Tabelle1 aus der Quelldatei kopieren und in die Zieldatei hineinfügen. Es soll immer das gesamte Tabellenblatt kopiert werden, keine Bereiche.
Um Deinen Gedanken aufzugreifen:
Hier müsste man wohl die Strings (Dateinamen) in A und B vergleichen aber dabei die letzten beiden Stellen nicht in den Vergleich mit einbeziehen.
Ergebnis:
Auswertung_01_AB (aus Ordner A)
Auswertung_01_CD (aus Ordner B) werden beim Vergleichen zu:
Auswertung_01
Auswertung_01
Im nächsten Schritt müsste die Tabelle1 aus der einen Datei kopiert werden und in die andere eingefügt werden.
Die Entscheidung welche Datei die Quelldatei und welche die Zieldatei ist könnte man wohl über die Ordner lösen.
Also:
Ordner A enthält die Quelldateien, Ordner B enthält die Zieldateien.
Müssten die Dateien in den Ordnern dazu sortiert sein?
Ich hoffe das hilft ein bischen weiter.
tschau
VBAmateur
Anzeige
AW: Tabelle kopieren und in andere Datei einfügen
12.11.2011 12:38:43
Josef

Hallo ?,
probiere mal den folgenden Code, die Dateien in den Ordnern müssen nicht sortiert sein.
Der Code ist ungetestet!
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub copySheets()
  Dim objWbSource As Workbook, objWbCompare As Workbook
  Dim strSourcePath As String, strComparePath As String, strFile As String
  Dim vntSource() As Variant, vntCompare() As Variant
  Dim lngIndex As Long, lngN As Long
  
  On Error GoTo ErrExit
  
  With Application
    .ScreenUpdating = False
    .EnableEvents = False
    .Calculation = xlCalculationManual
  End With
  
  strSourcePath = "E:\Forum" 'Verzeichnis mit Dateien A
  strComparePath = "E:\Forum\Test" 'verzeichnis mit Dateien B
  
  If Right(strSourcePath, 1) <> "\" Then strSourcePath = strSourcePath & "\"
  If Right(strComparePath, 1) <> "\" Then strComparePath = strComparePath & "\"
  
  strFile = Dir(strSourcePath & "*.xls*", vbNormal)
  
  Do While strFile <> ""
    Redim Preserve vntSource(lngIndex)
    vntSource(lngIndex) = strFile
    lngIndex = lngIndex + 1
    strFile = Dir
  Loop
  
  lngIndex = 0
  
  strFile = Dir(strComparePath & "*.xls*", vbNormal)
  
  Do While strFile <> ""
    Redim Preserve vntCompare(lngIndex)
    vntCompare(lngIndex) = strFile
    lngIndex = lngIndex + 1
    strFile = Dir
  Loop
  
  For lngIndex = 0 To UBound(vntSource)
    For lngN = 0 To UBound(vntCompare)
      If Left(vntCompare(lngN), InStrRev(vntCompare(lngN), ".") - 3) = Left(vntSource(lngIndex), InStrRev(vntSource(lngIndex), ".") - 3) Then
        Set objWbSource = Workbooks.Open(strSourcePath & vntSource(lngIndex))
        Set objWbCompare = Workbooks.Open(strComparePath & vntCompare(lngN))
        objWbCompare.Sheets("Tabelle1").Copy After:=objWbSource.Sheets(1)
        objWbSource.Close True
        objWbCompare.Close False
        Exit For
      End If
    Next
  Next
  
  ErrExit:
  'Meldung bei Fehler
  With Err
    If .Number <> 0 Then
      MsgBox "Fehler in Prozedur:" & vbTab & "Modul1 - copySheets" & Space(35) & vbLf & vbLf & _
        IIf(Erl, "Fehler in Zeile:" & vbTab & Erl & vbLf & vbLf, "") & _
        "Fehlernummer:" & vbTab & .Number & vbLf & vbLf & "Beschreibung:" & vbLf & _
        .Description, vbExclamation, "Fehler - Modul1 - copySheets"
    End If
    .Clear
  End With
  
  With Application
    .ScreenUpdating = True
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
  End With
  
  Set objWbSource = Nothing
  Set objWbCompare = Nothing
End Sub



« Gruß Sepp »

Anzeige
AW: Tabelle kopieren und in andere Datei einfügen
12.11.2011 19:57:33
VBAmateur
Hallo Sepp,
vielen Dank für die Lösung. Testen kann ich das erst morgen.
Ich werde Dir so schnell wie möglich Feedback geben.
tschau
VBAmateur
AW: Tabelle kopieren und in andere Datei einfügen
13.11.2011 21:03:37
VBAmateur
Hallo Sepp,
wunderbar!!! funktioniert tadellos.
Eine kleine Änderung musste ich allerding vornehmen.
Das Makro versucht die "Tabelle1" aus
Set objWbCompare = Workbooks.Open(strComparePath & vntCompare(lngN))
objWbCompare.Sheets("Tabelle1").Copy After:=objWbSource.Sheets(1)
zu kopieren. Der Inhalt von vntCompare(lngN) ist aber die Zieldatei in der es keine "Tabelle1" gibt. Es wird die Fehlermeldung "Index außerhalb des gültigen Bereichs" produziert.
Ich habe einfach die Quell- und Zielpfade getauscht und alles ist perfekt.
Also:
strSourcePath = "F:\Zieldateien\" 'Verzeichnis mit Dateien B
strComparePath = "F:\Quelldateien\" 'Verzeichnis mit Dateien A
Allerdings habe ich nur mit jeweils zwei Quell- und Zieldateien gearbeitet. Sobald ich mit einer großen Menge Dateien getestet habe melde ich mich nochmal.
Aber ich denke das sollte auch funktionieren.
Vielen Dank für Deine Mühe und Hilfe.
Anzeige

395 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige