Daten aus Tabelle in neue Excel-Datei kopieren

  • Excel

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ThorStein83.

    Daten aus Tabelle in neue Excel-Datei kopieren

    Hallo zusammen,
    wie bei den letzten Malen trage ich immer noch Daten mittels Userform in eine Tabelle ein und kann die Daten in der Userform mittels Listbox wieder aufrufen.
    Jetzt suche ich eine Möglichkeit mittels Button "Daten übertragen" Teile der Daten (Nachname, Vorname) aus der Tabelle in eine zweite Excel-Datei quasi als Indexverzeichnis zu kopieren.

    Die Daten sollen dabei in die nächste freie Zeile kopiert werden. Hier muss also eine Überprüfung stattfinden, ob die Zeile leer ist oder nicht.

    Quellcode

    1. Option Explicit
    2. Option Compare Text
    3. ' neuer Eintrag Schaltfläche
    4. Private Sub Neuer_Eintrag_Click()
    5. Dim LZeile As Long
    6. LZeile = 2
    7. Do While Trim(CStr(Tabelle1.Cells(LZeile, 1).Value)) <> ""
    8. LZeile = LZeile + 1 'Nächste Zeile bearbeiten
    9. Loop
    10. Tabelle1.Cells(LZeile, 1) = CStr("Neuer Eintrag Zeile " & LZeile)
    11. ListBox1.AddItem CStr("Neuer Eintrag Zeile " & LZeile)
    12. ListBox1.ListIndex = ListBox1.ListCount - 1
    13. End Sub
    14. 'Speichern Schaltfläche
    15. Private Sub Speichern_Click()
    16. Dim LZeile As Long
    17. If ListBox1.ListIndex = -1 Then Exit Sub
    18. If Trim(CStr(Anrede.Text)) = "" Then
    19. MsgBox "Sie müssen mindestens einen Namen eingeben!", vbCritical + vbOKOnly, "FEHLER!"
    20. Exit Sub
    21. End If
    22. LZeile = 2 '
    23. Do While Trim(CStr(Tabelle1.Cells(LZeile, 1).Value)) <> ""
    24. If ListBox1.Text = Trim(CStr(Tabelle1.Cells(LZeile, 1).Value)) Then
    25. Tabelle1.Cells(LZeile, 1).Value = Trim(CStr(Nachname.Text))
    26. Tabelle1.Cells(LZeile, 2).Value = Vorname.Text
    27. Tabelle1.Cells(LZeile, 3).Value = Anrede.Text
    28. If ListBox1.Text <> Trim(CStr(Anrede.Text)) Then
    29. Call UserForm_Initialize
    30. If ListBox1.ListCount > 0 Then ListBox1.ListIndex = 0
    31. End If
    32. Exit Do
    33. End If
    34. LZeile = LZeile + 1
    35. Loop
    36. End Sub
    37. Private Sub beenden_Click()
    38. Teilnehmer.Hide
    39. End Sub
    40. Private Sub ListBox1_Click()
    41. Dim LZeile As Long
    42. Anrede = ""
    43. Vorname = ""
    44. Nachname = ""
    45. If ListBox1.ListIndex >= 0 Then
    46. LZeile = 2
    47. Do While Trim(CStr(Tabelle1.Cells(LZeile, 1).Value)) <> ""
    48. If ListBox1.Text = Trim(CStr(Tabelle1.Cells(LZeile, 1).Value)) Then
    49. Anrede = Trim(CStr(Tabelle1.Cells(LZeile, 3).Value))
    50. Vorname = Tabelle1.Cells(LZeile, 2).Value
    51. Nachname = Tabelle1.Cells(LZeile, 1).Value
    52. Exit Do
    53. End If
    54. LZeile = LZeile + 1
    55. Loop
    56. End If
    57. End Sub
    58. Private Sub UserForm_Initialize()
    59. Dim LZeile As Long
    60. Anrede = ""
    61. Vorname = ""
    62. Nachname = ""
    63. ListBox1.Clear
    64. LZeile = 2
    65. Do While Trim(CStr(Tabelle1.Cells(LZeile, 1).Value)) <> ""
    66. ListBox1.AddItem Trim(CStr(Tabelle1.Cells(LZeile, 1).Value))
    67. LZeile = LZeile + 1
    68. Loop
    69. End Sub


    Für Tipps wäre ich, wie immer sehr dankbar!

    Viele Grüße
    Dateien
    • Bsp-Datei.zip

      (25,98 kB, 118 mal heruntergeladen, zuletzt: )
    @ThorStein83: mach mal bei Deinen code-Tags aus dem [code] ein [code=vb], damit es entsprechend auch farblich leichter wird, denselbigen zu durchschauen.

    btt: Nochmal, um alle Klarheiten zu beseitigen:
    • Userform = Daten kontrolliert hinzufügen, bearbeiten, ...
    • Excel-Tabelle = Datenbankersatz
    • Wunschfunktion = ?
    Da werd ich aus Deinem Post nicht schlau. Sollen die Daten aus der Userform in ne neue Datei, oder aus der Excel-Tabelle? Wenn ja, welche Daten sollen woanders hinkopiert werden, und welches Format sollen die Daten haben? Will heißen: Zeig mal bitte Ist-Wert und Soll-Wert, z.B. 2 Screenshots: Nr. 1 von den Quelldaten, Nr. 2 von den erstmal selbst konstruierten Zieldaten
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed,
    werde das beim nächsten Post berücksichtigen!!!

    Genau, Userform zur Eingabe, bzw. bearbeiten der Daten und die Excel-Datei in der sich die Userform befindet als Datenbankersatz.
    Jetzt würde ich einen Teil der Daten aus dem Datenbankersatz gerne per VBA-Befehl in eine zweite, neue Datei kopieren. Da in diese zweite Datei allerdings auch Daten von Kollegen per Hand eingetragen werden, soll vor dem Kopieren überprüft werden, ob die Zeilen in Datei 2 leer sind und dann in die nächste freie Zeile kopiert werden.

    Im Anhang die beiden Screenshots.
    Bilder
    • Quelldatei mit UserForm.png

      27,66 kB, 718×567, 158 mal angesehen
    • Zieldatei.png

      24,57 kB, 718×567, 127 mal angesehen
    Ja gut, dann werf ich einfach mal in den virtuellen Raum: Mappe 2 öffnen, von oben nach unten codetechnisch schauen, wo in Spalte 1 die erste freie Zelle ist und dann von Mappe 1 nach 2 alles rüberkopieren. Simples Codebeispiel (muss natürlch mit Mappennamen und usw. an die eigene Situaltion angepasst werden; das Makro geht hier davon aus, dass die Zielmappe im selben Verzeichnis wie die Quellmappe mit Userform ist), daher m.E. selbsterklärend (Achtung, es wird hier einfachheithalber erstmal nur der Inhalt der ersten Mappe1Spalte rüberkopiert!):

    BasicExcelExporter

    Visual Basic-Quellcode

    1. Private Sub BasicExcelExport()
    2. Workbooks.Open "Mappe2.xlsx"
    3. Dim i As Integer
    4. i = 1
    5. Do Until Workbooks(2).Sheets(1).Cells(i, 1).Value = ""
    6. i = i + 1
    7. Loop
    8. Dim j As Integer
    9. j = 1
    10. Do Until Workbooks(1).Sheets(1).Cells(j, 1).Value = ""
    11. Workbooks(2).Sheets(1).Cells(i + j - 1, 1).Value = Workbooks(1).Sheets(1).Cells(j, 1).Value
    12. j = j + 1
    13. Loop
    14. End Sub


    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.