通过 VBA 在 PowerPoint 中读取 UTF-8 文本,以便导出到另一个软件[重复]

问题描述 投票:0回答:2

我想使用 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 字符串?

Power Point Screenshot

vba string utf-8 powerpoint non-ascii-characters
2个回答
1
投票

PowerPoint/VBA 可以在内部使用 UTF-8,但正如 Tim 提到的,无法在消息框/调试窗口中显示 UTF-8 文本。

但是当我向幻灯片添加一些日语文本时,然后执行

Activewindow.Selection.ShapeRange(1).TextFrame.TextRange.Copy

然后我可以粘贴到记事本 UTF-8 文件中并获取正确的文本。

您得到的内容可能会有所不同,具体取决于您对复制的文本所做的操作。


0
投票

不要使用

MsgBox
,而是使用
UserForm
创建一个简单的
Label
Label
允许配置文本属性,因此您可以选择适当的字体来正确显示字符。

© www.soinside.com 2019 - 2024. All rights reserved.