gpt4 book ai didi

vba - 使用 oMath.BuildUp 方法的 Excel/Word 方程?

转载 作者:行者123 更新时间:2023-12-02 23:15:51 26 4
gpt4 key购买 nike

我正在尝试使用 VBA 在 Microsoft Word 2010 中自动生成方程式并将其插入 Excel 中,因为它不支持 oMath 对象。问题出在 oMath.BuildUp 方法中。它不会像手动输入时那样解释\sqrt、\times、\delta 等内容。

例如,在方程中输入代码 Celsius =\sqrt(x+y) + sin(5/9\times (Fahrenheit – 23 (\delta)^2)) 将给出以下结果 http://i43.tinypic.com/10xc7zp.jpg这很好。

但是当使用宏 VBA 或录制宏时,此方法无法正常工作,并且给出如下结果: http://i42.tinypic.com/29c5geg.png 。像\sqrt、\times、\delta 这样的东西会被忽略。为什么?这是我用来生成第二张图片的宏。

    Sub genEQ()
Dim objRange As Range
Dim objEq As OMath
Set objRange = Selection.Range
objRange.Text = "Celsius = \sqrt(x+y) + sin(5/9 \times (Fahrenheit – 23 (\delta)^2))"
Set objRange = Selection.OMaths.Add(objRange)
Set objEq = objRange.OMaths(1)
objEq.BuildUp
End Sub

最佳答案

据我所知,这种方式行不通。您可以进行自己的数学自动更正替换,例如使用基于此的东西:

Function mathSubstitute(s As String) As String
Const bslash As String = "\"
Dim a() As String
Dim sout As String
Dim i As Integer
Dim j As Integer
Dim sac As String
sout = ""
If s <> "" Then
a = Split(s, bslash)
sout = a(LBound(a))
For i = LBound(a) + 1 To UBound(a)
Debug.Print a(i)
For j = 1 To Len(a(i))
On Error Resume Next
sac = Application.OMathAutoCorrect.Entries(bslash & Left(a(i), j)).Value
If Err.Number = 0 Then
sout = sout & sac & Mid(a(i), j + 1)
Exit For
Else
sac = ""
Err.Clear
End If
Next
If sac = "" Then sout = sout & bslash & a(i)
Debug.Print sout
Next
End If
On Error GoTo 0
mathSubstitute = sout
End Function

并将代码更改为

objRange.Text = mathSubstitute("Celsius = \sqrt(x+y) + sin(5/9 \times (Fahrenheit – 23 (\delta)^2))")

AFAICS 使用“\”来转义 [ 等特殊字符仍然可以正常工作。

关于vba - 使用 oMath.BuildUp 方法的 Excel/Word 方程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20068212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com