你是不对的不是 equation.3 类型的公式
时间: 2024-04-01 16:32:03 浏览: 16
您是对的,我之前的回答有误。在PPT中,除了 Equation.3 类型的公式之外,还有一种类型的公式是使用 MathType 插件创建的。这种类型的公式在 VBA 中的类型为 msoOLEControlObject,而不是 msoEmbeddedOLEObject。
对于这种类型的公式,您可以使用以下代码获取其唯一标识:
```
Sub GetMathTypeFormulaID()
Dim shp As Shape
Dim formulaText As String
Dim formulaShapeID As Long
' 设置公式文本
formulaText = "a^2 + b^2 = c^2"
' 遍历每个形状,查找公式
For Each shp In ActivePresentation.Slides(1).Shapes
' 判断形状是否为 MathType 公式
If shp.Type = msoOLEControlObject And InStr(shp.OLEFormat.ProgID, "MathType") > 0 Then
' 判断公式内容是否匹配
If shp.OLEFormat.Object.Math.Application.OMath(1).OMathFunctions(1).Args(1).Value = formulaText Then
' 获取公式ID
formulaShapeID = shp.ID
Exit For
End If
End If
Next shp
' 输出公式ID
Debug.Print "The ID of the MathType formula is: " & formulaShapeID
End Sub
```
在这个示例中,我们首先设置了要查找的公式文本,然后遍历PPT中的每个形状,查找 MathType 公式。如果找到了与指定文本匹配的公式,就获取公式的Shape.ID属性值并输出。
需要注意的是,对于 MathType 公式,我们需要使用 OMath 对象来访问其内容。在上面的示例中,我们访问了 OMath(1).OMathFunctions(1).Args(1).Value 属性来获取公式的文本内容,您可以根据自己的需求修改这个属性。