Hey, ich habe mal vor einiger Zeit ein Tool gebaut, womit ich einen kleinen Text Editor in Excel habe. Der eingegebene Text wurde dann anhand von Tags formatiert, ähnlich den HTML Tags. Also um eine Schrift fett zu machen, konnte man den Text auswählen, dann auf einen Button klicken und davor und danach wurde ein <b> bzw. </b> gesetzt. Also z.B.: "Hier ist mein <b>fettes</b> Wort".
Die Tags wurde dann in die Word Datei mit geschrieben und anschließend in Word formatiert. So kann man in Excel Texte schreiben, formatieren mittels Tag und anschließend in Word automatisch formatieren lassen.
Es gehen auch Aufzählungen, einfach mittels <ul> und </ul>
Du könntest also z.B. in deiner Excel Arbeitsmappe die Aufzählungen erstellen und davor ein <ul> und dahinter ein </ul> setzen. (Für Aufzählungen oder ein <ol> und </ol> für Nummerierungen) Dann das Makro entsprechend verwenden und anpassen und es sollte gehen. Hier das Makro. Habe ich selbst erstellt:
Sub TagConverter(wordApp As Word.Application)
' This sub converts certain Tags to Word formatting and inserts images
' Tags might be: <b>text</b> to bold text
' Images have the form <Bild [path]> with [path] being the path to the image, e.g. c:\example.jpg
' Tags are aligned to some HTML tags, but also individual ones are used
' Replacement.Style Enumeration numbers: https://learn.microsoft.com/de-de/office/vba/api/word.wdbuiltinstyle
Application.ScreenUpdating = False
With wordApp.ActiveDocument.Range.Find
' Introduction
.ClearFormatting
.Format = True
.Forward = True
.MatchWildcards = True
.Wrap = wdFindContinue
.Replacement.text = "\2"
' Headline 1 <h1>
.Replacement.ClearFormatting
.text = "\<(h1\>)(*)\</\1"
.Replacement.Font.size = 24
.Replacement.Style = wdStyleHeading1
.Execute Replace:=wdReplaceAll
' Headline 2 <h2>
.Replacement.ClearFormatting
.text = "\<(h2\>)(*)\</\1"
.Replacement.Font.size = 18
.Replacement.Style = wdStyleHeading2
.Execute Replace:=wdReplaceAll
' Headline 3 <h3>
.Replacement.ClearFormatting
.text = "\<(h3\>)(*)\</\1"
.Replacement.Font.size = 14
.Replacement.Style = wdStyleHeading3
.Execute Replace:=wdReplaceAll
' Text Underline <u>
.Replacement.ClearFormatting
.text = "\<(u\>)(*)\</\1"
.Replacement.Font.Underline = True
.Execute Replace:=wdReplaceAll
' Bold text <b>
.Replacement.ClearFormatting
.text = "\<(b\>)(*)\</\1"
.Replacement.Font.Bold = True
.Execute Replace:=wdReplaceAll
' Italic <i>
.Replacement.ClearFormatting
.text = "\<(i\>)(*)\</\1"
.Replacement.Font.Italic = True
.Execute Replace:=wdReplaceAll
' unordered list (bullet list) <ul>
.Replacement.ClearFormatting
.text = "\<(ul\>)(*)\</\1"
.Replacement.Style = wdStyleListBullet
.Execute Replace:=wdReplaceAll
' ordered list (numbered list) <ol>
.Replacement.ClearFormatting
.text = "\<(ol\>)(*)\</\1"
.Replacement.Style = wdStyleListNumber
.Execute Replace:=wdReplaceAll
' Keep text together in paragraph (between page change)
.Replacement.ClearFormatting
.text = "\<(ktt\>)(*)\</\1"
.Replacement.ParagraphFormat.KeepWithNext = True
.Replacement.ParagraphFormat.KeepTogether = True
.Execute Replace:=wdReplaceAll
' Carriage Return / Line Shift, next line <br>
.Replacement.ClearFormatting
.text = "<br>"
.Replacement.text = "^p"
.Execute Replace:=wdReplaceAll
End With
' Insert images at specific positions in Word
' Image is structured: <Bild [path]> So e.g. <Bild C:\Data\Example.jpg>
' So within Word, a search is made for "<Bild" and for ">" Everything in between is the path.
Dim strPath As String
With wordApp.ActiveDocument.Content.Find
.text = "\<Bild " & "(*)" & "\>"
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True
.Replacement.text = ""
.Execute ' Find first one
Do While .Found = True
strPath = Mid(.Parent.text, 7, Len(.Parent.text) - 7)
.Parent.Delete
wordApp.ActiveDocument.InlineShapes.AddPicture fileName:=strPath, LinkToFile:=False, SaveWithDocument:=True, Range:=.Parent
.Execute ' Find next ones
Loop
End With
Application.ScreenUpdating = True
End Sub