Тема: Автоматизація Microsoft Word з VBA
Якось мені одна знайома розказувала що вона робить на роботі, і я вжахнувся, половину її роботи повинні робити роботи. Наприклад треба знайти в документі всі слова Nestle, і замінити на Nestlé, при цьому жирним і курсивом. Nestlé також зробити жирним і курсивом. Слово Maggi і деякі інші - просто курсивом.
Я щось нагуглив і вийшло так:
Option Explicit
Sub FormatNestle()
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Nestle"
.Replacement.Text = "Nestl" + ChrW(&HE9)
.Replacement.Font.Bold = True
.Replacement.Font.Italic = True
.Forward = True
.Wrap = wdFindContinue
.MatchWholeWord = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Nestl" + ChrW(&HE9)
.Replacement.Text = "Nestl" + ChrW(&HE9)
.Replacement.Font.Bold = True
.Replacement.Font.Italic = True
.Forward = True
.Wrap = wdFindContinue
.MatchWholeWord = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "Maggi"
.Replacement.Text = "Maggi"
.Replacement.Font.Italic = True
.Forward = True
.Wrap = wdFindContinue
.MatchWholeWord = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
Воно більш-менші працює, але то страх і жах. Можна якось застосувати відокремленя методу хоча б? (для себе TODO: RTFM.)
Я подумав про регулярні вирази, знайшов таке:
Sub FormatNestleB()
Dim regEx As regExp
'Dim Match
'Dim Matches
Dim sel As Range
Dim rngRange As Range
Set regEx = New regExp
regEx.Pattern = "Nestl[e" + ChrW(&HE9) + "]|Maggi"
regEx.IgnoreCase = False
regEx.Global = True
Set Matches = regEx.Execute(ActiveDocument.Range.Text)
For Each Match In Matches
Set sel = ActiveDocument.Range(Match.FirstIndex, Match.FirstIndex + Len(Match.Value))
sel.Bold = True
sel.Italic = True
Next
End Sub
Але воно не працює.
Хто знає якусь нормальну книжку по VBA, або можливо інші способи автоматизації такого? Також корисно було б могти автоматизувати браузер, або робити http запити.
Комп’ютер корпоративний, там вінда, я з нею не дуже знайомий, тому не знаю чи ще щось там можна поставити.