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

Austausch von Daten zwischen zwei Dateien

Austausch von Daten zwischen zwei Dateien
11.02.2020 10:12:54
Daten
Hallo zusammen,
ich möchte zwischen zwei Dateien Informationen hin und her schieben mit einem Makro. Ich arbeite mit einer variablen die einmal die Zeile vorgibt aus der kopiert werden soll, die aber auch vorgibt wohin kopiert werden soll.
In die eine Richtung - von wksQuelle zu wksZiel - funktioniert der Kopiervorgang auch problemlos, in die andere Richtung klappt er leider nicht, da wohl die Zelle in die eingefügt werden soll nicht erkannt wird. Sobald ich nämlich mit einer festen Zellenbezeichnung arbeite anstatt der Variablen werde die korrekten Werte eingefügt.
Wie bekomme ich das ganze mit Variabler zum laufen?
Beide Dateien sind geöffnet zu diesem Zeitpunkt

loletzte = Workbooks("Nummer").Worksheets("Laufende Nummern").Range("h2").Value2
Set wksZiel = Workbooks("Nummer").Worksheets("Laufende Nummern")
Set wksQuelle = Workbooks("User").Worksheets("Vorschlag")
wksZiel.Cells(loletzte, 2).Copy Destination:=wksQuelle.Cells(14, 8)
'Werte werden übertragen - funktioniert
wksQuelle.Range("D12").Copy Destination:=wksZiel.Cells(loletzte, 4)
'hier werden keine Werte übertragen
wksQuelle.Range("D14:f14").Copy Destination:=wksZiel.Cells(loletzte, 3) 

Danke für eure Hilfe
Beste Grüße
Walter

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Austausch von Daten zwischen zwei Dateien
11.02.2020 10:48:34
Daten
Hallo Walter,
1. ueberschreibst du dir hiermit
wksQuelle.Range("D14:f14").Copy Destination:=wksZiel.Cells(loletzte, 3) 

was du hier eingefuegt hast:
wksQuelle.Range("D12").Copy Destination:=wksZiel.Cells(loletzte, 4)

denn du fuegst den Bereich D14:F14 in die gleiche Zeile ein in Spalte C. Damit ueberschreibst du, was du vorher in Spalte D eingefuegt hast. Wenn du in die naechste Zeile schreiben willst. Deine Ueberpruefung der letzten Zeile ist eh etwas merkwuerdig. Schaust du immer nach, was die letzte Zeile ist und schreibst das in die Zelle H2?
Schau dir das hier mal an:

'letzte benutzte Zeile finden
loletzte = Workbooks("Nummer").Cells(Rows.Count, 3).End(xlUp).Row
Set wksZiel = Workbooks("Nummer").Worksheets("Laufende Nummern")
Set wksQuelle = Workbooks("User").Worksheets("Vorschlag")
wksZiel.Cells(loletzte, 2).Copy Destination:=wksQuelle.Cells(14, 8)
'Einfuegen in letzte benutzte Zeile +1
wksQuelle.Range("D12").Copy Destination:=wksZiel.Cells(loletzte + 1, 4)
'dann wieder die letzte Zeile feststellen, sonst bleibt die Nummer der letzten Zeile
'in der Variablen und die gerade eingefuegte wird ueberschrieben
loletzte = Workbooks("Nummer").Cells(Rows.Count, 3).End(xlUp).Row
wksQuelle.Range("D14:f14").Copy Destination:=wksZiel.Cells(loletzte + 1, 3)

Gruss Torsten
Anzeige
AW: Austausch von Daten zwischen zwei Dateien
11.02.2020 11:53:30
Daten
Hi Torsten,
danke für deine Antwort. Ich schaue immer nach was die letzte Zeile ist und diese steht dann in dem anderen Tabellenblatt in H2. Daher greift der Code auch wie zuvor beschrieben in eine Richtung auf die korrekte Zelle zu, in die andere Richtung leider nicht.
Letztendlich soll in der jeweiligen Zeile die als loletzte ausgegeben wird neben der Zahl die aus Spalte B gezogen wird in Spalte C und D jeweils Werte eingefügt werden die aus der wiederum anderen Tabelle gezogen werden.
Das sich Werte überschreiben kann ich nicht bestätigen, da es problemlos funktioniert wenn ich eine feste Zelle angebe in die kopiert werden soll, nur eben nicht mit loletzte als Variable.
Die Überlegung die du in deinem Code hast hatte ich auch bereits, da scheitere ich aber leider immer an der Formatierung. Die letzte Zeile die dann ausgegeben wird ist dann immer die die nach jeglicher Formatierung kommt.
Gibt es noch Ideen?
Danke und beste Grüße
Walter
Anzeige
AW: Austausch von Daten zwischen zwei Dateien
11.02.2020 12:04:31
Daten
Dann vermute ich, dass das, was in H2 steht keine Zahl, sondern Text ist (oder Excel interpretiert es als Text).
Versuch mal deine erste Zeile abzuaendern in:
loletzte = CInt(Workbooks("Nummer").Worksheets("Laufende Nummern").Range("h2").Value2)

Gruss Torsten
AW: Austausch von Daten zwischen zwei Dateien
11.02.2020 12:19:23
Daten
Und doch,
natuerlich werden die Werte Ueberschrieben. Angenommen, in H2 steht eine 5.
Dann wird hiermit:
wksQuelle.Range("D12").Copy Destination:=wksZiel.Cells(loletzte, 4)

der Wert aus Quelle, Zelle D12 in Ziel, Zelle D5 geschrieben.
Danach werden mit:
wksQuelle.Range("D14:f14").Copy Destination:=wksZiel.Cells(loletzte, 3)

