我有一些包含 Microsoft Equation 3.0 方程的MS-Word 2013文档。不幸的是,方程式会不时地改变大小,无论是偶然还是由于Word中的错误。
为了解决这个问题,我编写了一个VBA宏来将文档中所有方程的大小修复为原始大小,如下所示:
Sub FixEquationSize()
Dim shp As InlineShape
For Each shp In ActiveDocument.InlineShapes
shp.ScaleHeight = 100 'The value of ScaleHeight is a percentage
shp.ScaleWidth = 100
shp.LockAspectRatio = msoFalse
shp.Reset
Next
End Sub
...但是这会修复所有InlineShape
个对象的高度和宽度,而不仅仅是方程式的高度和宽度。
previous question and answer通过迭代ActiveDocument.OMaths
在Word中找到方程,但该解决方案找到了由Insert|Symbols|Equation
创建的方程式,而不是由Insert|Text|Object|Microsoft Equation 3.0
插入的方程式(有趣的是它们是不同的!)。
如果我必须遍历InlineShapes
,我怎样才能区分出方程式的InlineShape
个对象和非方程式的对象?
答案 0 :(得分:2)
公式3.0方程是嵌入的OLE对象(不同于使用不同机制的较新类型的方程。所以类似
If shp.Type = wdInlineShapeEmbeddedOLEObject Then
If shp.OLEFormat.ClassType = "Equation.3" Then
' it's an equation object
End If
End If
这假设您尚未将形状转换为其他形状,例如复制/粘贴为某种图形。