Hallo Experten,
für eine Quelltextdokumentation muss ich MS Word (>= 2002) verwenden.
Nach Fertigstellung des Dokuments würde ich gerne eine Funktion (oder Makro oder was auch immer) nutzen, die eine TXT-Datei mit allen Schlüsselwörtern auslesen kann, dann im Word Dokument nach diesen Wörtern sucht und sie „Fett“ setzt.
mit kleinen Umwegen klappt es z.B. mit Context http://www.context.cx/.
Den Quellcode in Context einfügen, Syntaxhighlighting anpassen und als RTF-File Exportieren. Aus dem RTF-Dokument den Quelltext wieder in’s Word-Doc kopieren.
also, ein makro zu schreiben, dass alle worte eines dokuments einliest und diese dann in einem anderen dokument sucht und fett markiert, ist nicht wirklich schwierig. nur ist word dafür nicht wirktlich geeignet, da es auch viel zu langsam für so eine aktion ist. sinnvoller wäre es, einen „richtigen“ sourcecode-editor zu nehmen. die guten sind alle konfigurierbar, d.h. man kann die dateien für das syntax-highlighting austauschen bzw. erweitern.
Die einzelnen Worte in der Textdatei müssen mit Zeilenumbruch getrennt sein. Wenn Du Komma haben willst, dann musst Du das Line Input durch Input ersetzen.
Sub ReplaceFormat()
Dim vFileName, vSearchString As Variant
' user dialog get dictionary file
Dim oFileDialog As FileDialog
Set oFileDialog = Application.FileDialog(FileDialogType:=msoFileDialogFilePicker)
With oFileDialog
.AllowMultiSelect = False
.Title = "Wörterbuch öffnen"
.Filters.Add "Textdatei", "\*.txt", 1
End With
If oFileDialog.Show = -1 Then
vFileName = oFileDialog.SelectedItems(1)
Else
Set oFileDialog = Nothing
Exit Sub
End If
Set oFileDialog = Nothing
' cursor to top of document
Selection.HomeKey Unit:=wdStory
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
' replacement format
.Replacement.Font.Bold = True
' read words (phrases) and replace format
Open vFileName For Input Shared As #1
Do Until EOF(1)
Line Input #1, vSearchString
If Not IsEmpty(vSearchString) Then
.Text = vSearchString
.Replacement.Text = vSearchString
.Execute Replace:=wdReplaceAll
End If
Loop
End With
Close #1
End Sub ' ReplaceFormat()
für eine Quelltextdokumentation muss ich MS Word (>= 2002)
verwenden.
Warum musst Du? Naja, für zukünftige ähnliche Projekte solltest Du Dir dringend mal Doxygen in Zusammenhang mit LaTeX anschauen. Wirklich eine feine Sache!