Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1152to1156
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

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
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
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
    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
    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
    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

    Links zu Excel-Dialogen

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige