2010-02-26 126 views
1

我有一個Word 2007文件,我想將Courier New字體的所有用法更改爲 Lucida控制檯字體。我需要一個腳本來查找以該字體格式化的所有單詞,並將其更改爲新字體。在Word文檔中更改字體的腳本

我該怎麼做?

+0

只是想跟進,看看下面的回答你的問題。 – 2011-02-18 20:02:06

回答

1

也許你可以使用OpenXML SDK 2.0?你應該能夠改變樣式(我相信這是包含字體信息的東西)。

2

在Word中,你可以自己記錄一個宏。然後你打開VBA編輯器,可以選擇刪除一些無用的東西(通常在文件中有太多的選擇或移動),並且你有腳本。

編輯:移動評論的內容在這裏,回答作者的評論。

在查找和替換對話框中錄製宏時,單擊'全部替換'。然後停止錄製。生成的宏如下所示:

Selection.Find.ClearFormatting 
Selection.Find.Replacement.ClearFormatting 
With Selection.Find 
    .Text = "tarte au pomme" 
    .Replacement.Text = "t aux pruneaux" 
    .Wrap = wdFindContinue 
    .MatchCase = False 
    ' removed some stuff 
End With 
Selection.Find.Execute Replace:=wdReplaceAll 

由此,您可以創建VBScript宏。您需要在對象瀏覽器中獲取wdReplaceAll和wdFindContinue的值。

+0

好,但宏應該爲每個發現的快遞單詞和宏記錄器做到這一點,我必須繼續每一個字,並運行宏!可能是一個迭代過程... – xdevel2000 2010-02-26 14:32:59

+0

設置'.Text =「」'和'.Replacement.Text =「」'。那麼這將超越所有其他選擇! – 2010-08-15 18:53:27

1

這會爲你做它:

Sub ChangeFonts() 
Dim doc As Document 
Set doc = ActiveDocument 
    For i = 1 To doc.Range.Characters.Count 
     If doc.Range.Characters(i).Font.Name = "Courier New" Then 
      doc.Range.Characters(i).Font.Name = "Lucida Console" 
     End If 
    Next 
End Sub 
+0

+1不錯。 vba是活着的,並且很好 – 2010-07-22 17:53:20

+0

爲什麼手動的時候你可以簡單地全部替換? – 2010-08-15 18:54:10

+0

因爲遞歸比'Selection.Find'更快,並且在除了主體(頭部,頁腳等)之外的'Story'中起作用。 – 2010-08-15 22:02:36