Ich habe ein Excel-Arbeitsblatt und möchte dort ein Makro starten, das ein Word-Dokument erstellt und (unter anderem) aus den Daten des Excel-Arbeitsblattes automatisch einen Text generiert. Dazu habe ich die relevanten Daten in Variablen geschrieben, ein Word-Dokument erstellen lassen und kann den Inhalt der Variablen auch dort einfügen. So weit so gut.
Jetzt will ich aber mit dem eingefügten Text einer bestimmten Variable in Word noch weiterarbeiten. Der String ist eine Aufzählung von Begriffen, die mal durch Kommata, mal durch Semikolons getrennt sind. Die sollen in eine Tabelle mit einer Spalte und jeder neue Begriff in eine eigene Zeile. Die Tabelle soll zusätzlich rahmenlos sein und das ganze soll als Aufzählung dargestellt werden.
Da ich mich mit VBA bei Word überhaupt nicht auskenne, habe ich hier den Makro-Rekorder zur Hilfe genommen: den Text aus der Variablen markiert, Semikolon durch Komma ersetzen damit es einheitlich ist, dann Komma+Leerzeichen durch einen neuen Absatz ersetzen und dann Text in Tabelle umwandeln. Die Tabelle habe ich dann noch rahmenlos gemacht und als letztes den Aufzählungsbutton geklickt.
Hier ist der Quelltext, den der Makrorekorder ausspuckt:
Sub ND()
'
' ND Makro
'
'
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ";"
.Replacement.Text = ","
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = ", "
.Replacement.Text = "^p"
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.ConvertToTable Separator:=wdSeparateByParagraphs, NumColumns:=1, _
NumRows:=7, AutoFitBehavior:=wdAutoFitFixed
With Selection.Tables(1)
.Style = "Tabellenraster"
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
End With
Selection.Borders(wdBorderTop).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderLeft).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderBottom).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderRight).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
Selection.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
End Sub
Woran es bei mir jetzt scheitert, ist dass der Makrorekorder das natürlich nur mit dem Text macht, den ich vorher markiert habe. Ich würde den Codeblock aber gerne in mein eigenes Makro einfügen, wo direkt mit dem Inhalt der Variablen gearbeitet wird, ohne dass ich händisch nochmal den Text markieren und das Makro starten muss.
Kann mir jemand auf die Sprünge helfen?
|