Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variablen nach Word übertragen

Forumthread: Variablen nach Word übertragen

Variablen nach Word übertragen
17.04.2020 13:46:42
Peer
Hallo.
Ich arbeite und zweifle die letzten Tage an dem Versuch, Variablen an Word zu übermitteln.Ich hoffe, es gibt hier Helfer, die sich auskennen.
mit

Bookmarks(Name).Range.Text = Variable (bzw. Wert der TextBox)
kann man den Inhalt übermitteln. Das funktioniert auch soweit.
Aber jetzt wollte ich z.B. das aktuelle Datum mit

Bookmarks("aktDatum").Value = xlToday
an Word schicken, aber da kommt nur Null an.
Weitere Gedankengänge waren, ob man statt Textmarken (Bookmarks) nicht besser Steuerelemente im Worddokument nimmt. Das hat den Vorteil, das man sie direkt ansprechen könnte. Aber wie spricht man diese an? Hier gibt es Unterschiede bei Formularsteuerelement und ActiveX.
Ich möchte gern das Datum, das ich in der UF der Excel-Datei eingebe, an das Worddokument übermitteln, das man aber in dem Worddokument über das Formular-Kalendersteuerelement abändern kann.
Geht das überhaupt? Wie gehe ich das an? Wie würdet ihr vorgehen?
Vielen Dank für jeden Vorschlag im Voraus.
LG
Peer
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen nach Word übertragen
17.04.2020 14:13:26
Peer
Hi.
Das Problem mit dem Datum konnte ich lösen.
Bookmarks("aktDatum").Range.Text = Date
LG
Peer
AW: Variablen nach Word übertragen
18.04.2020 10:31:54
Hajo_Zi
Hallo Peer,
Textmarken hat den Vorteil man muss sie nur einmal übergeben und kan sie an zig Stellen im Dokument verwenden.
Ist die Frage nicht in einem Word Forum besser aufgehoben?

Anzeige
AW: Variablen nach Word übertragen
18.04.2020 16:41:16
Peer
Hallo Hajo.
Im Prinzip hast du recht.
Aber spätestens wenn man mit Tabellen arbeitet, kommt man an der Sache nicht vorbei.
Interessehalber wünsche ich mir gern Lösungsvorschläge.
Und du hast ebenfalls recht bei der Wahl des Forums.
Ich werde die Frage mal im Word Forum stellen.
Vielen Dank, Hajo, dass du geantwortet hast.
LG
Peer
Anzeige
AW: Variablen nach Word übertragen
19.04.2020 16:39:23
Matthias
Moin!
HAbe mit dem Kalendersteuerelement noch nicht gearbeitet. Word ist da ein bissl problematisch. Es wird zwischen Steuerelementen und AxtiveX unterschieden. Zudem können die Objekte als INlineshape oder als reines Shape vorliegen. Je nachdem muss man sie anders ansprechen.
Hier mal ein Beispiel. Da liegt eine ActiveX Textbox als Inlineshape vor. Erst Variante spricht es über den InlineshapeIndex an, würde auch über den Namen gehen. Zweite spricht das selbe Element über seine Objektnamen an.
Set AppWD = CreateObject("Word.Application") 'Word als Object starten
mynam = "hier der Pfad"
AppWD.Visible = True
AppWD.documents.Open mynam
Set doc = AppWD.activedocument
'Zugriff über Inlineshape
doc.inlineshapes(1).OLEFormat.Object.Text = "test"
'Zugriff über Object
doc.Textbox1.Text = "was anderes"

Je nach anderen Objekten muss man ggf. ein wenig testen.
VG
Anzeige
AW: Variablen nach Word übertragen
19.04.2020 19:37:03
Peer
Hallo Matthias.
Ich nehme mal an, du hast dich auch im Word-Forum dazu gemeldet hast.
In beiden Fällen danke ich dir.
Ich habe mit beiden Versionen probiert. Aber es funktioniert die Inline Variante (noch) nicht.
Ich habe im Word-Doc ein Textfeld erstellt und darin ein Nur-Text-Inhaltsteuerelement eingefügt.
Ich habe auch nur das Inhaltsteuerelement eingefügt, komme aber zu keinem Ergebnis.
Im Excel Code habe ich

With objDocument
' Textmarken in Word füllen
'.Shapes("txbPersNrHoch").TextRange.Text = lst_TN_Auswahl.List(0, 3)
.bookmarks("PersNr").Range.Text = lst_TN_Auswahl.List(0, 3)
.bookmarks("Teilnehmer").Range.Text = lst_TN_Auswahl.List(0, 2) & " " &  _
lst_TN_Auswahl.List(0, 1)
.bookmarks("Trainer").Range.Text = TrainerVorname & " " & TrainerName & " (" &  _
TrainerOE & ")"
.bookmarks("aktDatum").Range.Text = Date
.bookmarks("TeilnahmeDatum").Range.Text = dat_AusstellDatum
.bookmarks("Ausstellungsort").Range.Text = txt_AustellOrt
' Variante 1 von Matthias (funktioniert)
.TextBox1.Text = "was anderes"  'ActiveX TextBox
' Variante 2 von Matthias (funktioniert nicht)
.inlineshapes(1).OLEFormat.Object.Text = txt_AustellOrt  'Steuerelement "test" im  _
Textfeld
' Steuerelement in Word füllen
' Variante 1 von Gerhard aus MOF
.SelectContentControlsbyTag("aktDatum").Item(1).Range.Text = dat_AusstellDatum  ' _
nur Steuerelement "aktDatum"
End With
, wobei das Word-Doc als objDocument deklariert wurde.
LG
Peer
Anzeige
AW: Variablen nach Word übertragen
19.04.2020 19:47:54
Peer
Hallo Matthias.
Ich nehme mal an, du hast dich auch im Word-Forum dazu gemeldet hast.
In beiden Fällen danke ich dir.
Ich habe mit beiden Versionen probiert. Aber es funktioniert die Inline Variante (noch) nicht.
Ich habe im Word-Doc ein Textfeld erstellt und darin ein Nur-Text-Inhaltsteuerelement eingefügt.
Ich habe auch nur das Inhaltsteuerelement eingefügt, komme aber zu keinem Ergebnis.
Im Excel Code habe ich

With objDocument
' Textmarken in Word füllen
'.Shapes("txbPersNrHoch").TextRange.Text = lst_TN_Auswahl.List(0, 3)
.bookmarks("PersNr").Range.Text = lst_TN_Auswahl.List(0, 3)
.bookmarks("Teilnehmer").Range.Text = lst_TN_Auswahl.List(0, 2) & " " &  _
lst_TN_Auswahl.List(0, 1)
.bookmarks("Trainer").Range.Text = TrainerVorname & " " & TrainerName & " (" &  _
TrainerOE & ")"
.bookmarks("aktDatum").Range.Text = Date
.bookmarks("TeilnahmeDatum").Range.Text = dat_AusstellDatum
.bookmarks("Ausstellungsort").Range.Text = txt_AustellOrt
' Variante 1 von Matthias (funktioniert)
.TextBox1.Text = "was anderes"  'ActiveX TextBox
' Variante 2 von Matthias (funktioniert nicht)
.inlineshapes(1).OLEFormat.Object.Text = txt_AustellOrt  'Steuerelement "test" im  _
Textfeld
' Steuerelement in Word füllen
' Variante 1 von Gerhard aus MOF
.SelectContentControlsbyTag("aktDatum").Item(1).Range.Text = dat_AusstellDatum  ' _
nur Steuerelement "aktDatum"
End With
, wobei das Word-Doc als objDocument deklariert wurde.
LG
Peer
Anzeige
AW: Variablen nach Word übertragen
20.04.2020 21:20:45
Matthias
Moin!
JA, im anderen Forum hatte ich noch zusätzlich die Listbox dabei.
Bin mir nicht sicher, ob du jetzt bei deinem Problem noch eine Lösung brauchst oder dir die beiden Varianten reichen. Falls du für deine Datei auch eine Lösung brauchst (und sei es nur interessehalber), lade die Datei einfach mal hoch. Vorher ggf. in txt umbenennen und die Originalendung mal posten. Dann könnte man sich an der Datei anschauen, was nicht klappt bzw. warum.
VG
Anzeige
AW: Variablen nach Word übertragen
20.04.2020 22:03:24
Peer
Hallo Matthias.
Ich bin immer für Lösungen zu haben, weil ich von haus aus neugierig bin ;-).
Ich habe alles mal in eine Zip gebaut und du kannst dir es mal gerne anschauen.
https://www.herber.de/bbs/user/136906.zip
LG Peer
Anzeige
AW: Variablen nach Word übertragen
20.04.2020 22:09:53
Peer
Hallo Matthias.
Ich bin es nochmal. ich habe dir die falschen Worddateien mitgeschickt. Anbei die richtige Datei, die du dann ins Verzeichnis Protokolle schieben musst.
https://www.herber.de/bbs/user/136907.zip
LG Peer
AW: Variablen nach Word übertragen
22.04.2020 21:14:55
Matthias
Moin!
Also habe mal geschaut. Nur im Protokoll RF 2020 ... war ein Textbox drin. Die anderen beiden Dokumente waren leer. Und dein Code schreibt dort doch die Daten rein. Konnte jetzt das Problem so nicht nachvollziehen. Bastel sonst nur mal ein Word Dokument, mit der Konstellation wie es nicht ging. Braucht auch sonst keine weiteren Textboxen, Bockmarks etc. zu haben. Geht ja nur für Testzwecke (braucht also nicht kompatibel zu deiner Exceldatei zu sein). Kümmer mich bei der Analyse dann schon.
VG
Anzeige
AW: Variablen nach Word übertragen
23.04.2020 16:50:58
Peer
Hallo Matthias.
Ich habe die anderen Dokumente noch nicht bearbeitet. Die habe ich dir beim ersten Mal falsch geschickt.
Bezüglich RF 2020... Dokument war einmal die TextBox1 gemeint, dass als AcitveX eingefügt wurde und zum zweiten gibt es ein Textfeld mit dem Nur-Inhalts-Steuerelement "txt_Datum".
Ich habe dir mal nur das eine Worddokument und die Beispielmappe geschickt. Im Worddokument habe ich einiges benannt. Wie schon erwähnt , müsstest du das Worddokument in einen Ordner "Protokoll" verschieben.
https://www.herber.de/bbs/user/136991.zip
LG
Peer
Anzeige
AW: Variablen nach Word übertragen
23.04.2020 20:39:23
Matthias
Moin!
Also habe mal getestet. Auf das Inhaltssteuerelement kannst du so zugreifen.
objDocument.Shapes("Text Box 4").TextFrame.TextRange.ContentControls(1).Range = "mein Text"

Wobei ich den Namen des Inhaltssteuerelementes nicht finden konnte. Ich glaube auch das die keinen haben. Deshalb habe ich es mit dem Index angesprochen. Gibt da ja nur einen. Und die Textbox in der das Element lag, war de TB4.
VG
Anzeige
AW: Variablen nach Word übertragen
23.04.2020 21:22:43
Peer
Hallo Matthias.
Genau das war die Lösung.
Vielen lieben Dank.
Wie weiß man, wenn man mehrere TextBoxen hat, dass es die TextBox 4 gemeint ist? Ich kann diesbezüglich in den Eigenschaften nichts finden. Ich glaube, ich hatte mal etwas von "Absatzweise" gelesen.
VG
Peer
;
Anzeige
Anzeige

Infobox / Tutorial

Variablen nach Word übertragen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung des Word-Dokuments: Erstelle ein Word-Dokument und füge die benötigten Textmarken oder Inhaltssteuerelemente hinzu. Achte darauf, dass sie eindeutig benannt sind.

  2. Excel-Code anpassen: Verwende den folgenden VBA-Code, um Variablen aus Excel an Word zu übertragen:

    Dim AppWD As Object
    Set AppWD = CreateObject("Word.Application")
    AppWD.Visible = True
    AppWD.Documents.Open "Pfad\zum\Dokument.docx"
    
    With AppWD.ActiveDocument
        .Bookmarks("aktDatum").Range.Text = Date
        .Bookmarks("PersNr").Range.Text = "12345"
        ' Beispiel für das Füllen eines Inhaltssteuerelements
        .SelectContentControlsByTag("aktDatum").Item(1).Range.Text = Date
    End With
  3. Inhaltssteuerelemente verwenden: Wenn Du ein Word Inhaltssteuerelement automatisch befüllen möchtest, kannst Du auf diese Weise darauf zugreifen:

    .Shapes("Text Box 4").TextFrame.TextRange.ContentControls(1).Range.Text = "Dein Text"
  4. Code ausführen: Starte den Code in Excel, um die Variablen an das Word-Dokument zu übergeben.


Häufige Fehler und Lösungen

  • Fehler: Null-Wert bei der Übertragung des Datums
    Lösung: Stelle sicher, dass Du die richtige Syntax verwendest. Anstelle von Bookmarks("aktDatum").Value = xlToday solltest Du Bookmarks("aktDatum").Range.Text = Date verwenden.

  • Problem mit der Identifikation von Steuerelementen:
    Lösung: Wenn Du mehrere Word Steuerelemente hast und nicht weißt, welches Du ansprechen sollst, überprüfe die Eigenschaften der Steuerelemente im Word-Dokument. Oft hilft es, sie namentlich zu benennen.


Alternative Methoden

  • Direkte Ansprache von ActiveX-Steuerelementen: Wenn Du mit ActiveX-Steuerelementen arbeitest, kannst Du diese direkt im Word-Dokument ansprechen:

    .TextBox1.Text = "Neuer Text"
  • Verwendung von Form-Steuerelementen: Je nach Bedarf kannst Du auch Form-Steuerelemente nutzen. Der Zugriff erfolgt ähnlich, aber Du musst möglicherweise den Typ des Steuerelements berücksichtigen.


Praktische Beispiele

  • Beispiel für die Übertragung von Teilnehmerdaten:

    With objDocument
        .Bookmarks("Teilnehmer").Range.Text = lst_TN_Auswahl.List(0, 2) & " " & lst_TN_Auswahl.List(0, 1)
        .SelectContentControlsByTag("aktDatum").Item(1).Range.Text = Date
    End With
  • Beispiel für die Verwendung von Inhaltssteuerelementen:

    .SelectContentControlsByTag("PersNr").Item(1).Range.Text = "12345"

Tipps für Profis

  • Verwende eindeutige Namen für Steuerelemente: Um die Identifikation zu erleichtern, benenne Deine Word Inhaltssteuerelemente und Textmarken eindeutig.

  • Teste den Code schrittweise: Führe den Code in kleinen Abschnitten aus, um sicherzustellen, dass jede Zeile korrekt funktioniert.

  • Nutze Debugging: Verwende Debug.Print im Code, um Werte zu überwachen, die an Word übermittelt werden.


FAQ: Häufige Fragen

1. Wie kann ich den Namen eines Inhaltssteuerelements herausfinden?
Du kannst im Word-Dokument die Eigenschaften des Inhaltssteuerelements überprüfen. Oftmals haben sie keinen spezifischen Namen, daher ist es hilfreich, sie nach Index anzusprechen.

2. Was ist der Unterschied zwischen ActiveX- und Form-Steuerelementen?
ActiveX-Steuerelemente bieten mehr Funktionen und Flexibilität, während Form-Steuerelemente einfacher sind und weniger Ressourcen verbrauchen. Die Wahl hängt von den Anforderungen Deines Projekts ab.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige