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

Forumthread: Daten in eine andere Datei schreiben

Daten in eine andere Datei schreiben
Rüdiger
Hallo Ihr Spezialisten,
ich möchte, dass ein Macro mir Zahlen, aus einer Tabelle einer offenen Datei, in eine andere Datei schreiben lassen!
Die Daten stehen in:
D:\RSC\20011\Einzel_8er.xls
Das Datenblatt heist: Tabelle 1
In den Zellen BE11:BE18 stehen die Zahlen. In den Zellen BH11:BH18 stehen die Namen.
Schreiben in:
Diese Zahlen sollen hinter die Namen in die Spalte G in:
D:\RSC\20011\Teilnehmer.xls
Das Datenblatt heist: Liste
geschrieben werden.
Das heist:
Das Macro soll in "D:\RSC\20011\Teilnehmer.xls\Liste" den Namen,
(den es aus "D:\RSC\20011\Einzel_8er.xls\Tabelle 1" hat,)
der in Spalte B steht finden, und in die Spalte G die Zahl schreiben.
Die Zahlen sind nicht fortlaufend!
Natürlich soll das Macro die Datei Teilnehmer zuerst öffnen und nach getaner Arbeit dann wieder schließen!
Ich hoffe, dass ich es gut genug beschrieben habe.
Vielene Dank schon mal
Euer Rüdiger
Anzeige
AW: Daten in eine andere Datei schreiben
14.10.2010 10:46:48
Oberschlumpf
Hi Rüdiger
ne Bsp-Datei mit den erforderlichen Daten wäre schön.
Du hast die (Bsp)-Datei schon - wir müssten sie erst erstellen.
Ciao
Thorsten
Klingt nach SVERWEIS ...
14.10.2010 11:51:24
Klaus
Hallo Rüdiger,
was spricht dagegen, das per SVERWEIS zu lösen?
Makrorekordere dir mal folgenden Code:
  • Datei D:\RSC\20011\Teilnehmer.xls öffnen

  • In Teilnehmer/Liste/G2 per SVERWEIS Formel die Zahl zu den Namen holen

  • G2 runter kopieren

  • Spalte G makieren / kopieren / Inhalte einfügen

  • Datei D:\RSC\20011\Teilnehmer.xls schließen

  • Das sollte es eigentlich schon sein. Den Recoder Code können wir dir im Forum gerne verschlanken (sprich von .select und .activate befreien).
    Grüße,
    Klaus M.vdT.
    Anzeige
    AW: Klingt nach SVERWEIS ...
    16.10.2010 08:38:21
    Rüdiger
    Hallo Klaus,
    ich dachte, dass ich die Roiutine an ein anderes Macro ranhänge!
    Gruß Rüdiger
    AW: Daten in eine andere Datei schreiben
    16.10.2010 13:06:42
    Tino
    Hallo,
    kannst mal diesen Code testen, dieser kommt in die Datei Einzel_8er.xls.
    Option Explicit
    
    Sub Uebertragen()
    Dim oWB_EX As Workbook, varRow
    Dim rngData As Range, rngRows As Range
    Dim booIsOben As Boolean
    
    'Pfad zur Datei Extern + Variable 
    Call Check_Oben("D:\RSC\20011\Teilnehmer.xls", oWB_EX, booIsOben)
    
    If oWB_EX Is Nothing Then Exit Sub
    
    'Datenbereich 
    Set rngData = ThisWorkbook.Sheets("Tabelle 1").Range("Be11:BH18")
    
    With oWB_EX
        With .Sheets("Liste") 'Tabelle Extern 
            For Each rngRows In rngData.Rows
                'suche Namen aus BH in Spalte B 
                varRow = Application.Match(rngRows.Cells(1, 4), .Columns(2), 0)
                'Name gefunden? 
                If IsNumeric(varRow) Then
                    'Wert aus BE übertragen 
                    .Cells(varRow, 7) = rngRows.Cells(1, 1)
                End If
            Next
        End With
        .Save 'Datei speichern 
        'war Datei nicht offen? 
        If Not booIsOben Then
            .Close False 'schließen 
        End If
    End With
    
    End Sub
    
    'Hilfsmakro um Datei zu suchen oder zu öffnen 
    Sub Check_Oben(strFileFullName$, ByRef oWB_EX As Workbook, ByRef booIsOben As Boolean)
    Dim strFileName$, oWB As Workbook
    
    strFileName = Right$(strFileFullName, Len(strFileFullName) - InStrRev(strFileFullName, "\"))
    
    For Each oWB In Workbooks
        If oWB.Name = strFileName Then
            Set oWB_EX = oWB
        End If
    Next
    
    If oWB_EX Is Nothing Then
        If Dir(strFileFullName) <> "" Then
            Set oWB_EX = Workbooks.Open("G:\1 Forum\Einzel_8er.xls") 'D:\RSC\20011\Einzel_8er.xls 
            If oWB_EX.ReadOnly Then
                oWB_EX.Close False
                Set oWB_EX = Nothing
            End If
        End If
    Else
        booIsOben = True
    End If
    
    If Not oWB_EX Is Nothing Then _
        If oWB_EX.ReadOnly Then Set oWB_EX = Nothing
    
    If oWB_EX Is Nothing Then
        MsgBox "Datei konnte nicht gefunden oder bearbeitet werden.", vbCritical
    End If
    End Sub
    
    Gruß Tino
    Anzeige
    AW: Daten in eine andere Datei schreiben
    17.10.2010 09:51:01
    Rüdiger
    Hallo Tino,
    Ich habe das von Dir geschickte Macro in ein Modul der Datei "Einzel_8er.xls" kopiert.
    Wenn ich es starte, kommt als erstes die Fehlermeldung:
    Laufzeitfehler '1004':
    Dann drücke ich auf Debuggen und dann wird die Zeile im Hilfsmacro
    Set oWB_EX = Workbooks.Open("G:\1 Forum\Einzel_8er.xls") 'D:\RSC\2011\Einzel_8er.xls
    gelb hinterlegt.
    Warum?
    Entschuldige, bei mir war ein Schreibfehler, den ich aber in den beiden Zeilen im Macro geändert habe.
    Falsch: "D:\RSC\20011\Teilnehmer.xls\Liste"
    Richtig: "D:\RSC\2011\Teilnehmer.xls\Liste"
    Noch einen schönen Sonntag wünscht Rüdiger
    Anzeige
    AW: Daten in eine andere Datei schreiben
    17.10.2010 10:08:46
    Tino
    Hallo,
    ersetze diese Zeile durch diese. (war für test, sorry)
    Set oWB_EX = Workbooks.Open(strFileFullName)
    in der Zeile
    Call Check_Oben("D:\RSC\20011\Teilnehmer.xls", oWB_EX, booIsOben)
    
    musst Du den Pfad angeben zu der Teilnehmer.xls also
    Call Check_Oben("D:\RSC\2011\Teilnehmer.xls", oWB_EX, booIsOben)
    
    Gruß Tino
    Anzeige
    AW: Daten in eine andere Datei schreiben
    19.10.2010 12:12:36
    Rüdiger
    Hallo Tino,
    welche Zeile soll ich ersetzen?
    Denke bitte daran ich bin ein VBA Laie!
    Deine Antwort!
    Hallo,
    ersetze diese Zeile durch diese. (war für test, sorry)
    Set oWB_EX = Workbooks.Open(strFileFullName)
    Gruß Rüdiger
    AW: Daten in eine andere Datei schreiben
    19.10.2010 16:47:35
    Tino
    Hallo,
    ich meinte so, den Pfad zu der Datei aber anpassen..
    Sub Uebertragen()
    Dim oWB_EX As Workbook, varRow
    Dim rngData As Range, rngRows As Range
    Dim booIsOben As Boolean
    
    'Pfad zur Datei Extern + Variable 
    Call Check_Oben("D:\RSC\2011\Teilnehmer.xls", oWB_EX, booIsOben)
    
    If oWB_EX Is Nothing Then Exit Sub
    
    'Datenbereich 
    Set rngData = ThisWorkbook.Sheets("Tabelle 1").Range("Be11:BH18")
    
    With oWB_EX
        With .Sheets("Liste") 'Tabelle Extern 
            For Each rngRows In rngData.Rows
                'suche Namen aus BH in Spalte B 
                varRow = Application.Match(rngRows.Cells(1, 4), .Columns(2), 0)
                'Name gefunden? 
                If IsNumeric(varRow) Then
                    'Wert aus BE übertragen 
                    .Cells(varRow, 7) = rngRows.Cells(1, 1)
                End If
            Next
        End With
        .Save 'Datei speichern 
        'war Datei nicht offen? 
        If Not booIsOben Then
            .Close False 'schließen 
        End If
    End With
    
    End Sub
    
    'Hilfsmakro um Datei zu suchen oder zu öffnen 
    Sub Check_Oben(strFileFullName$, ByRef oWB_EX As Workbook, ByRef booIsOben As Boolean)
    Dim strFileName$, oWB As Workbook
    
    strFileName = Right$(strFileFullName, Len(strFileFullName) - InStrRev(strFileFullName, "\"))
    
    For Each oWB In Workbooks
        If oWB.Name = strFileName Then
            Set oWB_EX = oWB
        End If
    Next
    
    If oWB_EX Is Nothing Then
        If Dir(strFileFullName) <> "" Then
            Set oWB_EX = Workbooks.Open(strFileFullName)
            If oWB_EX.ReadOnly Then
                oWB_EX.Close False
                Set oWB_EX = Nothing
            End If
        End If
    Else
        booIsOben = True
    End If
    
    If Not oWB_EX Is Nothing Then _
        If oWB_EX.ReadOnly Then Set oWB_EX = Nothing
    
    If oWB_EX Is Nothing Then
        MsgBox "Datei konnte nicht gefunden oder bearbeitet werden.", vbCritical
    End If
    End Sub
    
    Gruß Tino
    Anzeige
    ;

    Forumthreads zu verwandten Themen

    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    Daten aus einer Excel-Datei in eine andere übertragen


    Schritt-für-Schritt-Anleitung

    Um Daten aus einer Excel-Datei in eine andere zu übertragen, kannst du ein VBA-Makro verwenden. Folge diesen Schritten:

    1. Öffne die Datei Einzel_8er.xls, in die du das Makro einfügen möchtest.
    2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
    3. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
    4. Füge den folgenden Code ein:
    Option Explicit
    
    Sub Uebertragen()
        Dim oWB_EX As Workbook, varRow
        Dim rngData As Range, rngRows As Range
        Dim booIsOben As Boolean
    
        ' Pfad zur Datei Extern + Variable
        Call Check_Oben("D:\RSC\2011\Teilnehmer.xls", oWB_EX, booIsOben)
    
        If oWB_EX Is Nothing Then Exit Sub
    
        ' Datenbereich
        Set rngData = ThisWorkbook.Sheets("Tabelle 1").Range("BE11:BH18")
    
        With oWB_EX
            With .Sheets("Liste") ' Tabelle Extern
                For Each rngRows In rngData.Rows
                    ' Suche Namen aus BH in Spalte B
                    varRow = Application.Match(rngRows.Cells(1, 4), .Columns(2), 0)
                    ' Name gefunden?
                    If IsNumeric(varRow) Then
                        ' Wert aus BE übertragen
                        .Cells(varRow, 7) = rngRows.Cells(1, 1)
                    End If
                Next
            End With
            .Save ' Datei speichern
            ' War Datei nicht offen?
            If Not booIsOben Then
                .Close False ' schließen
            End If
        End With
    End Sub
    
    Sub Check_Oben(strFileFullName$, ByRef oWB_EX As Workbook, ByRef booIsOben As Boolean)
        Dim strFileName$, oWB As Workbook
    
        strFileName = Right$(strFileFullName, Len(strFileFullName) - InStrRev(strFileFullName, "\"))
        For Each oWB In Workbooks
            If oWB.Name = strFileName Then
                Set oWB_EX = oWB
            End If
        Next
    
        If oWB_EX Is Nothing Then
            If Dir(strFileFullName) <> "" Then
                Set oWB_EX = Workbooks.Open(strFileFullName)
                If oWB_EX.ReadOnly Then
                    oWB_EX.Close False
                    Set oWB_EX = Nothing
                End If
            End If
        Else
            booIsOben = True
        End If
    
        If oWB_EX Is Nothing Then
            MsgBox "Datei konnte nicht gefunden oder bearbeitet werden.", vbCritical
        End If
    End Sub
    1. Schließe den VBA-Editor und gehe zurück zu Excel.
    2. Führe das Makro aus, indem du ALT + F8 drückst, das Makro auswählst und auf Ausführen klickst.

    Häufige Fehler und Lösungen

    • Fehler 1004: Dieser Fehler tritt häufig auf, wenn der Pfad zur Datei nicht korrekt ist. Überprüfe den Pfad in der Zeile Call Check_Oben("D:\RSC\2011\Teilnehmer.xls", oWB_EX, booIsOben) und stelle sicher, dass die Datei existiert.

    • Datei kann nicht gefunden werden: Wenn du die Fehlermeldung erhältst, dass die Datei nicht gefunden werden kann, überprüfe, ob der Dateiname und der Pfad korrekt angegeben wurden.


    Alternative Methoden

    Falls du kein VBA verwenden möchtest, kannst du auch die Funktion SVERWEIS nutzen, um ähnliche Ergebnisse zu erzielen:

    1. Öffne die Datei Teilnehmer.xls.
    2. Gehe zu Liste, wähle die Zelle G2 aus.
    3. Verwende die SVERWEIS-Formel:
    =SVERWEIS(B2; '[Einzel_8er.xls]Tabelle 1'!$BH$11:$BE$18; 2; FALSCH)
    1. Ziehe die Formel nach unten, um sie auf die anderen Zeilen anzuwenden.

    Praktische Beispiele

    Wenn du beispielsweise die Zahlen aus den Zellen BE11:BE18 der Datei Einzel_8er.xls in die Spalte G der Datei Teilnehmer.xls übertragen möchtest, kannst du das oben beschriebene Makro verwenden. Achte darauf, dass die Namen in Spalte B der Datei Teilnehmer.xls mit denen in Spalte BH der Datei Einzel_8er.xls übereinstimmen.


    Tipps für Profis

    • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Tippfehler zu vermeiden.
    • Kommentiere deinen Code gut, damit du jederzeit nachvollziehen kannst, was jeder Abschnitt macht.
    • Teste dein Makro in einer Kopie deiner Dateien, um Datenverlust zu vermeiden.

    FAQ: Häufige Fragen

    1. Muss die Datei Teilnehmer.xls offen sein, um das Makro auszuführen?
    Nein, das Makro öffnet die Datei automatisch, wenn sie nicht bereits geöffnet ist.

    2. Was mache ich, wenn ich den Laufzeitfehler 1004 weiterhin erhalte?
    Überprüfe die Dateipfade und stelle sicher, dass die angegebene Datei existiert und nicht von einem anderen Prozess blockiert wird.

    3. Kann ich das Makro für andere Dateien verwenden?
    Ja, du musst lediglich die Dateipfade und Namen im Code anpassen, um es für deine spezifischen Anforderungen zu nutzen.

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Entdecke mehr
    Finde genau, was du suchst

    Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

    Suche nach den besten Antworten
    Unsere beliebtesten Threads

    Entdecke unsere meistgeklickten Beiträge in der Google Suche

    Top 100 Threads jetzt ansehen
    Anzeige