Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1764to1768
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

VBA Datentransfer in anderes Workbook

VBA Datentransfer in anderes Workbook
10.06.2020 15:42:48
GismoTB
Hallo zusammen,
ich habe ein kleines Problem und brauche eure Hilfe.
Aus einer Pivottabelle mit 7 Spalten (A-G) möchte ich, dass in Spalte B nach einen Wert gesucht wird.
Wenn dieser Wert (x >0,25) erfüllt wird, möchte ich, dass die Spalte A und B in ein anderes Workbook (Tabelle1 und Spalte E und F) kopiert werden.
Bedingung im InputFile ist, dass die neuen Zeilen unten angefügt werden.
Ich denke, es ist eine Schleife. Meinen Code füge ich mal an:
Sub Transfer()
Dim rngZelle As Range
'Dim Score As String
Dim wbStart As Workbook
Dim wbZiel As Workbook
Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\Users\benutzername\Desktop\Dateninput.xlsx")
For Each rngZelle In wbStart("Tabelle1").Range("B:B")
If rngZelle.Value > 0.25 Then
rngZelle.Cells(, -1).Copy Destination:=wbZiel.Sheets("Tabelle1").Range("E2")
End If
Next rngZelle
End Sub

Mein Problem ist, dass die erste Zeile der Schleifen bereits einen Fehler hat. Ich hoffe ihr könnt mir helfen!
Vielen Dank schon mal.
Liebe Grüße
Thomas

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Datentransfer in anderes Workbook
10.06.2020 16:08:50
ralf_b

In wbStart.Worksheets("Tabelle1").Range("B:B")
Tabelle1 ist ein text. du kannst den nur in einer auflistung( hier Worksheets) nutzen, um dir ein Worksheet( oder Tabelle) zu referenzieren.
wenn du im activen Workbook bist, brauchst du das gar nicht extra benennen. ein anderes Workbook brauchst du erst wenn du die neue Datei erzeugst bzw öffnest.
for each zelle in Range("B:B") würde reichen wenn du in der aktiven Tabelle arbeitest
AW: VBA Datentransfer in anderes Workbook
10.06.2020 16:27:43
GismoTB
Hallo Ralf,
vielen Dank für deine schnelle Antwort.
ich habe die Zeile direkt abgeändert:
For Each rngZelle In Range("B:B")
jetzt kommt direkt der nächste Bug in der zeile:
rngZelle.Cells(, -1).Copy Destination:=wbZiel.Sheets("Tabelle1").Range("E2")
Ich muss gestehen, dass ich das fast erwartet habe.
Ich möchte ja die der Werte in Spalte B und der Werte in Spalte A kopiert werden, daher habe ich .Cells(,-1).Copy geschrieben.
Wie muss die Zeile richtig heißen?
Anzeige
AW: VBA Datentransfer in anderes Workbook
10.06.2020 16:33:10
ralf_b
cells erwartet immer (glaube ich) zeile und spalte. also cells(1,1) oder so.
AW: VBA Datentransfer in anderes Workbook
10.06.2020 16:37:43
ralf_b
was du nehmen kannst ist range("A:B"), dann hast du zwei spalten oder worksheet("tabellex").Columns(spaltennummer) dann hast du auch ne Spalte in der Hand
AW: VBA Datentransfer in anderes Workbook
10.06.2020 16:49:45
GismoTB
Danke, dass du mir bei meinen Problem hilfst.
ich komme da leider auch nicht mit weiter

Sub Transfer()
Dim rngZelle As Range
Dim Score As String
Dim wbStart As Workbook
Dim wbZiel As Workbook
Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\Users\bernertt\Desktop\Dateninput.xlsx")
For Each rngZelle In Range("B:B")
If rngZelle.Value > 0.25 Then
rngZelle.Range("A:B").Copy Destination:=wbZiel.Worksheets(Tabelle1).Range("E2")
End If
Next rngZelle
End Sub

Ist steigt er aus (beim fettgedruckten).
Anzeige
AW: VBA Datentransfer in anderes Workbook
10.06.2020 16:50:15
ralf_b
mach eine for I=zeilenummer to letzteZeile schleife anstatt einer for each schleife
damit kannst du die zelle mit dem zähler i ansprechen und im Ziel auch. jetzt kopiert du alles immer in die selbe zelle.
dim cnt as long
cnt = 2
for i =1 to letztezeile
if rngZelle.Cells(i, "B") > 0.25 then
wbZiel.Sheets("Tabelle1").Cells(cnt ,"E") =rngZelle.Cells(i, "B")
wbZiel.Sheets("Tabelle1").Cells(cnt ,"D") =rngZelle.Cells(i, "A")
cnt = cnt +1
end if
next 

