Anzeige
Archiv - Navigation
916to920
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
916to920
916to920
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Worin liegt der Unterschied? - Daten an WORD

Worin liegt der Unterschied? - Daten an WORD
21.10.2007 06:50:00
Wolfgang
Hallo,
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


7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Worin liegt der Unterschied? - Daten an WORD
21.10.2007 13:55:00
Gerd
Hallo Wolfgang,
ohne Zusage einer Lösung.
Wo und wie erhält das aktive Worddokument seine Userform?
Evtl. wäre es besser, den Weg umzudrehen u. von Word aus die Daten aus der Excel-Datei
zu holen.
Gruß Gerd

Anzeige
AW: Worin liegt der Unterschied? - Daten an WORD
21.10.2007 17:48:42
Wolfgang
Hallo Herby und Gerd,
Danke für Eure Rückmeldungen und sorry, dass ich mich jetzt erst melden kann (hatte noch einen Krankenbesuch gemacht); Deine Ausarbeitungen laufen soweit, Herby - sobald ich aber den Code ergänze (siehe unten) rennt er nicht mehr bei geöffnetem UF. Der Userform (das oder die?) befindet sich fest im Worddokument, welches im Rahmen einer Vernetzung aufgerufen wird. Die Lösung von Luschi sah dabei vor, das Modul für das Füllen der Textboxes über Excel in das geöffnete WORD-Dokument zu kopieren (siehe Ergänzungen). Ist evtl. in dem Kopiercode noch etwas umzustellen oder habe ich generell den Code von Herby noch falsch ergänzt? - Das Word-Dokument, um Deine Frage, Gerd, aufzugreifen, ist nicht editierbar, da der UF direkt beim Öffnen erscheint und geöffnet ist. Danke schon jetzt wieder für die Rückmeldungen.
Herzliche Grüße
Wolfgang
Option Explicit

Sub Transfer_zu_Word_1()
Dim ws As Worksheet, rg1 As Range, rg2 As Range, rg3 As Range, _
s As String, i As Integer
Set ws = ThisWorkbook.Worksheets("Tabelle1")
Set rg1 = ws.Range("C5:C26")
Set rg3 = ws.Range("E5:E26")
Dim objWordApp
Dim objWordDoc
Dim intI As Integer
'Mit geöffneter Word-Applikation connecten
Set objWordApp = GetObject(, "Word.Application")
objWordApp.Visible = True
Call modulEinfuegenInWord(objWordApp)
s = ""
For Each rg2 In rg1
s = s & CStr(rg2.Value) & Chr(10)
Next rg2
objWordApp.Run "datenInUserform1", 4, s ' 3= Nr. der Textbox = Textbox3
s = ""
For Each rg2 In rg3
s = s & CStr(rg2.Value) & Chr(10)
Next rg2
objWordApp.Run "datenInUserform1", 5, s ' 3= Nr. der Textbox = Textbox3
Set rg2 = Nothing
Set rg1 = Nothing
Set rg3 = 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("Wordimport")
'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 & "\Wordimport.bas"
xApp.ActiveDocument.VBProject.VBComponents.Import s
Set vbC = Nothing
End Sub


Anzeige
AW: Worin liegt der Unterschied? - Daten an WORD
21.10.2007 18:27:45
Gerd
Hallo Wolfgang,
Das Word-Dokument ist nicht editierbar, da der UF direkt beim Öffnen erscheint und geöffnet ist.
Dort wo die Userform erstellt wird, könntest dieser bestimmt im Userform-Modul gleich Code mitgeben ob fürs Load, Activate, CommandButton_Click ......
Gruß Gerd

Leider kein direkter Zugriff auf WORD
21.10.2007 18:42:14
Wolfgang
Hallo Gerd,
leider funktioniert das nicht, das Dokument wird von einer .dot generiert und die .dot befindet sich auf einem zentralen Server, so dass ich leider keinen direkten Zugriff auf die UF in WORD erhalte. - Gäbe es soetwas wie einen Refresh-Code o.ä., der in dem Modul welches nach WORD exportiert wird, aktiviert werden könnte? - Danke erneut für die Rückmeldungen.
Herzliche Grüße
Wolfgang

Anzeige
AW: Leider kein direkter Zugriff auf WORD
21.10.2007 22:55:00
Herby
Hallo Wolfgang,
sobald in Word eine Userform aufgerufen wird, kann der VBA Code nicht mehr in Word eingelesen werden.
Die Fehlermeldung hierzu ist m.E. ziemlich eindeutig. Allerdings weiß ich nicht, obs nicht eine andere
Möglichkeit gibt Makro-Code während der Ausführung zu übertragen, da ich kein VBE-Spezialist bin.
Was spricht gegen den von mir geposteten Vorschlag ? Damit werden doch die Daten in die Userform übertragen. Was fehlt sind die MultiLinieEigengschaft und die Scrollbalken. Werden diese unbedingt benötigt ?
Da fällt mir noch was ein. Kann die Userform nicht mal kurz geschlossen (das Makro übertragen) und danach die Userform wieder geöffnet werden ?
Viel Glück - Vielleicht klappt´s doch noch.
Viele Grüße
Herby

Anzeige
AW: Leider kein direkter Zugriff auf WORD
22.10.2007 05:33:00
Wolfgang
Hallo Herby,
Danke für Deine Rückmeldung; Dein Code rennt ja auf jeden Fall und kann so angewandt werden; Ich will mir nachher 'mal im Büro das Word-Dokument noch wieder näher anschauen; Vielleicht gibt es ja da tatsächlich noch irgendwo eine Lücke; Man müßte versuchen, auch über den exporierten Code die UF zu schließen, den Code weiter zu übersenden und dann die UF wieder zu öffnen (ob das funktioniert?) - Ich werde auf jeden Fall weiter testen. Notfalls müßte ich die Variante über Zwischenablage verwenden. Recht herzlichen Dank somit nochmals.
Gruß - Wolfgang

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige