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

Daten von WORD nach EXCEL

Forumthread: Daten von WORD nach EXCEL

Daten von WORD nach EXCEL
WORD
Hallo,
ich habe mir in WORD ein Formular erstellt, in das ich per Userform verschiedene Daten einfüge (z.B. Adressdaten).
Ich würde gern diese Daten aus der Userform zusätzlich in einer Excel-Tabelle ablegen, sozusagen als "Datenbank" um sie dann wieder in WORD nutzen zu können.
Kann mir da jemand ein paar Tips geben? Für Hilfe wäre ich dankbar!
Viele Grüße
Andre
Anzeige
AW: Daten von WORD nach EXCEL
20.04.2010 07:51:30
WORD
Hallo Andre,
die entsprechenden Anweisungen kannst du in die Prozedur einbauen, die die Formulardaten ins Worddokument einträgt.
Nachfolgend ein Beispiel.
Bei Zahlen- und Datumswerten sollten diese ggf. vor dem Einfügen in Excel konvertiert werden, damit die Information in Excel nicht als Text in den Zellen steht.
Wenn du in einem größeren Netzwerk arbeitest, dann kann das Speichern der Daten in Excel etwas dauern.
Gruß
Franz
Private Sub CommandButton1_Click()
'Eintragen Formuardaten und Speichern in Exceldatei
Dim oDoc As Document, oRange As Word.Range
Dim xlApp As Object, xlWorkbook As Object, xlsheet As Object, lZeile As Long
'Name der Exceldatei
Const sExcelfile As String = "C:\Users\Public\Test\WordDataBank.xls"
'Eintragen in Wordformular - Beispielhaft, sollte ja schon funktionieren
Set oDoc = ActiveDocument
With oDoc
Selection.GoTo What:=wdGoToBookmark, Name:="Textmarke1"
Selection.TypeText Text:=Me.TextBox1
Selection.GoTo What:=wdGoToBookmark, Name:="Datum1"
If IsDate(Me.TextBox2.Text) Then
Selection.TypeText Text:=Format(CDate(Me.TextBox2.Text), "YYYY-MM-DD")
Else
Selection.TypeText Text:=Me.TextBox2
End If
Selection.GoTo What:=wdGoToBookmark, Name:="Wert1"
If IsNumeric(Me.TextBox3.Text) Then
Selection.TypeText Text:=Format(CDbl(Me.TextBox3.Text), "#,##0.00")
Else
Selection.TypeText Text:=Me.TextBox3.Text
End If
'usw.
End With
'Eintragen in Exceldatenbank
Set xlApp = CreateObject("Excel.Application")
Set xlWorkbook = xlApp.workbooks.Open(FileName:=sExcelfile)
Set xlsheet = xlWorkbook.Worksheets(1)
With xlsheet
'letzte Datenzeile
lZeile = .Cells.specialcells(11).Row + 1 'xlcelltypelastcell
.Cells(lZeile, 1).Value = Me.TextBox1.Text
If IsDate(Me.TextBox2.Text) Then
.Cells(lZeile, 2).Value = CDate(Me.TextBox2.Text)
Else
.Cells(lZeile, 2).Value = Me.TextBox2
End If
If IsNumeric(Me.TextBox3.Text) Then
.Cells(lZeile, 3).Value = CDbl(Me.TextBox3.Text)
Else
.Cells(lZeile, 3).Value = Me.TextBox3.Text
End If
End With
xlWorkbook.Save
xlWorkbook.Close
xlApp.Quit
Set xlsheet = Nothing: Set xlWorkbook = Nothing: Set xlApp = Nothing
Set oDoc = Nothing
End Sub

Anzeige
AW: Daten von WORD nach EXCEL
20.04.2010 18:10:55
WORD
Hallo Franz,
vielen Dank für das Beispiel!
Es wird sicher eine Weile dauern, bis ich das Prinzip verstanden habe, werde mich da mal durcharbeiten!
Ich hatte bei der Datenhaltung an Excel gedacht, da es sich nur um ca. 100 Datensätze handelt und ich mit Excel einigermaßen fit bin. Mit Access habe ich keine Erfahrung bisher.
Viele Grüße
Andre
Anzeige
AW: Daten von WORD nach EXCEL
20.04.2010 19:17:25
WORD
Hallo,
ich habe den Code getestet und bin begeistert! Ich verstehe nicht, warum eingegebene Werte konvertiert werden müssen?
Beim Testen kam mir noch folgende Idee: Ich habe anstelle eines Textfelds in der Userform eine Combo-Box verwendet. Deren Inhalt wurde auch problemlos in die Excel-Tabelle eingefügt.
Ist es möglich, die Combo-Box beim Starten der Userform mit den Werten der entsprechenden Zellen aus Excel zu füllen? Dann hätte ich gleich eine entsprechende Auswahlmöglichkeit.
Für Tips wäre ich sehr dankbar!
Viele Grüße
Andre
Anzeige
AW: Daten von WORD nach EXCEL
21.04.2010 08:00:07
WORD
Hallo Andre,
ich hab zumindest bei den frühren Excelversionen Probleme gehabt, wenn es darum geht Zahlewerte und Datumsangaben aus Textboxen eines Userforms in Exceltabellen einzutragen. Oft wurden die Inhalte dann nicht als Datum oder Zahl sondern als Text in der Tabelle übernommen. Das ist lästig, wenn man in Excel dann sortieren oder rechnen will.
Übernahme der Infos aus Excel in die Comboboxauswahl ist grundsätzlich möglich. Dann muss du in der Initialisierungsprozedur des Userforms die Combobox mit der AddItem-Methode mit den Informationen aus der Excel-Tabelle füllen. Also Exceltabelle mit gleichen Methode wie beim Speichern öffnen. Dann in einer Schleife die Informationen auslesen.
Gruß
Franz
Anzeige
AW: Daten von WORD nach EXCEL
21.04.2010 20:44:37
WORD
Hallo Franz,
dank deiner Hilfe habe ich zum Füllen der Combo-Box folgenden funktionierenden Code geschrieben:
  • 
    Sub UserForm_Activate()
    Dim xlApp As Object, xlWorkbook As Object, xlsheet As Object, Zeile As Long, letzte_Zeile As  _
    Long
    'Name der Exceldatei
    Const sExcelfile As String = "D:\Word-Wissen\Test_Userform\Datenbank.xls"
    Set xlApp = CreateObject("Excel.Application")
    Set xlWorkbook = xlApp.Workbooks.Open(FileName:=sExcelfile)
    Set xlsheet = xlWorkbook.Worksheets(1)
    With xlsheet
    letzte_Zeile = .Cells.specialcells(11).Row + 1    'letzte Zelle im Bereich zzgl. 1
    For Zeile = 2 To letzte_Zeile
    Me.ComboBox1.AddItem xlsheet.Cells(Zeile, 1)
    Next Zeile
    Me.ComboBox1.ListIndex = 0
    End With
    xlWorkbook.Close
    xlApp.Quit
    Set xlsheet = Nothing: Set xlWorkbook = Nothing: Set xlApp = Nothing
    End Sub
    

  • Jetzt habe ich in der Userform noch einige Textboxen, die mit dem Inhalt der Combo-Box verknüpft sind.
    Kann ich evtl. die List.Index-Eigenschaft der Combo-Box dazu verwenden, die Textboxen mit den dazugehörenden Werten aus den entsprechenden Excel-Zellen zu füllen?
    Vielen Dank für deine Unterstützung!
    Viele Grüße
    Andre
    Anzeige
    AW: Daten von WORD nach EXCEL
    21.04.2010 21:10:26
    WORD
    Hallo,
    ich hatte gerade einen Gedankenblitz und habe folgendes Probiert:
  • 
    Private Sub ComboBox1_Change()
    Dim xlApp As Object, xlWorkbook As Object, xlsheet As Object
    Dim List_Index As Long
    List_Index = Me.ComboBox1.ListIndex
    'Name der Exceldatei
    Const sExcelfile As String = "D:\Word-Wissen\Test_Userform\Datenbank.xls"
    Set xlApp = CreateObject("Excel.Application")
    Set xlWorkbook = xlApp.Workbooks.Open(FileName:=sExcelfile)
    Set xlsheet = xlWorkbook.Worksheets(1)
    With xlsheet
    Me.TextBox2 = xlsheet.Cells(List_Index + 2, 2)
    Me.TextBox3 = xlsheet.Cells(List_Index + 2, 3)
    End With
    xlWorkbook.Close
    xlApp.Quit
    Set xlsheet = Nothing: Set xlWorkbook = Nothing: Set xlApp = Nothing
    End Sub
    

  • Es funktioniert! Ich denke, ich habe das Prinzip verstanden!
    Vielen Dank!!!!!
    Viele Grüße
    Andre
    Anzeige
    AW: Daten von WORD nach EXCEL
    21.04.2010 23:42:31
    WORD
    Hallo Andre,
    es geht noch etwas eleganter. Du kannst beim Füllen der Auswahl für die Kombobox auch gleich alle anderen benötigten Daten mit laden.
    Mache die Kombobox mehrspaltig (Eigenschaft ColumnCount) - entsprechend der Anzahl zusätzlich benötigter Werte.
    Sub UserForm_Activate()
    Dim xlApp As Object, xlWorkbook As Object, xlsheet As Object, Zeile As Long, letzte_Zeile As  _
    Long
    'Name der Exceldatei
    Const sExcelfile As String = "D:\Word-Wissen\Test_Userform\Datenbank.xls"
    Set xlApp = CreateObject("Excel.Application")
    Set xlWorkbook = xlApp.Workbooks.Open(FileName:=sExcelfile)
    Set xlsheet = xlWorkbook.Worksheets(1)
    With xlsheet
    letzte_Zeile = .Cells.specialcells(11).Row + 1    'letzte Zelle im Bereich zzgl. 1
    For Zeile = 2 To letzte_Zeile
    With Me.ComboBox1
    .AddItem xlsheet.Cells(Zeile, 1)
    .List(.ListCount-1,1) = xlsheet.Cells(Zeile, 2)
    .List(.ListCount-1,2) = xlsheet.Cells(Zeile, 3)
    End With
    Next Zeile
    Me.ComboBox1.ListIndex = 0
    End With
    xlWorkbook.Close
    xlApp.Quit
    Set xlsheet = Nothing: Set xlWorkbook = Nothing: Set xlApp = Nothing
    End Sub
    
    So hast du weniger Zugriffe auf die Excel-Datei nötig.
    Die Change Prozedur der Combobox vereinfacht sich dann zu
    Private Sub ComboBox1_Change()
    With Me.ComboBox1
    Me.TextBox2 = .List(.ListIndex , 1)
    Me.TextBox3 = .List(.ListIndex , 2)
    End With
    End Sub
    

    Anzeige
    AW: Daten von WORD nach EXCEL
    22.04.2010 18:35:25
    WORD
    Hallo Franz,
    bin voll begeistert! Hatte das erste Mal mit VBA und WORD zu tun. Dank deiner Hilfe konnte ich ein Problem lösen, das mir schon lange unter den Nägeln brannte.
    Vielen Dank!
    Viele Grüße
    Andre
    AW: Daten von WORD nach EXCEL
    22.04.2010 19:50:50
    WORD
    Hallo Franz,
    ich habe meine Userform entsprechend angepaßt und den obigen Code getestet. Wenn ich nun in der geöffneten Userform die Combobox 1 beschreiben will erhalte ich folgende Fehlermeldung:
    "Eigenschaft List konnte nicht abgerufen werden. Index des Eigenschaftenfelds ungültig."
    Im VBA-Code zeigt der Cursor auf folgende Anweisung:
  • 
    Private Sub ComboBox1_Change()
    With Me.ComboBox1
    >>> Me.TextBox1 = .List(.ListIndex, 1)
    
    Me.TextBox2 = .List(.ListIndex, 2)
    Me.TextBox3 = .List(.ListIndex, 3)
    Me.TextBox4 = .List(.ListIndex, 4)
    Me.TextBox5 = .List(.ListIndex, 5)
    Me.TextBox6 = .List(.ListIndex, 6)
    End With
    End Sub
    

  • Dieses Problem hatte ich mit meinem Ursprungscode nicht. Mache ich evtl. einen Fehler mit der ColumnCount-Eigenschaft?
    Viele Grüße
    Andre
    Anzeige
    AW: Daten von WORD nach EXCEL
    23.04.2010 13:11:55
    WORD
    Hallo Andre,
    könnte sein, dass diese Prozedur auch anläuft, wenn nichts ausgewählt ist. z.B. nach Clear oder neu zuweisen von Auswahldaten.
    Füge eine Prüfung auf den Listindex ein. Außerdem muss du beachten, dass die Spaltenzähling von .List einer List- oder Combobox bei 0 beginnt. Die max. Anzahl an Spalten, die man für eine Listbox/Combox bei Verwendung der AddItem-Methode anlegen kann, ist 10.
    Gruß
    Franz
    Private Sub ComboBox1_Change()
    With Me.ComboBox1
    If .ListIndex  -1 then
    Me.TextBox1 = .List(.ListIndex, 1)
    Me.TextBox2 = .List(.ListIndex, 2)
    Me.TextBox3 = .List(.ListIndex, 3)
    Me.TextBox4 = .List(.ListIndex, 4)
    Me.TextBox5 = .List(.ListIndex, 5)
    Me.TextBox6 = .List(.ListIndex, 6)
    End With
    End If
    End Sub
    

    Anzeige
    AW: Daten von WORD nach EXCEL
    23.04.2010 22:53:32
    WORD
    Hallo Franz,
    du hast Recht, jetzt funktioniert es. Mußte End With und End If noch tauschen, war aber kein Problem.
    Jetzt habe ich versucht, nach dem Eintragen in die Excel-Tabelle die gesamten Daten zu mit folgendem Code zu sortieren:
  • With xlsheet
    letzte_Zeile = .Cells.specialcells(11).Row + 1 'letzte Zelle im Bereich zzgl. 1
    .Cells(letzte_Zeile, 1).Value = Me.ComboBox1.Text
    .Cells(letzte_Zeile, 2).Value = Me.TextBox1.Text
    .Cells(letzte_Zeile, 3).Value = Me.TextBox2.Text
    .Cells(letzte_Zeile, 4).Value = Me.TextBox3.Text
    .Cells(letzte_Zeile, 5).Value = Me.TextBox4.Text
    .Cells(letzte_Zeile, 6).Value = Me.TextBox5.Text
    .Cells(letzte_Zeile, 7).Value = Me.TextBox6.Text
    .Range(Cells(2, 1), Cells(letzte_Zeile, 7)).Sort Key1:=.Range(Cells(2, 1)), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

    End With

  • Das will nicht funktionieren. Wie muß ich in Word VBA die Zellbereiche in Excel definieren? Der Punkt scheint dabei eine wichtige Rolle zu spielen.
    Bis hierhin besten Dank!
    Viele Grüße
    Andre
    Anzeige
    AW: Daten von WORD nach EXCEL
    24.04.2010 01:18:27
    WORD
    Hallo Andre,
    auch vor "Cells" muss jeweisl der Punkt stehen, damit der Bezug zum Worksheet-Objekt korrekt hergestellt wird.
    .Range(.Cells(2, 1), .Cells(letzte_Zeile, 7)).Sort Key1:=.Range(.Cells(2, 1)), _
    Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom
    

    Gruß
    Franz
    Anzeige
    AW: Korrektur - Sortieranweisung
    24.04.2010 01:21:23
    fcs
    Hallo Andre,
    auch vor "Cells" muss jeweils der Punkt stehen, damit der Bezug zum Worksheet-Objekt korrekt hergestellt wird. Für die zu sortierende Spalte "Nur" .Range("A2") oder .Cells(2,1) angeben.
    .Range(.Cells(2, 1), .Cells(letzte_Zeile, 7)).Sort Key1:=.Cells(2, 1), _
    Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
    Orientation:=xlTopToBottom
    

    Gruß
    Franz
    Anzeige
    AW: Korrektur - Sortieranweisung
    24.04.2010 09:31:25
    Andre
    Hallo Franz,
    ich komme gerade nicht weiter. Ich schaffe es nicht, die Excel-Tabelle von Word aus zu sortieren. In Excel separat funktioniert der Code wunderbar, aus Word heraus bekomme ich immer eine Fehlermeldung. Habe auch schon versucht, den Code in der Excel-Tabelle mit der Before-Close-Methode anzuwenden. Leider erfolglos! Hast du noch einen Tip?
    Vielen ank!
    Viele Grüße
    Andre
    Anzeige
    AW: Korrektur - Sortieranweisung
    25.04.2010 09:02:39
    fcs
    Hallo Andre,
    VBA unter Word kennt ohne den Vereis auf die "Microsoft Excel x.y Object Library" die Werte der xl-Variablen (xlAscending, xlGuess, xlTopToBottom) nicht. In Word müssen dann die entsprechenden Werte eingesetzt werden.
          .Range(.Cells(2, 1), .Cells(letzte_Zeile, 7)).Sort Key1:=.Cells(2, 1), _
    Order1:=1, Header:=0, OrderCustom:=1, MatchCase:=False, _
    Orientation:=1
    

    Gruß
    Franz
    Anzeige
    ;
    Anzeige

    Infobox / Tutorial

    Daten von WORD nach EXCEL übertragen


    Schritt-für-Schritt-Anleitung

    Um Daten aus Word in Excel zu importieren, kannst du ein Makro in Word verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

    1. Erstelle ein Userform in Word: Füge Textfelder und ComboBoxen hinzu, um Daten einzugeben.

    2. Füge den VBA-Code hinzu: Nutze den folgenden VBA-Code, um die Daten in eine Excel-Datei zu übertragen:

      Private Sub CommandButton1_Click()
         Dim oDoc As Document, oRange As Word.Range
         Dim xlApp As Object, xlWorkbook As Object, xlsheet As Object, lZeile As Long
         Const sExcelfile As String = "C:\Users\Public\Test\WordDataBank.xls"
      
         Set oDoc = ActiveDocument
         ' Daten in das Word-Dokument eintragen
         ' ... (Der Code zum Eintragen in Word)
      
         ' Daten in die Excel-Tabelle eintragen
         Set xlApp = CreateObject("Excel.Application")
         Set xlWorkbook = xlApp.Workbooks.Open(FileName:=sExcelfile)
         Set xlsheet = xlWorkbook.Worksheets(1)
      
         With xlsheet
             lZeile = .Cells.SpecialCells(11).Row + 1 'xlCellTypeLastCell
             .Cells(lZeile, 1).Value = Me.TextBox1.Text
             ' ... (weitere Zellen befüllen)
         End With
      
         xlWorkbook.Save
         xlWorkbook.Close
         xlApp.Quit
      End Sub
    3. Starte das Userform: Fülle die Felder aus und klicke auf den Button, um die Daten zu speichern.


    Häufige Fehler und Lösungen

    • Fehler beim Speichern: Stelle sicher, dass der Pfad zur Excel-Datei korrekt ist und die Datei nicht schreibgeschützt ist.
    • Datenformat: Manchmal werden Zahlen oder Datumswerte als Text importiert. Achte darauf, die Daten vor dem Übertragen zu konvertieren.

    Alternative Methoden

    Wenn du Word nach Excel exportieren möchtest, ohne ein Makro zu verwenden, kannst du die Daten auch manuell kopieren und in Excel einfügen. Eine andere Möglichkeit ist das Speichern der Word-Daten als CSV-Datei und das anschließende Öffnen in Excel.


    Praktische Beispiele

    Hier ist ein Beispiel, wie du eine ComboBox in deinem Userform mit Werten aus Excel füllen kannst:

    Sub UserForm_Activate()
        Dim xlApp As Object, xlWorkbook As Object, xlsheet As Object, Zeile As Long, letzte_Zeile As Long
        Const sExcelfile As String = "D:\Word-Wissen\Test_Userform\Datenbank.xls"
    
        Set xlApp = CreateObject("Excel.Application")
        Set xlWorkbook = xlApp.Workbooks.Open(FileName:=sExcelfile)
        Set xlsheet = xlWorkbook.Worksheets(1)
    
        With xlsheet
            letzte_Zeile = .Cells.SpecialCells(11).Row + 1
            For Zeile = 2 To letzte_Zeile
                Me.ComboBox1.AddItem xlsheet.Cells(Zeile, 1)
            Next Zeile
            Me.ComboBox1.ListIndex = 0
        End With
    
        xlWorkbook.Close
        xlApp.Quit
    End Sub

    Tipps für Profis

    • Mehrspaltige ComboBoxen: Du kannst die ComboBox so einstellen, dass sie mehrere Spalten anzeigt. Das vereinfacht die Datenübergabe.

      With Me.ComboBox1
        .ColumnCount = 3 ' Anzahl der Spalten
        .AddItem "Daten1"
        .List(.ListCount - 1, 1) = "Daten2"
        .List(.ListCount - 1, 2) = "Daten3"
      End With
    • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um Probleme beim Importieren oder Exportieren der Daten zu vermeiden.


    FAQ: Häufige Fragen

    1. Wie kann ich die Daten aus Excel in Word importieren?
    Du kannst die Funktion excel in word importieren nutzen, um Daten aus Excel in ein Word-Dokument zu übertragen.

    2. Warum werden meine Daten als Text importiert?
    Das passiert häufig, wenn du die Daten nicht richtig konvertierst. Achte darauf, dass du Zahlen und Datumsangaben korrekt formatierst, bevor du sie in Excel einfügst.

    3. Wie kann ich eine Word-Datei in Excel einfügen?
    Das einfachste Verfahren ist, die gewünschten Daten in Word zu kopieren und in Excel einzufügen. Alternativ kannst du VBA verwenden, um die Daten automatisch zu übertragen.

    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