Anzeige
Archiv - Navigation
1924to1928
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

int.Tabelle aus anderer Datei kopieren

int.Tabelle aus anderer Datei kopieren
17.04.2023 08:53:37
Ulli

Hallo Community,

ich benötige bitte eure Hilfe.
Ein paar Programmierkenntnisse habe ich bereits, jedoch gehts bei mir diesmal um den Datenübertrag zwischen verschiedenen Dateien und hierbei stoßen meine Kenntnisse an die Grenzen.

Kurze Erklärung, was ich machen möchte:

Ich habe eine Excel-Datei (A) in der das Makro zum ausführen drin ist.
Dieses Makro soll die Excel-Datei (B), wenn nötig öffnen und anschließend die intelligente Tabelle "tbl_Datenbank" kopieren.

Den Inhalt dieser Tabelle dann in die Excel-Datei (C), welche wenn nötig auch geöffnet werden soll, in die nächste freie Zeile reinkopieren.

Idealerweise soll nach dem erfolgreichen Übertragen der Daten die Dateien speichern und den Inhalt der Tabelle ("tbl_Datenbank") in Datei A leeren.

Ich hoffe ihr könnt mir hier weiterhelfen.

Vielen Dank für eure Unterstützung

MfG
Ulli

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

Betreff
Datum
Anwender
Anzeige
AW: int.Tabelle aus anderer Datei kopieren
17.04.2023 13:26:27
Berny
Hallo Ulli,
Profis würden das zwar eleganter machen, aber hier eine Lösung für dich.

Public LZ As Integer
    
Sub Datenuebertrag()

    Workbooks.Open Filename:="C:\Temp\B.xlsx" 'Pfad ändern
    Workbooks.Open Filename:="C:\C.xlsx" 'Pfad ändern
    Windows("B.xlsx").Activate
    Range("tbl_Datenbank").Copy
    Workbooks("C.xlsx").Worksheets(1).Activate  'ggf. worksheet korrigieren
    LZ = Cells(Rows.Count, 1).End(xlUp).Row
    Workbooks("C.xlsx").Worksheets(1).Paste Destination:=Cells(LZ + 1, 1) 'in letzte Zeile +1 der Spalte 1 (A) eintragen
    
    Application.CutCopyMode = False
    ActiveWorkbook.Save
    Workbooks("C.xlsx").Close savechanges:=True 'schließen und speichern
    Workbooks("B.xlsx").Close   'nur schließen
    
End Sub
Berny


Anzeige
AW: int.Tabelle aus anderer Datei kopieren
17.04.2023 20:46:58
Yal
Hallo Ulli,

ich erlaube mir, die gute Ansatz von Berny aufzunehmen und zu ergänzen.

Sub Datenuebertrag()
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Dim LO As ListObject

    Set wsQuelle = WS_setzen("C:\Temp\A.xlsx", "Datenabnk")  'Anpassen
    Set wsZiel = WS_setzen("C:\C.xlsx", "Tabelle1") 'Anpassen
'keine Behandlung, falls einer fehlt:
    If wsQuelle Is Nothing Then Exit Sub
    If wsZiel Is Nothing Then Exit Sub
'die Quelle als Listobject erfassen
    Set LO = ListObject_setzen("tbl_Datenbank")
'übertragen
    LO.DataBodyRange.Copy
    wsZiel.Cells(Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial xlPasteValues
'Quelle zurücksetzen. ACHTUNG: vor dem Testen, Sicherungskopie machen. es lässt sich nicht rückgängig machen.
    LO.ListRows.Delete
'Workbooks speichern und schliessen (in dieser Reihenfolge)
    wsQuelle.Parent.Close SaveChanges:=True
    wsZiel.Parent.Close SaveChanges:=True
End Sub

Private Function WS_setzen(Dateipfad As String, Blattname As String) As Worksheet
Dim wb As Workbook
    On Error Resume Next
    Set wb = Workbooks(Mid(Dateipfad, InStrRev(Dateipfad, "\") + 1))
    If wb Is Nothing Then
        Set wb = Workbooks.Open(Dateipfad)
    End If
    Set WS_setzen = wb.Worksheets(Blattname)
End Function

Private Function ListObject_setzen(LOName As String) As ListObject
'ListObject ("Intelligente Tabelle") sind nur durch ihren Namen schwer zu fassen
Dim N As Name
Dim LO As ListObject
On Error Resume Next
    For Each N In Application.Names
        Set LO = N.RefersToRange.ListObject
        If Not LO Is Nothing Then
            If LO.Name = LOName Then Exit Function
        End If
    Next
End Function
VG
Yal

Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige