對於某些自動化測試,我需要創建一個包含字體(用於幾種不同字體)的所有字符的Word Doc。有沒有簡單的方法來創建一個循環遍歷字體中所有可用字符的宏(並將它們插入到文檔中)?在MS Word中打印字體的所有字符
回答
Geez ......我很久以前做過類似的事情......是的,有可能這樣做。
一個良好的開端是MSDN
編輯補充:
我知道我曾經做過這樣的事情。通過我的一些舊電子郵件,我發現了一個我發送給我的一個包含這個的朋友的宏。這是它:
Sub GenerateFontCatalog()
'
' Macro created in 05/14/2008 by Paulo Santos
'
Dim i As Long
Dim j As Long
Dim fnt As String
Dim doc As Document
Dim fnts() As String
'*
'* Get all font names
'*
Word.StatusBar = "Reading Font Names..."
ReDim fnts(Word.FontNames.Count)
For i = 1 To Word.FontNames.Count
fnts(i) = Word.FontNames.Item(i)
DoEvents
Next
'*
'* Sort alphabetically
'*
Word.StatusBar = "Sorting Font Names..."
For i = 1 To UBound(fnts)
For j = i + 1 To UBound(fnts)
If (fnts(i) > fnts(j)) Then
fnt = fnts(i)
fnts(i) = fnts(j)
fnts(j) = fnt
End If
Next
DoEvents
Next
Word.StatusBar = "Generating Font Catalog..."
Set doc = Application.Documents.Add()
doc.Activate
'*
'* Page configuration
'*
With ActiveDocument.PageSetup
.Orientation = wdOrientPortrait
.TopMargin = CentimetersToPoints(2)
.BottomMargin = CentimetersToPoints(2)
.LeftMargin = CentimetersToPoints(2)
.RightMargin = CentimetersToPoints(2)
End With
For i = 1 To UBound(fnts)
'*
'* Write font name
'*
Selection.Font.Name = "Arial"
Selection.Font.Size = 10
If (i > 1) Then
Selection.TypeParagraph
Selection.ParagraphFormat.KeepTogether = False
Selection.ParagraphFormat.KeepWithNext = False
Selection.TypeParagraph
End If
Selection.TypeText fnts(i)
Selection.ParagraphFormat.KeepWithNext = True
Selection.TypeParagraph
'*
'* Write font sample
'*
Selection.Font.Name = fnts(i)
Selection.Font.Size = 16
Selection.TypeText "ABCDEFGHIJKLMNOPQRSTUVWXYZ" & Chr(11)
Selection.TypeText "abcdefghijklmnopqrstuvwxyz" & Chr(11)
Selection.TypeText ""
Selection.ParagraphFormat.KeepTogether = True
DoEvents
Next
'*
'* Adjust cursor position
'*
Selection.HomeKey Unit:=wdStory
Selection.InsertBreak Type:=wdSectionBreakNextPage
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveUp Unit:=wdLine, Count:=1
Word.StatusBar = "Generating Font Index..."
For i = 1 To UBound(fnts)
Selection.Font.Name = "Arial"
Selection.Font.Size = 10
Selection.TypeText fnts(i) & vbTab
Selection.Font.Name = fnts(i)
Selection.TypeText "ABC abc 123"
Selection.TypeParagraph
Next
'*
'* Split the document in two columns
'*
With Selection.Sections(1).PageSetup.TextColumns
.SetCount NumColumns:=2
.EvenlySpaced = True
.LineBetween = False
End With
Selection.HomeKey Unit:=wdStory, Extend:=True
Selection.ParagraphFormat.TabStops.Add Position:=Selection.Sections(1).PageSetup.TextColumns(1).Width, Alignment:=wdAlignTabRight, Leader:=wdTabLeaderSpaces
Selection.HomeKey Unit:=wdStory
Word.StatusBar = ""
End Sub
我並不需要一個字體列表,而是一個字體中所有字符的列表。 – leonm 2009-12-16 20:54:48
好宏(儘管它不完全是請求者在這個特定情況下需要的) - 感謝分享! – monojohnny 2009-12-30 09:33:48
是否有一個特定的原因,爲什麼它需要在Word中?這僅僅是想象一個字體的所有字符?如果是這樣,您可以在OS X中使用Font Book並轉到Print,選擇Report Type:Repetoire,然後保存爲PDF。
編輯:似乎我錯過了「自動化測試」。漠視。
看起來像一個很好的折衷辦法是創建一個HTML文件& #XXX;每個字符的條目,然後用MS Word打開。
爲什麼downvote?這聽起來像是完全可以接受的解決方案,尤其是因爲您無法訪問Word中的字符列表。 – leonm 2010-02-14 00:31:58
這將是不錯的主意,插入
敏捷的棕色狐狸跳過 懶狗
和遍歷需要使用宏來測試字體。
http://en.wikipedia.org/wiki/The_quick_brown_fox_jumps_over_the_lazy_dog可以查看更多詳情 – Thunder 2009-12-23 04:16:22
像MS Word這樣的程序將無法告訴你字體中可用的字符。據我的經驗告訴你,只有Window的「角色地圖」應用程序可以顯示你。字符映射可以在您的開始菜單中通過附件找到,或者通過開始,運行...,然後輸入「charmap」,但是沒有方便的方法從字符映射或MS Word收集這些字符。
嚴格地說,在Word中,我不知道它是否可行,但由於您可以在Word中執行腳本,我相信可以讀取字體文件並讀取它們的二進制數據以收集其中的可用字符。這是一種囉嗦的方式,也可能是獲得你想要的東西的唯一方法。
我還沒有找到合適的程序在線來爲我做這件事,對不起。
- 1. 刪除MS Word文檔中的所有數字字符
- 2. MS Word印地文字表
- 3. Ç - 原始打印字符串中的所有非打印字符的printf
- 4. 打印具體的字符
- 5. VBA MS Word字體顏色
- 6. 打印字符串中的所有字符用C
- 7. 如何打印字體的字符集?
- 8. 打印docx沒有MS Word自動化
- 9. 用C#Windows窗體在MS Word中打開MS Word文檔
- 10. MS-Word VBA:如何將非打印字符作爲標籤中的標題?
- 11. 打印列表作爲字符串不打印所有的值
- 12. 打印包含指定子字符串的所有字符串
- 13. 水印在MS Word
- 14. 在數組中打印字符串打印兩個字符?
- 15. 所有非打印字符是否都控制字符?
- 16. 在brainfuck中打印字符
- 17. 打印給定字符串中的非打印字符?
- 18. 如何在python中打印沒有ASCII字符的字符串?
- 19. 打印兩個索引之間的所有字母字符
- 20. 置換一個字符串打印所有可能的字
- 21. 打印字符
- 22. 如何在Python中匹配字符串後打印所有字符串
- 23. iText - 如何識別可打印字符串中所有字符的單個字體?
- 24. 打印字符
- 25. 帶有字符縮進的VB.NET MS-WORD數字列表
- 26. 打印Unicode字體
- 27. MS Word識別標題/字體等?
- 28. 如何在PHP中去除所有打印字符?
- 29. 打印所有可能的字符串,不包含重複字符中相鄰的相等字符字符串
- 30. 打印字符串中幾個特定字符後的所有內容
請編輯您的問題並用字形替換字符。字體不包含字符,但包含字形。 – bogdan 2009-12-23 17:45:05