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

Forumthread: Per Makro Daten in andere Datei kopieren

Per Makro Daten in andere Datei kopieren
27.10.2016 21:45:50
Anton
Hallo,
ich habe mal wieder eine Frage. :) :)
Und zwar habe ich eine Exceldatei, welche einige Blätter als Formblättern zur Dateneingabe enthält.
Jetzt würde ich gerne in jedem Formblatt einen Commandbutton einfügen, der dann ein Makro mit folgender Funktion ausführt:
1) Kopieren diverser Zellen, z. B. A33, BF24, C2 und viele mehr in eine andere Exceltabelle names "Datenliste", Tabelle1, Zelle A1, B1, C1
2) Es wäre gut, wenn man in der Formulardatei in zum Beispiel Zelle AA23 die Zeilennummer für die Datenliste Tablelle1 angeben könnte. Es soll ja mit dem neuen Eintrag in der Datenliste nix überschrieben werden.
3) Es gibt weitere Zellen mit Daten, die müssten abhängig von einem weiteren Parameter in z.B. Zelle AA23 in bestimmte Spalten der Dateienliste, Tabelle1 kopiert werden. Also zum Beispiel Zelle AA23 ist 1, dann kopiere Zelle A25 in Datenliste Tabelle1 Spalte CA1, Zelle A33in Datenliste Tabelle1 Spalte CB1. Oder zum Beispiel Zelle AA23 ist 2, dann kopiere Zelle A25 in Datenliste Tabelle1 Spalte BA1, Zelle A33in Datenliste Tabelle1 Spalte BB1. usw...
Ist so etwas realisierbar?
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per Makro Daten in andere Datei kopieren
28.10.2016 03:33:54
Piet
Hallo Anton,
das sieht sehr komplex aus. Am besten ist eine kleine Beispieldatei mit Fantasie Daten woraus man leichter ersehen kann wie die Lösung aussehen soll. Mit deinen Tabellen Namen, Spalten und Zeilen. Wir können deine Datei ja nicht sehen. Ein gutes Beispiel vermeidet unnötige Rückfragen.
mfg Piet
Anzeige
AW: Per Makro Daten in andere Datei kopieren
28.10.2016 06:24:15
fcs
Hallo ANton,
hier das Grundgerüst für ein solches Makro
Gruß
Franz
Sub Daten_nach_Extern()
Dim wksQ As Worksheet
Dim wkbZ As Workbook
Dim wksZ As Worksheet
Dim ZeileZ As Long
Dim strPfad As String
Dim strDatei As String
Set wksQ = ActiveSheet
'Verzeichnis der Zieldatei
strPfad = "C:\Users\Public\Test"
'Name der Zieldatei
strDatei = "Datenliste.xlsx"
If Dir(strPfad & "\" & strDatei) = "" Then
MsgBox "Datei " & vbLf & strPfad & "\" & strDatei & vbLf & "nicht gefunden"
Else
'Makrobremsen lösen
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With
'Zieldatei öffnen
Set wkbZ = Application.Workbooks.Open(Filename:=strPfad & "\" & strDatei)
Set wksZ = wkbZ.Worksheets("Tabelle1")
With wksZ
'nächste Zeile ohne Daten in Spalte A.
Zeile_Z = .Cells(.Rows.Count, 1).End(xlUp).Rows + 1
'alternativ nächste nicht benutzte Zeile
Zeile_Z = .UsedRange.Row + .UsedRange.Rows.Count
'Daten übertragen ohne Bedingungen
Spalte = 1 '= Spalte A
.Cells(ZeileZ, Spalte) = wksQ.Range("A33").Value
Spalte = 2: .Cells(ZeileZ, Spalte) = wksQ.Range("BF24").Value
Spalte = 3: .Cells(ZeileZ, Spalte) = wksQ.Range("C2").Value
'.usw.
'Daten übertragen mit Bedingungen
Select Case wksQ.Range("AA23").Value
Case 1
.Cells(ZeileZ, .Range("CA1").Column) = wksQ.Range("AA25").Value
.Cells(ZeileZ, .Range("CB1").Column) = wksQ.Range("AA33").Value
Case 2
.Cells(ZeileZ, .Range("BA1").Column) = wksQ.Range("AA25").Value
.Cells(ZeileZ, .Range("BB1").Column) = wksQ.Range("AA33").Value
End Select
End With
'Makrobremsen zurücksetzen
With Application
.ScreenUpdating = True
.Calculation = StatusCac
.EnableEvents = True
End With
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten mit Makros in eine andere Excel-Datei kopieren


Schritt-für-Schritt-Anleitung

Um Daten in eine andere Arbeitsmappe per VBA-Makro zu kopieren, kannst du die folgenden Schritte befolgen:

  1. Öffne deine Excel-Datei, in der sich die Daten befinden.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Füge den folgenden VBA-Code in das Modul ein:
Sub Daten_nach_Extern()
    Dim wksQ As Worksheet
    Dim wkbZ As Workbook
    Dim wksZ As Worksheet
    Dim ZeileZ As Long
    Dim strPfad As String
    Dim strDatei As String

    Set wksQ = ActiveSheet
    'Verzeichnis der Zieldatei
    strPfad = "C:\Users\Public\Test"
    'Name der Zieldatei
    strDatei = "Datenliste.xlsx"

    If Dir(strPfad & "\" & strDatei) = "" Then
        MsgBox "Datei " & vbLf & strPfad & "\" & strDatei & vbLf & "nicht gefunden"
    Else
        'Makrobremsen lösen
        With Application
            .ScreenUpdating = False
            .Calculation = xlCalculationManual
            .EnableEvents = False
        End With

        'Zieldatei öffnen
        Set wkbZ = Application.Workbooks.Open(Filename:=strPfad & "\" & strDatei)
        Set wksZ = wkbZ.Worksheets("Tabelle1")

        With wksZ
            'nächste Zeile ohne Daten in Spalte A.
            ZeileZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1

            'Daten übertragen ohne Bedingungen
            .Cells(ZeileZ, 1) = wksQ.Range("A33").Value
            .Cells(ZeileZ, 2) = wksQ.Range("BF24").Value
            .Cells(ZeileZ, 3) = wksQ.Range("C2").Value

            'Daten übertragen mit Bedingungen
            Select Case wksQ.Range("AA23").Value
                Case 1
                    .Cells(ZeileZ, .Range("CA1").Column) = wksQ.Range("AA25").Value
                    .Cells(ZeileZ, .Range("CB1").Column) = wksQ.Range("AA33").Value
                Case 2
                    .Cells(ZeileZ, .Range("BA1").Column) = wksQ.Range("AA25").Value
                    .Cells(ZeileZ, .Range("BB1").Column) = wksQ.Range("AA33").Value
            End Select
        End With

        'Makrobremsen zurücksetzen
        With Application
            .ScreenUpdating = True
            .Calculation = xlCalculationAutomatic
            .EnableEvents = True
        End With
    End If
End Sub
  1. Schließe den VBA-Editor und kehre zur Excel-Oberfläche zurück.
  2. Füge einen CommandButton in dein Formularblatt ein, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Fehlermeldung "Datei nicht gefunden": Überprüfe den Dateipfad und den Dateinamen. Stelle sicher, dass die Zieldatei existiert und der Pfad korrekt ist.
  • Makro funktioniert nicht: Stelle sicher, dass die Makros in deiner Excel-Anwendung aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.
  • Zielzelle überschrieben: Achte darauf, dass die Zeilennummer, die in Zelle AA23 angegeben ist, nicht bereits von einem anderen Eintrag verwendet wird.

Alternative Methoden

Falls du Excel-Daten in eine andere Datei übertragen möchtest, gibt es auch andere Methoden:

  • Daten importieren ohne Öffnen: Verwende Power Query, um Daten aus einer anderen Datei zu importieren, ohne sie zu öffnen.
  • Excel-Tabellen verknüpfen: Du kannst auch Daten verknüpfen, sodass sie automatisch aktualisiert werden, wenn sich die Quelldaten ändern.

Praktische Beispiele

  1. Daten aus einer anderen Datei importieren: Du kannst die Funktion Daten > Abrufen und Transformieren > Aus Datei > Aus Arbeitsmappe verwenden, um Daten aus einer externen Datei zu importieren.
  2. Automatische Übertragung: Das Makro kann so angepasst werden, dass es beim Öffnen der Datei automatisch ausgeführt wird, um die Excel-Daten automatisch in andere Tabellen zu kopieren.

Tipps für Profis

  • Makros kopieren und einfügen: Wenn du häufig ähnliche Makros verwendest, kannst du diese in ein Modul speichern und nach Bedarf in deine Projekte importieren.
  • VBA-Debugging: Nutze die Debugging-Tools im VBA-Editor, um Fehler schneller zu finden und zu beheben.
  • Sicherheit: Achte darauf, dass deine Makros sicher sind, insbesondere wenn du Daten von und zu externen Quellen überträgst.

FAQ: Häufige Fragen

1. Wie kann ich ein Makro in eine andere Datei kopieren?
Du kannst den VBA-Code einfach kopieren und in ein neues Modul der Zielarbeitsmappe einfügen.

2. Kann ich mit VBA Daten aus einer Datei übertragen, ohne sie zu öffnen?
Ja, mit speziellen Methoden kannst du Daten importieren, ohne die Zieldatei tatsächlich zu öffnen, indem du ADO oder ähnliche Techniken verwendest.

3. Wie kann ich sicherstellen, dass meine Daten nicht überschrieben werden?
Implementiere in deinem Makro eine Logik, die die nächste freie Zeile in der Zieldatei ermittelt, bevor du die Daten überträgst.

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