die nachfolgenden Codes hat mir Luschi zur Verfügung gestellt; Code 1 ermöglicht, Daten aus Excel an ein geöffnetes UF in WORD zu senden. Code 2 sollte eigentlich das Gleiche bewirken, macht es aber nicht. In Code 2 wird das UF nur bei geschlossenem UF "beschickt", dafür aber die 4. und 5. Textbox von 5 Textboxes. - Ich würde gerne einen der beiden Codes so umstellen, dass der Export von Excel (C5:C26) und (E5:E:26) in ein geöffnetes UF in WORD funktioniert, dabei müßte aber wohl der Code, wie es Luschi in der 2. Version gelöst hat, jeweils an das geöffnete WORD-Dokument versandt werden, weil es sich nicht um ein festes WORD-Dokument handelt, so dass der Code nicht von vornherein in WORD geschrieben werden kann. Was müßte ich da machen bzw. müsste gemacht werden? Alle meine bisherigen Umstellungsversuche sind absolut gescheitert. Danke schon jetzt allen wieder für die Rückmeldung.
Herzliche Grüße - Wolfgang
'Code 1 beschickt WORD bei geöffnetem UF, allerdings durchgehend von Textbox1-5 -Ich würde gerne aus den Zellen C5:C26 in Textbox 4 und E5:E26 in Textbox 5 des UF von WORD haben.
Option Explicit
Sub Transfer_zu_Word_1()
Dim ws As Worksheet, rg1 As Range, rg2 As Range, _
s As String, i As Integer
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Set rg1 = ws.Range("C6:C10")
Dim objWordApp
Dim objWordDoc
Dim objTB
Dim intI As Integer
'Mit geöffneter Word-Applikation connecten
Set objWordApp = GetObject(, "Word.Application")
objWordApp.Visible = True
i = 0
For Each rg2 In rg1
i = i + 1
s = CStr(rg2.Value)
objWordApp.Run "datenInUserform1", i, s
Next rg2
Set rg2 = Nothing
Set rg1 = Nothing
Set ws = Nothing
Set objWordApp = Nothing
End Sub
'Modul in WORD:
Sub datenInUserform1(i As Integer, s As String)
UserForm1("TextBox" & i).Value = s
End Sub
' Code 2, der im Hintergrund den UF in WORD beschickt und auch Textbox4 bzw. 5 "bedient" - Hier wäre schön, wenn der Code bei geöffnetem UF in WORD funktionieren würde.
Option Explicit
Sub Transfer_zu_Word_2()
Dim ws As Worksheet, rg1 As Range, rg2 As Range, _
s As String, i As Integer
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Dim objWordApp
Dim objWordDoc
Dim objTB
Dim intI As Integer
'Mit geöffneter Word-Applikation connecten
Set objWordApp = GetObject(, "Word.Application")
objWordApp.Visible = True
Call modulEinfuegenInWord(objWordApp)
Set rg1 = ws.Range("C5:C26")
s = ""
For Each rg2 In rg1
s = s & CStr(rg2.Value) & Chr(10)
Next rg2
objWordApp.Run "datenInUserform1", "TextboxAnzahl", s
Set rg1 = ws.Range("E5:E26")
s = ""
For Each rg2 In rg1
s = s & CStr(rg2.Value) & Chr(10)
Next rg2
objWordApp.Run "datenInUserform1", "TextboxInhalt", s
Set rg2 = Nothing
Set rg1 = Nothing
Set ws = Nothing
Set objWordApp = Nothing
End Sub
Sub modulEinfuegenInWord(ByVal xApp As Object)
Dim vbC As Object, s As String
On Error GoTo next_1
Set vbC = xApp.ActiveDocument.VBProject.VBComponents("mod_Luschi")
'vorhandenes Modul in Word-Dokument löschen
xApp.ActiveDocument.VBProject.VBComponents.Remove vbC
On Error GoTo 0
next_1:
''Modul in Word-Dokument einfügen
s = xApp.ActiveDocument.Path & "\mod_Luschi.bas"
xApp.ActiveDocument.VBProject.VBComponents.Import s
Set vbC = Nothing
End Sub
'Hier der Code aus mod_Luschi.bas, der wohl als Modul in WORD hineinkopiert wird.
Option Explicit
Sub datenInUserform1(tb As String, s As String)
UserForm1(tb).MultiLine = True
UserForm1(tb).ScrollBars = 2
UserForm1(tb).Value = s
End Sub