我“昨天”在 Graphic Design SE 上问过这个问题,但有人提示我 SuperUser 对我想要完成的任务更有用。我的问题是关于基线的使用,但请记住,我有一份 MSOffice 2016 Home & Student 副本。
我正在尝试编写 VBA 来在整个文档中执行单独的字符调整:
Sub RandomizeBaseline()
Dim rng As Range
Dim char As Variant
Dim baseline As Double
Set rng = ActiveDocument.Range
For Each char In rng.Characters
baseline = Rnd() * 2 - 1
char.Font.Position = baseline
Next char
End Sub
这样做的目的是使文档看起来就像是用打字机打出来的一样。我已经有了等宽字体可以使用,但是 MSWord 解析它的方式使得随机基线值为 -1、0 或 1。将这些设置为十进制值以使基线偏移不那么明显,显然会截断为零并且根本不会移动任何内容。代码确实解析了文档上的每个字符,单击“撤消”时可以通过编辑历史记录看到,但没有明显的区别。我应该如何为我计划的超特定项目解决这个问题?
答案1
回答了我自己的问题 - 想象一下。我没有考虑到我可以用变量随机器合理地“间隔”基线。此代码如下:
Sub RandomizeBaseline()
Dim rng As Range
Dim char As Variant
Dim baseline As Double
Dim counter As Integer
' Set the range to the entire document
Set rng = ActiveDocument.Range
' Initialize the counter
counter = 0
' Loop through each character in the range
For Each char In rng.Characters
' Increment the counter
counter = counter + 1
' Check if the counter is a multiple of 10
If counter Mod 10 = 0 Then
' Generate a random baseline value between -1 and 1
baseline = Rnd() * 2 - 1
' Apply the baseline position to the character
char.Font.Position = baseline
End If
Next char
End Sub