AW: VBA Datentransfer in anderes Workbook
10.06.2020 17:08:26
GismoTB
Okay ich glaube, ich verstehe was du da tust.
Sub Transfer2()
Dim rngZelle As Range
Dim Score As String
Dim wbStart As Workbook
Dim wbZiel As Workbook
Dim cnt As Long
cnt = 2
Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\Users\bernertt\Desktop\Dateninput.xlsx")
For i = 1 To letztezeile
If rngZelle.Cells(i, "B") > 0.25 Then
wbZiel.Sheets("Tabelle1").Cells(cnt, "F") = rngZelle.Cells(i, "B")
wbZiel.Sheets("Tabelle1").Cells(cnt, "E") = rngZelle.Cells(i, "A")
cnt = cnt + 1
End If
Next
End Sub
Sau dumme Frage, muss ich die letzteZeile definieren und wenn ja wie?
Anzeige
AW: VBA Datentransfer in anderes Workbook
10.06.2020 17:16:53
GismoTB
Dumme Frage, habe gefunden:
Sub Transfer2()
Dim rngZelle As Range
Dim Score As String
Dim wbStart As Workbook
Dim wbZiel As Workbook
Dim cnt As Long
cnt = 2
letztezeile = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Set wbStart = ActiveWorkbook
Set wbZiel = Workbooks.Open("C:\Users\bernertt\Desktop\Dateninput.xlsx")
For i = 1 To letztezeile
If rngZelle.Cells(i, "B") > 0.25 Then
wbZiel.Sheets("Tabelle1").Cells(cnt, "F") = rngZelle.Cells(i, "B")
wbZiel.Sheets("Tabelle1").Cells(cnt, "E") = rngZelle.Cells(i, "A")
cnt = cnt + 1
End If
Next
End Sub
Aber hängt bei
If rngZelle.Cells(i, "B") > 0.25 Then
Anzeige
AW: VBA Datentransfer in anderes Workbook
10.06.2020 18:08:37
Werner
Hallo,
vielleicht erklärst du mal, was du eigentlich machen möchtest.
Wenn ich das richtig sehe dann willst du:
1. im Blatt wbStart die Spalte B in einer Schleife durchlaufen
2. für jede Zelle prüfen, ob in Spalte A der Wert größer als 0.25 ist
3. wenn ja, dann die entsprechende Zeile und da Spalte A und B ins Blatt wbZiel kopieren
so weit richtig?
Allerdings überschreibst du dir dadurch
Destination:=wbZiel.Sheets("Tabelle1").Range("E2")

im Zielblatt immer wieder die Zelle E2
Wo also, sollen die Daten im Zielblatt hin?
Gruß Werner
Anzeige
habe eben den Eingangsbeitrag...
10.06.2020 18:28:23
Werner
Hallo,
...nochmal gelesen.
Ich denke du willst das hier:
Sub Transfer()
Dim rngZelle As Range, wbStart As Workbook, wbZiel As Workbook
Set wbZiel = ThisWorkbook
Set wbZiel = Workbooks.Open("C:\Users\benutzername\Desktop\Dateninput.xlsx")
With wbStart.Worksheets("Tabelle1")
For Each rngZelle In .Range("B1:B" & .Cells(.Rows.Count, "B").End(xlUp).Row)
If rngZelle > 0.25 Then
With wbZiel.Worksheets("Tabelle1")
.Cells(.Cells(.Rows.Count, "E").End(xlUp).Offset(1).Row, "E").Resize(, 2).Value = _
rngZelle.Offset(, -1).Resize(, 2).Value
End With
End If
Next rngZelle
End With
Set wbStart = Nothing: Set wbZiel = Nothing
End Sub
Gruß Werner
Anzeige
AW: habe eben den Eingangsbeitrag...
11.06.2020 06:37:50
GismoTB
Guten Morgen Werner,
erst Mal vielen lieben dank für deine Hilfe.
ich möchte das du die Spalte B eine Schleife läuft und nach Werten größer 0,25 sucht.
Wenn ein Werte gefunden wird, sollen die Werte aus Spalte a und b in das Dokument Dateninput in die Spalte E und F kopiert werden.
Ich habe dein Skript heute morgen mal probiert. Bei
With wbStart.Worksheets("Tabelle1")
hängt es mit dem Vermerkt, dass die Variable nicht festgelegt ist.
AW: habe eben den Eingangsbeitrag...
11.06.2020 08:52:35
Werner
Hallo,
mein Fehler, die habe ich ja auch nicht zugewiesen. Ich hab versehentlich zweimal Set wbZiel und die erste Set Anweisung muss natürlich Set wbStart... lauten.
Gruß Werner
Anzeige
AW: habe eben den Eingangsbeitrag...
11.06.2020 09:24:45
GismoTB
Hallo Werner,
ich bin begeistert.
Herzlichen Dank!
Viele Grüße
Thomas
Gerne u. Danke für die Rückmeldung. o.w.T.
11.06.2020 09:32:32
Werner
AW: VBA Datentransfer in anderes Workbook
10.06.2020 18:58:29
ralf_b
ja die mußt du definieren, und der Werner hat das schon getan. dem flutscht das einfach so aus dem handgelenk. :)

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige