如何让 excel 2013 自动更正数学?例如将 \int 更改为 ∫。我知道如何对一个符号执行此操作,但有没有办法让 excel 识别所有数学自动更正?
答案1
Microsoft(以其无穷的智慧)Application.OMathAutoCorrect.UseOutsideOMath = True
在 Excel 选项 ► 校对 ► 自动更正选项 ► 数学自动更正或直接通过 Excel 的 VBA 都没有提供该选项。恕我直言,这可能是由于 Excel 在显示真正的 Unicode 字符和一些常规 ASCII 字符(如打钩(又名单引号或 ASCII 039)用于其他目的。如果某件事不能完全完成,并且无法通过几个可选语言包来完成,那么整个过程可能会被搁置,直到找到解决方案。当 Excel 在其数学编辑器中时,将与不同的界面进行交换,并且所有符号都可以正确显示。
我在 OneDrive 上准备了数学自动更正符号的完整列表这里供您查看:Excel_2013_OMath自动更正条目.xlsx。有一些非常明显的遗漏,例如\grave
和\bar
,Excel 可以自动更正或解释为其他目的,但大多数符号都很好。
这只是意味着我们必须绕过限制并接受任何缺点。虽然 Excel 的 VBA 对象使用OMathAutoCorrect
有些不完善,但 Word 中的对象却没有。如果我们从集合中取出所有条目OMathAutoCorrectEntries
并将它们转换为标准AutoCorrectEntries
集合的附加项,那么它们将在包括 Excel 在内的所有 Office 程序中可用。每个 Office 程序中的最终结果可能会有所不同。
关闭 Excel 和所有其他 Office 程序,然后打开 Word 到新的空白文档并点击Alt+F11
进入 VBE。使用下拉菜单插入 ► 模块(或Alt+I, M
)。将以下内容粘贴到新窗格中,标题类似于正常 - 新宏 (代码)或者正常 - 模块 1(代码)。
Sub Normalize_Math_AutoCorrect_Entries()
Dim acm As Long, ac As Long, yn As Long, cACEs As AutoCorrectEntries
Set cACEs = Application.AutoCorrect.Entries
With Application.OMathAutoCorrect
.UseOutsideOMath = False 'no longer necessary
For acm = 1 To .Entries.Count
yn = vbYes
For ac = 1 To cACEs.Count
If cACEs(ac).Name = .Entries(acm).Name Then
yn = MsgBox(cACEs(ac).Name & " is currently assigned to " & cACEs(ac).Value & _
Chr(46) & Chr(10) & Chr(10) & "Are you sure you want to replace it?", _
vbYesNo + vbQuestion, "Duplication")
If yn = vbYes Then cACEs(ac).Delete
Exit For
End If
Next ac
If yn = vbYes Then _
Application.AutoCorrect.Entries.Add Name:=.Entries(acm).Name, Value:=.Entries(acm).Value
Next acm
End With
Set cACEs = Nothing
End Sub
完成后,点击Alt+Q
返回空白文档。点击Alt+F8
打开宏对话框并运行宏。如果遇到重复条目,该过程将暂停,您将看到类似以下内容。
请注意,我选择了一个可以实际显示的符号。由于标准 VBA 消息框无法显示 Unicode,因此许多 Unicode 字符只能用 表示?
。这并不意味着符号会被错误添加。与 Excel 一样,这是一个显示限制。
接受或拒绝覆盖。标准AutoCorrectEntries
集合中尚未找到的任何内容都会被自动添加。
当这个过程完成后,所有的OMathAutoCorrect
条目都将规范化作为标准AutoCorrect
条目。如果您打开 Excel,它们应该立即可用。这是在键入空格之前和之后强制自动更正的\beta。
与此相关的是,我之前写了一篇文章,您可能对此感兴趣,该文章介绍了如何在 Office 程序中通过添加标准AutoCorrect
集合来使用风格化分数。以下是该文章的链接:
现在我必须开始编写一个反转例程,以便删除这些条目。由于两个集合之间存在一些重复,我不确定如何处理确认,因为默认集合中总共有 496 个条目OMathAutoCorrect
。