我想使用 VBA 读取 PowerPoint 文件中的所有文本,并将它们写入外部文件(或其他方式)以在另一个软件中使用。
我写了这段代码:
Sub ReadFileText()
On Error Resume Next
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.TextFrame.HasText Then
MsgBox shp.TextFrame.TextRange.Text
' if text was read successfully, I can save it to a text or json file.
End If
Next shp
Next sld
End Sub
某些形状在文本中包含非 ASCII (UTF-8) 字符。 VBA 将它们返回为“?”性格!
如何将形状文本读取为 UTF-8 字符串?
PowerPoint/VBA 可以在内部使用 UTF-8,但正如 Tim 提到的,无法在消息框/调试窗口中显示 UTF-8 文本。
但是当我向幻灯片添加一些日语文本时,然后执行
Activewindow.Selection.ShapeRange(1).TextFrame.TextRange.Copy
然后我可以粘贴到记事本 UTF-8 文件中并获取正确的文本。
您得到的内容可能会有所不同,具体取决于您对复制的文本所做的操作。
不要使用
MsgBox
,而是使用 UserForm
创建一个简单的 Label
。 Label
允许配置文本属性,因此您可以选择适当的字体来正确显示字符。