Wordverknüpfung zu Excel??

  • Word

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Sahni.

    Wordverknüpfung zu Excel??

    Hallo liebe Leute,

    ich komm gleich auf den Punkt. Mein Problem ist folgendes: Ich würde gern in Word ein Formular erstellen und dieses mit Excel verknüpfen.
    D.h. ich habe ein Feld in dem etwas reingeschrieben wird und dieses soll dann per Button in einer Exceldatei gespeichert werden.
    Ich hab zwar durch Google haufenweise gefunden wie man Excel mit Word verknüpft und Daten rausholen kann, aber nicht andersrum...
    Wenn ich versuch den gleichen Code zu nehmen von einer Exceldatei in eine neue zu speichern, dann klappt das ja (logischerweise) nicht, daher sieht mein Code bis jetzt wie folgt aus:

    Option Explicit
    Private Sub CommandButton1_Click()
    Dim Letzte As Long
    'Pflichtfeld "Name" abfragen:
    If TextBox1("Name") = "" Then
    MsgBox "Sie müssen einen Namen eintragen!"
    Exit Sub
    End If
    Documents.Open FileName:= _
    "H:\Marketing\Formular für Vereinbarungen\Vereinbarungen.xlsx"
    With Sheets("Tabelle1")
    'Letzte Zeile bestimmen:
    Letzte = Sheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
    'Die Werte übergeben:
    .Cells(Letzte, 1) = TextBox1("B5")
    End With
    ActiveWorkbook.save
    ActiveWorkbook.Close
    End Sub

    Hab anstelle von Range einfach Textbox1 genannt, so wies auch in der Worddatei heißt, dann meckert er da schonmal nicht mehr rum...
    Bei Sheets meckert er rum "Fehler beim Kompilieren: Variable nicht definiert" -> Weiß aber nicht, was ich da sonst hinschreiben soll, weil ich ja später auch auf verschiedene Mappen zugreifen will...
    Aber wenn ich es auch -Spaß- und -einfach mal rumprobier- weglasse, meckert er bei der nächsten Stelle rum...

    Vill kann mir jemand helfen??
    Ich würd das Formular schon gern mit Word machen, da es auch einfach besser als mit Excel aussieht...

    GlG Sahni ;o)
    Da Du Dich in Word befindest, kennt er nicht die Excelstandardobjekte und Konstanten. Deshalb musst Du statt Sheets Documents.WorkSheets("Tabelle1") und statt xlCellTypeLastCell den Wert der Konstante verwenden. (Musst Du in Excel nachschauen.)
    NB. Es ist doch schön, wenn man lesbare Namen vergibt. Siehe auch [VB.NET] Beispiele für guten und schlechten Code (Stil).
    oki :) soweit erstmal vielen dank
    ABER: jetzt meckert er rum bei "With Documents.Worksheets("Tabelle1")" Methode oder Datenobjekt nicht gefunden
    hab gedacht, dass ich dann vielleicht noch was wie

    Dim x As Workbook
    Set x = Worksheets("Tabelle1")

    da sagt er dann aber gleich "benutzerdefinierter Typ nicht definiert....
    Ich bin leider noch nicht so vesiert in VBA und finde das meiste nur durch Probieren heraus X(
    ähm..wie meinst du das?
    also ich öffne ja das workbook "Vereinbarungen"
    Documents.Open FileName:= _
    "H:\Marketing\Formular für Vereinbarungen\Vereinbarungen.xlsx"
    With Documents.Worksheets("Tabelle1")...
    Dann hat er aber mit "Worksheet" wieder ein Problem...
    (Methode oder Datenobjekt nicht gefunden)

    so??^^
    Um von Word aus Excel-Dateien zu bearbeiten, musst du einen Verweis auf Microsoft Excel setzen ("Extras - Verweise" im VBA-Editor) und ein Excel-Application-Objekt deklarieren. Hilfreich ist außerdem, Objekte, die du noch benötigst (z. B. Workbook-Objekt(e)), zu deklarieren:

    Visual Basic-Quellcode

    1. Dim xlApp As New Excel.Application
    2. Dim xlWB As Excel.Workbook, xlWS As Excel.Worksheet
    3. Set xlWB = xlApp.Workbooks.Open("H:\Marketing\Formular für Vereinbarungen\Vereinbarungen.xlsx")
    4. Set xlWS = xlWB.Sheets("Tabelle1")


    Mithilfe dieser Objekte kannst du dann Excel-VBA-Code verwenden.

    EDIT:

    Noch ein paar Hinweise:

    Documents.Worksheets(...) funktioniert nicht, weil sich Documents auf Word-Dokumente bezieht.

    Mit Documents.Open ... öffnest du Dateien in Word, also wie wenn du in Word auf "Datei - Öffnen" klickst.

    Da es in Word-Dokumenten keine "Sheets" gibt, gibt es auch kein entsprechendes Objekt in Word-VBA.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „roddy“ ()

    Also ich hab des jetzt erstmal alles so umgeschrieben mit dem excel.app :rolleyes:
    so weit nicht schlecht...jetzt meckert er zwat nirgendswo mehr rum, aber er fügt den Text aus der Textbox auch nicht in die Exceltabelle ein...
    Ich bin mit ziemlich sicher, dass es an dieser stelle liegt, wenn ihr aber trotzdem den ganzen code braucht, sagt einfach bescheid ;)

    Visual Basic-Quellcode

    1. Letzte = xlWB.Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
    2. xlWB.Worksheets(1).Cells(Letzte, 1) = TextBox1


    kann auch sein, dass ich mitlerweile völlig kirre bin...schlag mich schon den halben tag mit dem problem rum und bin schon leicht verwirrt *hüstel*
    mh, das funktioniert leider auch nicht....mein gesamter Code sieht mom so aus:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Sub CommandButton1_Click()
    3. Dim Letzte As Long
    4. Dim xlApp As Excel.Application
    5. Dim xlWB As Excel.Workbook
    6. Dim xlWS As Excel.Worksheet
    7. If TextBox1.Value = Range = "" Then
    8. MsgBox "Sie müssen einen Namen eintragen!"
    9. End If
    10. Exit Sub
    11. Set xlApp = New Excel.Application
    12. Set xlWB = xlApp.Workbooks.Open("H:\Marketing\Formular für Vereinbarungen\Entwicklung\Vereinbarungen.xlsx")
    13. Set xlWS = xlWB.Sheets("Tabelle1")
    14. Letzte = xlWB.Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
    15. xlWB.Worksheets(1).Cells(Letzte, 1).Value = TextBox1.Text
    16. ActiveWorkbook.Save
    17. ActiveWorkbook.Close
    18. Set xlApp = Nothing
    19. Set xlWB = Nothing
    20. Set xlWS = Nothing
    21. End Sub


    leider sagt er mir nicht mal, ob es i-ein problem gibt...er führt den code einfach aus, aber es passiert nix...
    bin mom ehrlich gesagt ziemlich ratlos ?(


    //EDIT:
    Ich hab jetzt nach

    Visual Basic-Quellcode

    1. Set xlWS = xlWB.Sheets("Tabelle1")

    mal eine MessageBox eingefügt, die mir sagt, dass bis dahin alles ok ist.

    der Debugger markiert mir dann folgende stelle:

    Visual Basic-Quellcode

    1. xlWB.Worksheets(1).Cells(Letzte, 1).Value = TextBox1.Text

    mit Laufzeitfehler 91...(Objektvariable und With-Blockvariable nicht festgelegt)

    Hilft mir persönlich auch nicht weiter momentan, aber ich werd nochmal ne Runde googlen und probieren^^

    //EDIT:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Sahni“ ()

    ja des is mir och grad aufgefallen :S

    Aber ich hab des jetzt soweit erstmal hinbekommen, das simple speichern klappt...
    natülich brauch ich noch ein bisschen SchnickSchnack diesbezüglich, da werd ich bestimmt nochmal öfter melden^^

    Für alle Wissbegieriegen, so sieht mein Code erstmal aus:

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Sub CommandButton1_Click()
    3. Dim Letzte As Long
    4. Dim xlApp As Excel.Application
    5. Dim xlWB As Excel.Workbook
    6. Dim xlWS As Excel.Worksheet
    7. Set xlApp = New Excel.Application
    8. Set xlWB = xlApp.Workbooks.Open("H:\Marketing\Formular für Vereinbarungen\Entwicklung\Speichern.xlsx")
    9. Set xlWS = xlWB.Sheets("Tabelle1")
    10. Letzte = xlWB.Worksheets(1).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
    11. xlWB.Worksheets(1).Cells(Letzte, 1).Value = TextBox1.Text
    12. xlWB.Save
    13. xlWB.Close
    14. Set xlApp = Nothing
    15. Set xlWB = Nothing
    16. Set xlWS = Nothing
    17. End Sub


    Danke an alle für die Hilfe und Denkanstöße :D