Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1368to1372
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
FormFields Add (Formularfelder in Word)
14.07.2014 14:34:48
Knoof
Hallo nochmal,
Ich bastel momentan an einer UserForm rum die am ende durch einen Druck Button ein Zeugnis erstellt mit den Daten die in Excel gespeichert wurden.
Das Problem besteht darin:
Ich habe 3 Checkboxen, Für jede Checkbox habe ich einen verschiedenen Text hinterlegt(in zellen gespeichert).
Wenn nun die erste Checkbox angekreuzt ist, soll nach drücken des "Druck" Button dafür ein Textformularfeld in Word erstellt werden werden und der dazu hinterlegte Text in Zelle (1, 1) soll in das erstellte Formularfeld eingefügt werden.
das gleiche soll bei den anderen Checkboxen passieren, und wenn eine Checkbox nicht angekreuzt ist dann solls halt nicht passieren.
Mir wurden bereits tipps zu den Form Fields befehlen gegeben, allerdings konnte ich dadurch noch nichts nützliches erstellen.
Grob erklärt:
If checkbox1.Value = True Then
'erstelle Textfeld "Text1" in ausgewählter word datei und fülle es
Else
If checkbox2.Value = True Then
'erstelle Textfeld "Text2" in ausgewählter word datei und fülle es
Das füllen habe ich bereits hinbekommen jedoch mit nauell erstellten textfeldern.
Danke im Vorraus

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: FormFields Add (Formularfelder in Word)
15.07.2014 17:07:45
fcs
Hallo Knoof,
hier ein Makro, wie man es unter Word lösen könnte.
Die Einfügeposition der Formular-Elemente wird dabei durch Textmarken im Worddokument festgelegt.
Das Ganze müsstest du jetzt in dein Excel-Makro einbauen, wobei wichtig ist, dass du in deinem Exceldokument eine Objekt-Variable hast, die stellvertretend für dein Worddokment ist.
Gruß
Franz
Sub Makro3()
'Erstellt unter Word2010
Dim objContentControl As Word.ContentControl
Dim wdDoc As Word.Document
Set wdDoc = ActiveDocument
With wdDoc
'nur Text-Inhalts-Steuerelement einfügen
With .Bookmarks("PosTextbox01")
Set objContentControl = .Range.ContentControls.Add(1) '1 = wdContentControlText
With objContentControl
.Title = "Textbox001"
.Tag = "Textbox001"
.MultiLine = True
.Range.Text = "Mein Test-Text" & Chr(10) & "Zweite Zeile"
End With
End With
'zweites Text-Inhalts-Steuerelement einfügen
With .Bookmarks("PosTextbox02")
Set objContentControl = .Range.ContentControls.Add(1) '1 = wdContentControlText
With objContentControl
.Title = "Textbox002"
.Tag = "Textbox002"
.MultiLine = True
.Range.Text = "Mein Test-Text 002" & Chr(10) & "Zweite Zeile 002"
End With
End With
End With
End Sub

Anzeige
AW: FormFields Add (Formularfelder in Word)
16.07.2014 08:57:51
Knoof
Hallo Franz,
Ich habe grade erst gesehen das du geantwortet hast.
Danke schonmal,
Jedoch kann ich mit meinem Kenntnisstand noch nicht so viel damit anfangen :D
1. heißt das jetzt das ich dein Makro in word oder excel einfügen soll?
2. "Die Einfügeposition der Formular-Elemente wird dabei durch Textmarken im Worddokument festgelegt"
Was meinst du damit? Es sollen ja Textmarken automatisch erstellt werden, die im nachhinein gefüllt werden sollen.
3. "wichtig ist, dass du in deinem Exceldokument eine Objekt-Variable hast, die stellvertretend für dein Worddokment ist" Das würde Wie aussehen ? :|
Gruß,
Knoof

Anzeige
AW: FormFields Add (Formularfelder in Word)
16.07.2014 13:39:10
fcs
Hallo Knoof,
1. heißt das jetzt das ich dein Makro in word oder excel einfügen soll?
Das Makro bzw. die relevanten Abschnitte müssen in dein Excel-Makro eingebaut werden, denn du willst ja alles von Excel aus steuern.
2. "Die Einfügeposition der Formular-Elemente wird dabei durch Textmarken im Worddokument festgelegt"
Was meinst du damit? Es sollen ja Textmarken automatisch erstellt werden, die im nachhinein gefüllt werden sollen.

Ich spreche hier von Textmarken nicht Textboxen.
Mit Textmarken kann man im Worddokument für Positionen oder Textbereiche Namen festlegen.
Dies ist der einfachste Weg eine Position im Text festzulegen, an der später noch Text oder etwas anderes eingefügt werden soll.
Diese Textmarken musst du manuell in deinem Worddokument einfügen.
Wenn du keine Textmarken verwendest musst du anders definieren, wo Excel die Formular-Textboxen einfügen soll.
3. "wichtig ist, dass du in deinem Exceldokument eine Objekt-Variable hast, die stellvertretend für dein Worddokment ist" Das würde Wie aussehen ? :|
Du schreibst, dass du den Inhalt aus Excelzellen schon in im Worddokument vorhandene Textboxen einfügen kannst. Dazu musst du ja schon irgendwie das Worddokument angesprochen haben. Da müsste dann auch eine entsprechende Zuweisung des Worddokuments zu der Objektvariablen möglich sein. Ins Blaue kann ich dir hier aber auch nichts programmieren. Es kommt immer etwas auf die Umstände an.
ggf. solltest du hier mal eine abgespeckte/anonymisierte Version deine Word und Exeldatei in einem ZIP-File hier hochladen, dann kann man konkreter helfen.
Ganz nebenbei:
Warum nutzt du nicht die Serienbrief-Funktion von Word mit einer Excel-Tabelle als Datenquelle?
Gruß
Franz

Anzeige
AW: FormFields Add (Formularfelder in Word)
16.07.2014 15:22:59
Knoof
Soo,
Hier eine sehr abgespeckte version von meinem Programm, stellt dir einfach noch ca. 6 Optionen mehr zum auswählen vor.
https://www.herber.de/bbs/user/91529.xlsm
Wenn a) angekreuzt ist soll Text für a) durch "Druck" in die word datei geschrieben werden.
Wenn b) angekreuzt ist ebenfalls
auch wenn beide gleichzeitig angekreuzt sind, werden beide texte hinein geschrieben.
Das Problem was ich habe ist nun, dass wenn nur a) angekreuzt ist, die vorher erstellte Formularfeld für b) leer bleibt und unnötig Platz wegnimmt. Stellt dir dies mal mit 8 vorher erstellten Formularfeldern vor.
Deshalb suche ich eine Lösung das wenn ich a) ankreuze und "Druck" drücke auch nur für a) ein Formularfeld erstellt wird und das für b) weg bleibt und keinen Platz klaut.
Ebenso wenn beide angekreuzt sind, dann soll für beide ein Formularfeld erstellt werden wo dann die Text hinein geschrieben werden.
Userbild
Ich hoffe so ist es deutlicher.
Gruß,
Knoof

Anzeige
AW:kleine Zusatzfragen
16.07.2014 17:11:35
fcs
Hallo Knoof,
befinden sich zwischen den Eingabe-Formlarfeldern noch vorgegebene Text (d.h. je nach gewählten Optionen werden unterschiedliche Wordvorlagen verwendet)
oder sollen die Formularfelder getrennt durch Zeilenschaltung(en) ab einer bestimmten Position untereinander eingefügt werden?
Welchen Typ von Textfeld/Formularfeld verwendest du?
Optisch vom Screenshot sieht es aus wie Textfeld aus "Formulare aus Vorversion".
Gruß
Franz

AW: FormFields Add (Formularfelder in Word)
17.07.2014 07:49:08
fcs
Hallo Knoof,
ich hab in deiner Exceldatei das Makro der Schaltfläche/des Userforms entsprechend ergänzt.
In der ZIP-Datei findest du auch eine entsprechend vorbereitete Worddatei mit einer Textmarke an der Formular-Textelemente eingefügt werden.
Da ich mit den erforderlichen Wordanweisungen nicht so 100%ig zurechtgekommen bin musste ich hier mit Select und Selection arbeiten.
Gruß
Franz
https://www.herber.de/bbs/user/91541.zip

Anzeige
AW: FormFields Add (Formularfelder in Word)
18.07.2014 08:33:30
Knoof
Vielen Dank! Genau so wie es bei deinem Code funktioniert stelle ich mir das vor!
Ich versuche nun deinen Quellcode irgendwie in meinen einzubauen, ich hoffe das klappt einwandfrei dann wäre mein Programm nämlich fertig :)
eine kleine Frage noch:
Du hast nur eine Textmarke gesetzt, jedoch ist es möglich option a) und b) hinein zu schreiben?
Ich dachte pro eingefügten Text bzw. Forularfeld bräcuhte ich eine Textmarke.
antwort auf deine Frage: Nein, zwischen den einzelnen Formularfeldern soll kein Text mehr stehen, es steht lediglich ein Fester Text am Anfang(Einleitung) und am ende.
Ich melde mich bald obs klappt oder nicht :)
Gruß,
Knoof

Anzeige
AW: FormFields Add (Formularfelder in Word)
18.07.2014 09:54:58
fcs
Hallo Knoof,
Du hast nur eine Textmarke gesetzt, jedoch ist es möglich option a) und b) hinein zu schreiben?
Ich dachte pro eingefügten Text bzw. Formularfeld bräuchte ich eine Textmarke.

Wenn die Informationen/Formularelemente aus Excel nacheinander im Word-Dokument eingefügt werden sollen, dann benötigt man nur eine Textmarke als Vorgabe für die Einfügeposition. Die ggf. erforderlichen Absatzschaltungen kann man per Makro einfügen. Sollen die Exceldaten an unterschiedlichen Positionen eingefügt werden, dann ist für jede Einfügeposition eine Textmarke erforderlich.
Grundsätzlich kann man die Einfügeposition auch anders festlegen; z.B. vor dem 3. Absatz oder auch nach einem Bestimmten Wort (wenn dieses eindeutig ist) etc. Textmarken sind aber immer eindeutig und in der Programmierung einfach zu handhaben.
Gruß
Franz

Anzeige
AW: FormFields Add (Formularfelder in Word)
18.07.2014 10:00:05
Knoof
Okay, verstanden.
Also dein Code klappt bei mir momentan sehr gut :) Jedoch stellt sich bei mir das Problem, sobald der Text welcher eingefügt werden soll länger als 255 zeichen ist, kann der Text nicht eingefügt werden bzw übertragen werden.
Gibt es dafür noch evtl eine Lösung die ich irgendwo in den Code einbauen kann?
Das Problem hatt ich vorher nicht als ich dies hier verwendet habe:
wdAnw.ActiveDocument.Bookmarks("Text5").Range.Fields(1).Result.Text = Worksheets("Auswertungen").Cells(zeile, 5)
Nur wüsste ich nicht diesen Satz in dein Code zu integrieren.

Die ggf. erforderlichen Absatzschaltungen kann man per Makro einfügen.

Diese bräuchte ich auch...
Gruß,
Knoof

Anzeige
AW: FormFields Add (Formularfelder in Word)
18.07.2014 12:10:18
fcs
Hallo Knoof,
evtl. gibt es für das von mir gewählte Formular-Steuerelement eine Längenbeschränkung. Das muss ich nochmals prüfen.
Muss der Text aus Excel in Word denn unbedingt in ein Formular-Steuerelement eingefügt werden?
Kann der Text evtl. einfach als normaler Text in Word eingefügt werden?
Gruß
Franz

AW: FormFields Add (Formularfelder in Word)
18.07.2014 12:36:21
Knoof
Hallo Franz,
Es ist ganz egal wie der Text dort eingefügt wird, hauptsache er steht am ende in dem word dokument und wird gedruckt.
Ich kannte nur bisher keine andere Möglichkeit den Text in ein Word dokument zu kriegen, wenn du da eine bessere Möglichkeit weißt, wäre ich sehr Glücklich :)
Heute muss das noch klappen da ich die USerForm heute fertigstellen muss, deswegen bin ich sehr dankbar das du mir bei diesem letzten Schritt hilfst!
Gruß,
Knoof

Anzeige
AW: FormFields Add (Formularfelder in Word)
18.07.2014 13:45:29
fcs
Hallo Knoof,
mit direktem Einfügen des Textes in das Word-Dokument wird es einfacher.
Passe im Userform Code die beiden folgenden Prozeduren an.
In CommandButton3_Click fällt dabei beim Aufruf der Sub "prcWordFormularText" nur der Parameter "strBox" für den Namen des Steuerelements weg.
Gruß
Franz
Private Sub CommandButton3_Click()
Dim intCount As Integer
Dim strDocName As String
strDocName = "D:\Test\KnoofTest.docx" '  Dateiname anpassen !!
'Wordanwendung öffnen
Set wdApp = VBA.CreateObject("Word.Application")
wdApp.Visible = True
'Vorlagedatei öffnen
Set wdDoc = wdApp.documents.Open(strDocName)
intCount = 0
Set wdRange = wdDoc.Bookmarks("FormularPosition").Range 'Name ggf. anpassen
'Formularfelder in umgekehrter Reihenfolge von unten nach Oben einfügen
If Me.CheckBox2 = True Then 'Option b)
Call prcWordFormularText(strText:=Sheets("Tabelle1").Cells(2, 1).Text, _
intCount:=intCount)
intCount = intCount + 1
End If
If Me.CheckBox1 = True Then 'Option a)
Call prcWordFormularText(strText:=Sheets("Tabelle1").Cells(1, 1).Text, _
intCount:=intCount)
intCount = intCount + 1
End If
Me.Hide
'Datei drucken und ohne speichern schließen
wdDoc.PrintOut
wdDoc.Close savechanges:=False
'Wordanwendung beenden
wdApp.Quit
Set wdDoc = Nothing: Set wdApp = Nothing
Me.Show
End Sub
Private Sub prcWordFormularText(ByVal strText As String, ByVal intCount As Integer)
wdRange.Select
If intCount > 0 Then
wdApp.Selection.TypeParagraph
wdApp.Selection.MoveLeft 1, 1 '1 Zeichene nach links
End If
wdApp.Selection.TypeText strText
End Sub

AW: FormFields Add (Formularfelder in Word)
18.07.2014 14:02:55
Knoof
Geil funktioniert! super vielen vielen Dank.
WIe kriege ich nun absätze zwischen die einzelnen Texte?
Gruß,
Knoof

AW: FormFields Add (Formularfelder in Word)
18.07.2014 14:04:48
fcs
Hallo Knoof,
hier eine Variante, die ohne die 2. Sub arbeitet.
Die gewählten Optionstexte werden mit Absatzschaltung getrennt in einer Variablen zusammengefügt und in einem Rutsch im Worddokument eingefügt.
Nachfolgend das entsprechend modifizierte Makro der Schaltfläche.
Gruß
Franz
Private Sub CommandButton3_Click()
Dim intCount As Integer
Dim strDocName As String
Dim strText As String                                           'neu!!
strDocName = "D:\Test\KnoofTest.docx" '           Dateiname anpassen !!
'Wordanwendung öffnen
Set wdApp = VBA.CreateObject("Word.Application")
wdApp.Visible = True
'Vorlagedatei öffnen
Set wdDoc = wdApp.documents.Open(strDocName)
intCount = 0
Set wdRange = wdDoc.Bookmarks("FormularPosition").Range 'Name ggf. anpassen
'Texte in umgekehrter Reihenfolge von unten nach Oben in Variable zusammensetzen
If Me.CheckBox2 = True Then 'Option b)
With Sheets("Tabelle1").Cells(2, 1)
If strText = "" Then strText = .Text Else strText = .Text & Chr(13) & strText
End With
End If
If Me.CheckBox1 = True Then 'Option a)
With Sheets("Tabelle1").Cells(1, 1)
If strText = "" Then strText = .Text Else strText = .Text & Chr(13) & strText
End With
End If
wdRange.Select                          'neu
wdApp.Selection.TypeText strText        'neu
Me.Hide
'Datei drucken und ohne speichern schließen
wdDoc.PrintOut
wdDoc.Close savechanges:=False
'Wordanwendung beenden
wdApp.Quit
Set wdDoc = Nothing: Set wdApp = Nothing
Me.Show
End Sub

AW: FormFields Add (Formularfelder in Word)
18.07.2014 14:22:17
Knoof
Wow, es klappt alles wie geschmiert.
Vielen Dank. Du hast mir sehr geholfen!

42 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige