对于某些自动化测试,我需要创建一个包含字体(用于几种不同字体)的所有字符的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. Ç - 原始打印字符串中的所有非打印字符的printf
- 3. 打印具体的字符
- 4. VBA MS Word字体颜色
- 5. 用C#Windows窗体在MS Word中打开MS Word文档
- 6. MS-Word VBA:如何将非打印字符作为标签中的标题?
- 7. 水印在MS Word
- 8. 所有非打印字符是否都控制字符?
- 9. 打印两个索引之间的所有字母字符
- 10. 如何在Python中匹配字符串后打印所有字符串
- 11. 打印字符
- 12. 打印Unicode字体
- 13. 带有字符缩进的VB.NET MS-WORD数字列表
- 14. MS Word识别标题/字体等?
- 15. 打印所有可能的字符串,不包含重复字符中相邻的相等字符字符串
- 16. 如何在javascript中打印字符串(数字)打印
- 17. 字符串在C++中不打印没有新行字符
- 18. lldb将不会打印终端中的所有字符
- 19. 打印数组中字符串对的所有可能组合
- 20. 打印字符串的所有变种最有效的方法?
- 21. 晶体报告9打印字符串
- 22. 将MS-Access string> 255个字符传递到MS-Word字段
- 23. 与所有字符相同的字体
- 24. Java打印API。 MS Word文件
- 25. 使用JNA打印MS Word文档
- 26. 打印字典的所有元素? Python
- 27. 程序不打印所需字符
- 28. 在MS-Word Document中填充变量并在VB中打印
- 29. 打印Unicode字符
- 30. 打印ASCII字符
请编辑您的问题并用字形替换字符。字体不包含字符,但包含字形。 – bogdan 2009-12-23 17:45:05