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

Excel VBA <-> Word

Excel VBA <-> Word
07.07.2016 15:50:19
Friedl
Hallo Forum,
Ich habe in Excel eine Userform mit Combobox und textboxen.
jetzt möchte ich ein Word docx öffnen und bestimmte Inhalte der Excel Combobox und Textboxen in das Word docx schreiben.
Habe bereits versucht Word Textbox anzusprechen. Word Dokumentz öffnet zwar aber es wird nicht in die Textbox geschrieben.
hier mein Code. Hab mal versucht nur den Inhalt der Combobox in die Word textbox zuschreiben. _ ohne erfolg

Private Sub CommandButton17_Click()
Dim strText As String
Dim lngZeile As Long
Dim objAppWord As Object
Dim objWordDoc As Object
On Error Resume Next
Set objAppWord = GetObject(, "Word.Application")
On Error GoTo 0
If objAppWord Is Nothing Then
Set objAppWord = CreateObject("Word.Application")
End If
objAppWord.Visible = True
objAppWord.Activate
Set objWordDoc = objAppWord.Documents.Open("H:\Desktop\Zuweisung_ohne_Parkplatz.docx")
Dim bRange As Range
If ActiveDocument.Bookmarks.Exists("Textbox1") Then
Set bRange = ActiveDocument.Bookmarks("Textbox1").Range
bRange.Text = Me.ComboBox1.Text
End If
objWordDoc.PrintPreview
objWordDoc.Close
End Sub

Danke

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA <-> Word
07.07.2016 16:48:15
Hajo_Zi
Du musst mit Textmarken arbeiten.
     For Each X In Me.Controls
If TypeOf X Is MSForms.TextBox Then
'        TMName = x.Name
'        MsgBox X.Name
If ActiveDocument.Bookmarks.Exists(X.Name) Then
Set TMRange = ActiveDocument.Bookmarks(X.Name).Range
TMRange.Text = X.Text
ActiveDocument.Bookmarks.Add Name:=X.Name, Range:=TMRange
End If
End If
Next
wie das aus Excel geht keine Ahnung.

AW: Excel VBA <-> Word
08.07.2016 08:50:45
Friedl
Hallo liebe Leute
Habe es jetzt soweit geschafft Den Inhalt der USerform-Combobox an eine Textmarke zu übergeben und diese neu zu setzen.
Jetzt habe ich das Problem wenn ich eine zweite Textmarke ansprechen und setzen will bekomme ich eine Fehlermeldung " Fehler beim Kompelieren - Variable nicht definiert" habe im Code die Stelle beschrieben wo es hackt.
Code
Private Sub CommandButton17_Click()
Dim strText As String
Dim lngZeile As Long
Dim objAppWord As Object
Dim objWordDoc As Object
On Error Resume Next
Set objAppWord = GetObject(, "Word.Application")
On Error GoTo 0
If objAppWord Is Nothing Then
Set objAppWord = CreateObject("Word.Application")
End If
objAppWord.Visible = True
objAppWord.Activate
Set objWordDoc = objAppWord.Documents.Open("H:\Desktop\Zuweisung_ohne_Parkplatz.docx")
With objWordDoc
objWordDoc.Bookmarks("Name").Range.Text = Me.ComboBox1.Value
objWordDoc.Bookmarks.Add Name
End With
With objWordDoc
objWordDoc.Bookmarks("Vorname").Range.Text = Me.TextBox5.Text
objWordDoc.Bookmarks.Add Vorname ' 

