Frage von KlugerHans, 46

Wie generiere ich aus einer Checkliste eine Word-Datei mit zuvor ausgewählten Textbausteinen?

Ich möchte eine Checkliste erstellen, aus der ich je nach Bedarf mehrere Haken setzen kann und daraus eine Word-Datei mit vorher festgelegten und zu den Haken zugeordneten Textbausteinen erstellt wird.

Beispiel: Ich möchte eine Rechnung erstellen für den Verkauf für Äpfel. Daher klicke ich in der Checkliste auf den Eintrag "Äpfel" und in der anschließend generierten Word-Datei wird ein vorgefertigter Textbaustein eingefügt "Eine Gute Wahl, Äpfel sind sehr gesund.".

Ich hoffe, dass mein Anliegen einigermaßen verständlich ist.

LG Hans

Antwort
von Ninombre, 30

Erstell Dir in Word eine Userform mit den gewünschten Checkboxen und einem Commandbutton.

Code für den Button (Einfacher Fall ohne große Logik: Die Texte zu den markierten Checkboxen werden einfach aneinander gehängt):

Private Sub CommandButton1_Click()
For i = 1 To 3 'Anpassen auf die Anzahl der Checkboxen
If UserForm1.Controls("Checkbox" & i).Value = True Then
Select Case i
Case 1: DeinText = DeinText & "Apfel ist Super "
Case 2: DeinText = DeinText & "Birne schmeckt. "
Case 3: DeinText = DeinText & "Melone ist eklig " 'cases erweitern case 4 etc
End Select
End If
Next
Selection.TypeText Text:=DeinText
End Sub

Kommentar von KlugerHans ,

Hallo Ninombre, vielen Dank für deine schnelle Antwort. Im Grunde ist es
genau das, was ich gesucht habe. Jetzt noch ein paar Fragen: Wie kann
ich den Text, den ich einfügen möchte, noch formatieren (z. B. fett
gedruckt, eingerückt, etc.)?

Kommentar von Ninombre ,

Ich bin ehrlich gesagt mit VBA in Word nicht so fit. Ich nehme an, dass Du dann die Worte einzeln formatieren musst.

case 1: Selection.Font.Bold = True
Selection.TypeText Text:="Äpfel "
Selection.Font.Bold = False
Selection.TypeText Text:="schmecken gut"

Vielleicht geht es aber auch noch eleganter zu lösen, dafür fehlt mir allerdings der Background mit Word.

Antwort
von iMPerFekTioN, 31

Warum benutzt du dazu nicht Excel?=)

Antwort
von KlugerHans, 23

Hallo Ninombre, vielen Dank für deine schnelle Antwort. Im Grunde ist es genau das, was ich gesucht habe. Jetzt noch ein paar Fragen: Wie kann ich den Text, den ich einfügen möchte, noch formatieren (z. B. fett gedruckt, eingerückt, etc.)?

Kommentar von BerchGerch ,

Hallo,

welche Formatierungen sollen das denn genau sein? Da hat nämlich jede einen anderen Befehl.

Du könntest diese dann in dem Code oben zwischen Next und Selection.TypeText Text:=DeinText einfügen, damit die Formatierungen eingestellt werden, bevor der Text eingefügt wird. Der Text wird dann mit den eingestellten Formatierungen eingefügt, z. B.

(...)

Next

With Selection
.Font.Bold = True 'Text fett formatieren
.ParagraphFormat.LeftIndent = CentimetersToPoints(0.5) 'Setzt den linken Einzug auf 0,5 cm
.TypeText Text:=DeinText
End With

End Sub

Gruß, BerchGerch

Kommentar von KlugerHans ,

Eigentlich möchte ich einige Teile im Satz fett gedruckt haben und andere eben nicht, einige Textstellen eben eingerückt, und andere nicht.

Könnte ich den Text, der Case-Abfrage übernommen wird denn auch vorher in Variablen schreiben und dort dann vorformatieren?

z.B. so:

Variable1 = "Apfel ist " & .Font.Bold = True & "super" & .Font.Bold = False & "lecker!"

...

Case 1: DeinText = DeinText & .ParagraphFormat.LeftIndent = CentimetersToPoints(0.5) & Variable1
Case 2: DeinText = DeinText & Variable2

Das Problem was ich denke ist, dass "Selection.TypeText Text:=DeinText" nur einen String ausgeben kann und evtl. Probleme mit den .Font.Bold, etc. bekommt oder irre ich da?

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten