Herbers Excel-Forum - das Archiv

Kopieren von einer anderen Excel Datei

Bild

Betrifft: Kopieren von einer anderen Excel Datei
von: Andreas

Geschrieben am: 18.12.2006 21:26:16
Hallo,
ich sitze hier seit einiger Zeit und versuche ein Problem zu lösen. Ich möchte mittels eines Makro (ausgewählte) Daten aus einer anderen Datei UND allen 3 Tabellenblättern der Datei in die Datei kopieren in der ich mich befinde. Wenn es geht in die Datei in der mich befinde und in ein anderes Tabellenblatt, als das Makro ist.
Option Explicit
Sub Kopieren()
Dim Wieder as Integer
For Wieder = 1 To 300
If Cells(wieder, 1) = "DAT" Then _
Range (Cells(Wieder, 1), Cells(Wieder, 20)).copy _
Sheets("Blatt1").Cells(Sheets("Blatt1").Range("2000").End(xlUp).Offset(1, 0).Row, 1)
Next
End Sub

Mit dem Makro schaffe ich es lediglich Daten in ein anderes Tabellenblatt der gleichen Datei zu kopieren.
Bild

Betrifft: AW: Kopieren von einer anderen Excel Datei
von: fcs

Geschrieben am: 18.12.2006 23:13:43
Hallo Andreas,
hier eine Lösungsmöglichkeit. Dabei wird im Makro der Datei-Öffnen-Dialog angezeigt, um die Datei mit den Daten zu öffnen.
Den Namen der Zieltabelle muss du ggf. noch anpassen.
Gruss
Franz
Option Explicit
Sub Kopieren()
Dim wbAktiv As Workbook, wbDatei As Workbook, Datei
Dim wksZiel As Worksheet, wksDatei As Worksheet
Dim Wieder As Integer, I As Integer
Set wbAktiv = ActiveWorkbook
Set wksZiel = wbAktiv.Worksheets("Tabelle1")
Datei = Application.Dialogs(xlDialogOpen).Show
If Datei = False Then Exit Sub
Set wbDatei = ActiveWorkbook
For I = 1 To 3
Set wksDatei = wbDatei.Worksheets(I)
With wksDatei
For Wieder = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(Wieder, 1) = "DAT" Then _
.Range(.Cells(Wieder, 1), .Cells(Wieder, 20)).Copy _
wksZiel.Cells(wksZiel.Range("2000").End(xlUp).Offset(1, 0).Row, 1)
Next
End With
Next
wbDatei.Close
End Sub

Bild

Betrifft: AW: Kopieren von einer anderen Excel Datei
von: Erich G.

Geschrieben am: 18.12.2006 23:16:19
Hallo Andreas.
probier mal
Option Explicit
Sub Kopieren()
Dim Wieder As Long
Dim wsQ As Worksheet, lngZ As Long
With Sheets("Blatt1")
lngZ = .Cells(Rows.Count, 1).End(xlUp).Row
For Each wsQ In Workbooks("Leute.xls").Worksheets ' Quellmappe anpassen - muss offen sein
For Wieder = 1 To 300
If wsQ.Cells(Wieder, 1) = "DAT" Then
lngZ = lngZ + 1
Range(wsQ.Cells(Wieder, 1), wsQ.Cells(Wieder, 20)).Copy .Cells(lngZ, 1)
End If
Next Wieder
Next wsQ
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Kopieren von einer anderen Excel Datei
von: Andreas

Geschrieben am: 19.12.2006 21:44:11
Danke euch beiden,
der Vorschlag von Erich klappt sehr gut. Bei dem anderen zeigt er mir eine Fehlermeldung für
If .Cells(Wieder, 1) = "DAT" Then _
.Range(.Cells(Wieder, 1), .Cells(Wieder, 20)).Copy _
wksZiel.Cells(wksZiel.Range("2000").End(xlUp).Offset(1, 0).Row, 1)
an.
Ist es eigentlich möglich das ich vorher manuell den zu suchenden Datensatz eingebe, so dass ich zB "DAT" suchen, kopieren und speichern kann und dann "DAZ" eingebe und wieder das gleiche mache, ohne es im Makro zu verändern?
Bild

