即使使用它也需要您在 Word 中启用“开发人员”选项卡并知道如何安装 VBA 宏。此外,由于宏使用 SendKeys,因此您不能像往常一样只从 VBA 编辑器运行宏。你要做的是
在 Word 文档中插入一个新公式
选择其中的文字
单击Word中的开发人员选项卡
单击宏按钮
在列表中选择typeEquation并单击Run
编码:
Sub typeEquation()
Dim c As String
Dim i As Long
Dim m As OMath
Dim s As String
Dim t As String
Dim u As String
s = "\matrix(\vphantom(x/x)@y_t =) \matrix( \underbar ( a_0\ldiv\begin 1-b_1 \end + \sum_(i=0)^\infty \naryand \begin b_1^i \epsilon_(t-i) \end ) @ 1-b_2 L ) "
Set m = Selection.OMaths(1)
u = ""
For i = 1 To Len(s)
c = Mid(s, i, 1)
Select Case c
Case "+", "^", "%", "~", "(", ")", "[", "]" ' what about "{" and "}" ?
t = "{" & c & "}"
Case Else
t = c
End Select
u = u & t
VBA.SendKeys t
DoEvents
Next
Debug.Print u
End Sub
我能做到的最好的办法是对分数使用矩阵,分子下方有一个下划线来模拟分割线。困难在于让“=”与下划线对齐。
此外,方程式必须采用“显示”格式。下面的工作在这里,但 vphantom(x/x) 是任意的间距 - 也许你有一个更好的主意。
顺便说一句,我使用 \ldiv 来按照您显示的方式布置 a_0/(1-b_l),否则 Word 会使用水平分隔条来布置它。
我有一小段代码可以帮助从上述类型的线性格式开始插入这种东西。这不是特别好,因为方程编辑器 UI 似乎是以一种失败的方式编写的,它阻止了将文本粘贴到然后构建它的尝试,而且 OMath 对象模型和 MML 都不容易使用。
即使使用它也需要您在 Word 中启用“开发人员”选项卡并知道如何安装 VBA 宏。此外,由于宏使用 SendKeys,因此您不能像往常一样只从 VBA 编辑器运行宏。你要做的是
编码:
最初我构建了我想要发送的字符串并在一个 SendKeys 语句中发送了整个字符串,但事实证明这是不可靠的 - 我认为可能存在时间问题,BuildUp 仍在工作并且无法正常运行。没有把握。