Anzeige
AW: Excel VBA <-> Word
08.07.2016 08:49:35
Friedl
Hallo liebe Leute
Habe es jetzt soweit geschafft Den Inhalt der USerform-Combobox an eine Textmarke zu übergeben und diese neu zu setzen.
Jetzt habe ich das Problem wenn ich eine zweite Textmarke ansprechen und setzen will bekomme ich eine Fehlermeldung " Fehler beim Kompelieren - Variable nicht definiert" habe im Code die Stelle beschrieben wo es hackt.
Code
Private Sub CommandButton17_Click()
Dim strText As String
Dim lngZeile As Long
Dim objAppWord As Object
Dim objWordDoc As Object
On Error Resume Next
Set objAppWord = GetObject(, "Word.Application")
On Error GoTo 0
If objAppWord Is Nothing Then
Set objAppWord = CreateObject("Word.Application")
End If
objAppWord.Visible = True
objAppWord.Activate
Set objWordDoc = objAppWord.Documents.Open("H:\Desktop\Zuweisung_ohne_Parkplatz.docx")
With objWordDoc
objWordDoc.Bookmarks("Name").Range.Text = Me.ComboBox1.Value
objWordDoc.Bookmarks.Add Name
End With
With objWordDoc
objWordDoc.Bookmarks("Vorname").Range.Text = Me.TextBox5.Text
objWordDoc.Bookmarks.Add Vorname ' 

Anzeige
AW: Excel VBA <-> Word
10.07.2016 10:52:58
Werner
Hallo,
ich stell mal auf offen, sonst schaut hier eher keiner mehr rein.
Gruß Werner

BookMarkTest
10.07.2016 13:13:39
Michael
Hi,
das Problem ist einerseits die Unterscheidung von Variablen und VariablenINHALTEN und andererseits dem Erkennen von vorhandenen Eigenschaften eines Objektes, was klar wird, wenn man Friedls mit Hajos Zeilen vergleicht:
objWordDoc.Bookmarks.Add Name
ActiveDocument.Bookmarks.Add Name:=X.Name, Range:=TMRange
Name ist eine Eigenschaft von Bookmarks (wie eben auch z.B. Sheets(1).Name), wobei die obere Deklaration ohne Parameter (also dem, was nach dem := steht) für meine Begriffe relativ undefiniert ist; jedenfalls ist Vorname keine Eigenschaft.
Je eine Word- und Exceldatei anbei im ZIP-Archiv: https://www.herber.de/bbs/user/106889.zip
Ich war zu faul, UFen und TBen nachzubauen, deshalb holt sich das Makro die Werte schlicht aus der Tabelle:
Option Explicit
Sub Test()
Dim strText As String
Dim strName As String, nv$, aus$   ' $ = as string
Dim lngZeile As Long, erl&, nerl&  ' & = as long
Dim objAppWord As Object
Dim objWordDoc As Object
Dim TMRange As Object
On Error Resume Next
Set objAppWord = GetObject(, "Word.Application")
On Error GoTo 0
If objAppWord Is Nothing Then
Set objAppWord = CreateObject("Word.Application")
End If
objAppWord.Visible = True
objAppWord.Activate
Set objWordDoc = objAppWord.Documents.Open(ThisWorkbook.Path & "\BookMarkTestW.docx")
For lngZeile = 2 To 4
strName = Range("B" & lngZeile).Value     ' z.B. = Me.ComboBox1.Caption
strText = Range("C" & lngZeile).Value     ' = Me.ComboBox1.Value
If objWordDoc.Bookmarks.Exists(strName) Then
objWordDoc.Bookmarks(strName).Range.Text = strText
erl = erl + 1
Else
nv = nv & strName & ", "
'         MsgBox "Bookmark " & strName & " nicht gefunden."
nerl = nerl + 1
End If
Next
'objWordDoc.PrintPreview
objWordDoc.Close SaveChanges:=False
objAppWord.Quit SaveChanges:=False   ' ***********
If nerl > 0 Then
MsgBox erl & " Bookmarks erledigt, " & nerl & " nicht gefunden:" & vbLf & nv
Else
MsgBox erl & " Bookmarks (das sind alle) erledigt."
End If
End Sub
Man könnte ja Bookmarks auch mit VBA hinzufügen, falls nicht vorhanden, aber die stehen im Text dann irgendwo (außer man kennt sich mit Word-VBA aus), deshalb passiert im Else-Fall nichts weiter, als daß die nicht vorhandenen "Namen" in einen String für die spätere Ausgabe geschrieben werden.
Schöne Grüße,
Michael
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige