Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Daten aus zweiter Datei kopieren

Forumthread: VBA: Daten aus zweiter Datei kopieren

VBA: Daten aus zweiter Datei kopieren
29.01.2004 08:18:10
Anita
Hallo zusammen,
Immer noch folgendes Problem:
Tabelle 1 enthält Werte in Spalte A-P. Bei Eingabe eines Wertes in Tabelle 2 Spalte P soll diese Eingabe mit den Inhalten in Tabelle 1 Spalte P verglichen und die komplette Zeile MIT Formatierungen (Farbig hinterlegte Zellen, ect.) von Tabelle 1 nach Tabelle 2 kopiert werden.
Mit folgendem Code funktioniert das auch problemlos.

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws1 As Worksheet
Dim zeile As Long
Set ws1 = ThisWorkbook.Worksheets(1)
zeile = 2
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column = 16 Then
Do Until IsEmpty(ws1.Cells(zeile, "P"))
If Target = ws1.Cells(zeile, "P") Then
' Werte aus Tabelle 1 übernehmen
ws1.Range(ws1.Cells(zeile, 1), ws1.Cells(zeile, 16)).Copy
Me.Range(Me.Cells(Target.Row, 1), Me.Cells(Target.Row, 16)). _
PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = xlCut
Target.Select
Exit Do
End If
zeile = zeile + 1
Loop
End If
End Sub


Jetzt die Frage:
Wie muss ich den Code abändern, wenn die Daten nicht in der Tabelle 1 derselben Arbeitsmappe, sondern in einer anderen Arbeitsmappe stehen??
Vielen Dank für jeden Tipp,
Anita

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Daten aus zweiter Datei kopieren
29.01.2004 08:27:53
Harald Kapp
Hallo Anita,
ich denke, so könnte es gehen:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws1, ws2 As Worksheet
Dim wb2 As Workbook
Dim zeile As Long
Set ws1 = ThisWorkbook.Worksheets(1)
Set wb2 = Workbooks.Open("c:\temp\mappe2.xls")
Set ws2 = wb2.Worksheets(1)
zeile = 2
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column = 16 Then
Do Until IsEmpty(ws2.Cells(zeile, "P"))
If Target = ws2.Cells(zeile, "P") Then
' Werte aus Tabelle 1 übernehmen
ws2.Range(ws1.Cells(zeile, 1), ws1.Cells(zeile, 16)).Copy
Me.Range(Me.Cells(Target.Row, 1), Me.Cells(Target.Row, 16)). _
PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = xlCut
Target.Select
Exit Do
End If
zeile = zeile + 1
Loop
End If
wb2.Close
End Sub

Gruß Harald
Anzeige
Korrektur
29.01.2004 08:29:32
Harald Kapp

Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws1, ws2 As Worksheet
Dim wb2 As Workbook
Dim zeile As Long
Set ws1 = ThisWorkbook.Worksheets(1)
Set wb2 = Workbooks.Open("c:\temp\mappe2.xls")
Set ws2 = wb2.Worksheets(1)
zeile = 2
If Target.Cells.Count > 1 Then Exit Sub
If Target.Column = 16 Then
Do Until IsEmpty(ws2.Cells(zeile, "P"))
If Target = ws2.Cells(zeile, "P") Then
' Werte aus Tabelle 1 in workbook 2übernehmen
ws2.Range(ws2.Cells(zeile, 1), ws2.Cells(zeile, 16)).Copy
Me.Range(Me.Cells(Target.Row, 1), Me.Cells(Target.Row, 16)). _
PasteSpecial Paste:=xlPasteAll
Application.CutCopyMode = xlCut
Target.Select
Exit Do
End If
zeile = zeile + 1
Loop
End If
wb2.Close
End Sub

Anzeige
AW: VBA: Daten aus zweiter Datei kopieren
29.01.2004 09:43:52
Anita
Hallo Harald,
erstmal vielen Dank. Die Daten werden nach Eingabe eines entsprechenden Kriteriums aus Mappe2 auch übernommen, Mappe 2 ist dabei zunächst geschlossen. Dennoch kommt jedesmal die Meldung, "Datei ist bereits geöffnet...", mit der Frage, ob sie erneut geöffnet werden soll. Wähle ich JA, macht die "Select-Methode" Probleme, wähle ich NEIN, wird die "Open-Methode" angemeckert. Hast Du noch eine Idee, wie ich das verhindern kann??
Danke Dir,
Grüsse
Anita
Anzeige
AW: VBA: Daten aus zweiter Datei kopieren
29.01.2004 10:12:01
Harald Kapp
Hallo Anita,
probier mal folgenden Teil an der Stelle des vorhergehenden:
Set ws1 = ThisWorkbook.Worksheets(1)
If wb2 Is Nothing Then
Set wb2 = Workbooks.Open("c:\temp\mappe2.xls")
Set ws2 = wb2.Worksheets(1)
End If
Bei mir tritt die Fehlermeldung zwar nicht auf, aber das kann auch daran liegen, dass meine Testdaten anders aussehen, als Deine Daten. Evtl. wird die Change-Methode mehrfach aufgerufen, bevor die Mappe 2 wieder geschlossen wurde.
Falls der obige Code noch nicht reicht, stelle die Dim Anweisung wir folgt vor die Change-Methode:
Public ws1, ws2 As Worksheet
Public wb2 As Workbook
Private Sub Worksheet_Change(ByVal Target As Range)
Dim zeile As Long
Set ws1 = ThisWorkbook.Worksheets(1)
If wb2 Is Nothing Then
Set wb2 = Workbooks.Open("c:\temp\mappe2.xls")
Set ws2 = wb2.Worksheets(1)
End If

Viel Erfolg
Harald

Anzeige
AW: VBA: Daten aus zweiter Datei kopieren
29.01.2004 10:59:45
Anita
Hallo Harald,
nach der ersten Abänderung kamen die gleichen Fehlermeldungen wieder, nach der zweiten kommt jetzt die Meldung, "Select-Methode des Range-Objekts" fehlerhaft. Fällt Dir dazu noch was ein??
Danke für Deine Mühe
Anita
Jetzt wird's eng
29.01.2004 11:07:59
Harald Kapp
Hallo Anita,
sorry, leider nicht.
Du kannst mal versuchen, im VBA-Editor den Code im Einzelschritt abzuarbeiten und Die die Werte der einzelnen Variablen Schritt für Schritt anzugucken. Ich vermute, dass die Target-Variable einen unsinnigen Wert hat, so dass Select fehlschlägt.
Evt. funktioniert statt "Target.Select" ein "Cells(Target.Row, Target.Column).Select" oder eine äquivalente Range-Anweisung.

Gruß Harald
Anzeige
AW: VBA: Daten aus zweiter Datei kopieren
29.01.2004 11:30:02
Anita
Hallo Harald,
"Cells(Target.Row, Target.Column).Select" geht auch nicht. Ich probier mal etwas herum. Danke Dir auf jeden Fall, vielleicht kriege ich den Rest alleine hin!
Grüsse
Anita
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige