我正在尝试阅读powerpoint幻灯片。但是当我的程序遇到类似文本时 “ Vo =ΣCF/(1 + t)”, shape.TextFrame.TextRange.Paragraphs(paraindex,1).Text 属性无法正常读取(特别是Σ符号和下标0(零)与V)。所以最终结果是乱码。
[编辑]:我发现ppt的创建者使用powerpoint的 Insert-> Equation 来编写“ΣCF”。所以它成为一个特殊的文本。
[注意]:在不使用Insert-> Equation工具,[按Alt + 228和下标选项]的情况下编写上面的文本/等式,我的代码会产生预期的结果。
Plz建议是否有办法处理使用Insert-> Equation工具编写的文本/等式。
谢谢。
答案 0 :(得分:0)
如果您的SWF中出现乱码,可能是因为Flash不支持Unicode,或者因为错误的字符被传递到SWF中。例如,这将使您了解所选方程式中的内容。请注意,如果您使用Asc()而不是AscW(),则会得到不正确的结果。
Sub WhatsInTheEquation()
Dim oSh As Shape
Dim oRng As TextRange2
Dim sTemp As String
Dim x As Long
Set oSh = ActiveWindow.Selection.ShapeRange(1)
For Each oRng In oSh.TextFrame2.TextRange.Runs
Debug.Print oRng.Text
Debug.Print oRng.Font.Name
Debug.Print "Size: " & oRng.Font.Size
sTemp = ""
For x = 1 To Len(oRng.Text)
sTemp = sTemp & " " & AscW(Mid$(oRng.Text, x, 1))
Next
Debug.Print sTemp
Next
End Sub
答案 1 :(得分:0)
这不是答案,但评论太短,不允许进行代码格式化 无论如何,这不是很正确,但可能会让你指出正确的方向。
Dim oSh As Shape
Dim x As Long
Dim y As Long
Dim lMathStart As Long
Dim lMathEnd As Long
Dim oTempShape As Shape
Set oSh = ActiveWindow.Selection.ShapeRange(1)
With oSh.TextFrame2.TextRange
For x = 1 To .MathZones.Count
With .MathZones(x)
lMathEnd = .Characters.Count
lMathStart = InStr(oSh.TextFrame.TextRange.Text, .Characters)
Set oTempShape = oSh.Duplicate(1)
With oTempShape.TextFrame.TextRange
'.Characters(lMathStart, lMathEnd).Delete
.Characters(1, lMathStart).Delete
.Characters(lMathEnd).Delete
End With
End With
Next
End With
逻辑实际上更像是:对于每个数学区,复制原始形状,然后对于复制形状中的每个数学区,删除数学区之前和之后的所有字符,只留下导出的等式。形状