Betrifft: AW: Kopieren von einer anderen Excel Datei
von: Erich G.

Geschrieben am: 19.12.2006 22:16:23
Hallo Andreas,
danke für deine Rückmeldung!
So ganz habe ich deinen Wunsch nicht verstanden. Wo willst du "DAZ" eingeben?
Ich bin mal von Zelle A5 auf Blatt1 ausgegangen - das kannst du ja ändern, wenn es nicht passt.
Nach dem Wert (z. B. DAT oder DAZ) der Zelle wird jetzt gesucht:
Option Explicit
Sub Kopieren()
Dim Wieder As Long
Dim wsQ As Worksheet, lngZ As Long, strTxt as string
With Sheets("Blatt1")
strTxt = .Range("A5")                                  ' evtl. anpassen
lngZ = .Cells(Rows.Count, 1).End(xlUp).Row
For Each wsQ In Workbooks("Quellmappe.xls").Worksheets ' Quellmappe anpassen - muss offen sein
For Wieder = 1 To 300
If wsQ.Cells(Wieder, 1) = strTxt Then
lngZ = lngZ + 1
Range(wsQ.Cells(Wieder, 1), wsQ.Cells(Wieder, 20)).Copy .Cells(lngZ, 1)
End If
Next Wieder
Next wsQ
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Bild

Betrifft: AW: Kopieren von einer anderen Excel Datei
von: Andreas

Geschrieben am: 21.12.2006 18:22:39
Hallo Erich,
die Lösung kommt schon fast hin. Nur möchte ich 1) das Eingabefeld in einem Tabellenblatt haben, 2) in derselben Datei möchte ich die Daten in ein ANDERES Tabellenblatt laden - 3) welche ich aus einer einer anderen Datei beziehe.
Das bedeutet, Punkt 2 u. 3 sind super gelöst, nur habe ich zur Zeit das Eingabefeld auf dem gleichen Tabellenblatt wie die Daten.
Grüße Andreas
Bild

Betrifft: AW: Kopieren von einer anderen Excel Datei
von: Erich G.

Geschrieben am: 21.12.2006 18:55:53
Hallo Andreas,
dann so:
Sub Kopieren()
Dim Wieder As Long
Dim wsQ As Worksheet, lngZ As Long, strTxt As String
strTxt = Sheets("ein anderes Blatt").Range("A5")          ' anpassen
With Sheets("Blatt1")
lngZ = .Cells(Rows.Count, 1).End(xlUp).Row
For Each wsQ In Workbooks("Quellmappe.xls").Worksheets ' Quellmappe anpassen - muss offen sein
For Wieder = 1 To 300
If wsQ.Cells(Wieder, 1) = strTxt Then
lngZ = lngZ + 1
Range(wsQ.Cells(Wieder, 1), wsQ.Cells(Wieder, 20)).Copy .Cells(lngZ, 1)
End If
Next Wieder
Next wsQ
End With
End Sub
Rückmeldung wäre nett! - Erich aus Kamp-Lintfort wünscht euch schöne Feiertage!
 Bild
Excel-Beispiele zum Thema "Kopieren von einer anderen Excel Datei"
Blätter in andere Arbeitsmappen kopieren Module von Mappe zu Mappe kopieren
Arbeitsblatt 40 mal kopieren Schriftgröße beim Kopieren verdoppeln
Beim Kopieren auch die Zeilenhöhe und Spaltenbreite übernehmen Tabellencode nach Kopieren des Blattes löschen
Arbeitsmappe blitzschnell kopieren VBE-Namen der Blattmodule beim Kopieren festlegen
Blattinhalt von einer zur anderen Arbeitsmappe kopieren Formel bis zur letzten Zeile der Nebenspalte kopieren