die Werte aus D14 bis F14 aus Quelle (also 3 Zellen nebeneinander) in die Zelle C5 (und da es 3 Zellen nebeneinder sind, bis E5) uebertragen. Damit ueberschreibst du dir die Zelle D5, die ja im letzten Kopiervorgang beschrieben wurde ist. Ich denke du bringst hier was mit den Spalten durcheinander.
Gruss Torsten
Anzeige
AW: Austausch von Daten zwischen zwei Dateien
11.02.2020 12:44:36
Daten
Hallo Torsten,
danke für deine schnell Antwort. Das hat leider auch nicht geklappt. Wenn ich den Code langsam durchlaufen lasse, dann sehe ich für loletzte auch die korrekte Zahl hinterlegt, aber irgendwie kann diese nicht aufgelöst werden. Ich hab mal zwei Beispieldateien gebastelt.
Datei die das Makro enthält (wksZiel):
  • https://www.herber.de/bbs/user/135125.xlsm

  • Datei die Angabe zur letzten Spalte enthält (wksQuelle):
  • https://www.herber.de/bbs/user/135123.xlsm

  • Vielleicht hast du ja noch eine Idee.
    Vielen Dank und Grüße
    Walter
    AW: Austausch von Daten zwischen zwei Dateien
    11.02.2020 13:24:05
    Daten
    Hallo Walter,
    den Code so. Dann sollte es klappen:
    
    Private Sub LaufendeNranfordern_Click()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim lngZ As Long
    Dim strFileName
    Dim strFilter As String
    Dim loletzte As Long
    Dim wksQuelle As Worksheet, wksZiel As Worksheet
    If ThisWorkbook.Sheets("Vorschlag").Cells(12, 4).Value = "" And ThisWorkbook.Sheets("Vorschlag") _
    .Cells(14, 4).Value = "" Then
    MsgBox ("Bitte Erfasser und Titel ausfüllen")
    Else:
    '** Dateifilter definieren
    strFilter = "Excel-Dateien(*.xlsm*)"
    '** Laufwerk und Pfad definieren, welcher geöffnet werden soll
    ChDrive "C"
    ChDir "C:\Users\Pfad"
    '** Den im Dialogfeld gewählten Namen auslesen
    strFileName = "Nummer"
    '** Prüfen, ob eine gültige Datei ausgewählt wurde
    If strFileName = False Then Exit Sub
    '** Gewählte Datei öffnen
    Set wb = Workbooks.Open(strFileName)
    '** Hinweis ausgeben
    'loletzte = Workbooks("Nummer").Worksheets("Laufende Nummern").Range("h2").Value2
    Set wksZiel = Workbooks("Nummer").Worksheets("Laufende Nummern")
    Set wksQuelle = ThisWorkbook.Worksheets("Vorschlag")
    loletzte = wksZiel.Range("h2").Value
    wksZiel.Cells(loletzte, 2).Copy
    wksQuelle.Cells(14, 8).PasteSpecial xlPasteValues
    wksQuelle.Range("D12").Copy
    wksZiel.Cells(loletzte, 4).PasteSpecial xlPasteValues
    wksQuelle.Range("D14").Copy
    wksZiel.Cells(loletzte, 3).PasteSpecial xlPasteValues
    Application.CutCopyMode = False
    Workbooks("Nummer").Saved = True
    Workbooks("Nummer").Close
    End If
    End Sub
    

    Gruss Torsten
    Anzeige
    AW: Austausch von Daten zwischen zwei Dateien
    11.02.2020 13:45:26
    Daten
    Hi Torsten,
    danke für deine Mühe. Ich hab deinen Code vollständig übernommen, kann aber leider keine Veränderung feststellen (außer CutCopyMode). Leider wird auch weiterhin in die Datei in der loletzte bestimmt wird nicht hinein kopiert.
    wksQuelle.Range("D12").Copy
    wksZiel.Cells(loletzte, 4).PasteSpecial xlPasteValues
    wksQuelle.Range("D14").Copy
    wksZiel.Cells(loletzte, 3).PasteSpecial xlPasteValues
    
    Also diese beiden erfüllen nach wie vor nicht ihren Zweck und kopieren bzw. fügen die entsprechenden Werte ein.
    Ist das bei dir anderes?
    Beste Grüße
    Walter
    Anzeige
    AW: Austausch von Daten zwischen zwei Dateien
    11.02.2020 13:57:38
    Daten
    Kann ich nicht nachvollziehen. Bei mir funktioniert es mit deinen beiden Dateien, die du mir geschickt hast. Habe den Code so, wie ich ihn dir geschickt habe und es laeuft wunderbar.
    AW: Austausch von Daten zwischen zwei Dateien
    11.02.2020 14:00:56
    Daten
    Oh ich glaube, ich habe den Fehler entdeckt.
    Versuch mal diese Zeile zu aendern:
    Set wksZiel = Workbooks("Nummer").Worksheets("Laufende Nummern")
    

    zu
    Set wksZiel = Workbooks("Nummer.xlsm").Worksheets("Laufende Nummern")
    

    AW: Austausch von Daten zwischen zwei Dateien
    11.02.2020 14:52:42
    Daten
    Hi Torsten,
    macht bei mir leider keinen Unterschied. Die eine Datei bleibt leider weiterhin leer, obwohl sie ja korrekt angesprochen werden muss, sonst würde ich den ersten Wert auch nicht kopieren können.
    Bin für weitere Hinweise gerne offen.
    Beste Grüße
    Walter
    Anzeige
    AW: Austausch von Daten zwischen zwei Dateien
    11.02.2020 16:56:59
    Daten
    Jetzt habe ich die Lösung. Die Änderungen wurden nicht in der Datei gespeichert.
    Es könnte so leicht sein :)
    Danke für deine Hilfe Torsten.
    Beste Grüße
    Walter

    157 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige