Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
372to376
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
372to376
372to376
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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
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

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige