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
3 Antworten
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
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.
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.)?
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?
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
Warum benutzt du dazu nicht Excel?=)
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.)?