You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过VBA读取PowerPoint中的UTF-8文本并导出至其他软件

解决VBA读取PowerPoint UTF-8字符显示为“?”的问题

问题核心

原代码读取PPT文本时,非ASCII的UTF-8字符被识别为“?”,本质是VBA默认用ANSI编码处理字符串,写入文件时会丢失Unicode字符信息。

解决方案

通过ADODB.Stream对象以UTF-8编码写入文件,同时保留PowerPoint文本的Unicode属性,避免字符损坏。

修改后的完整代码

Sub ReadAndSavePPTTextUTF8()
    Dim sld As Slide
    Dim shp As Shape
    Dim outputText As String
    Dim stream As Object
    
    outputText = ""
    
    ' 遍历所有幻灯片及形状,收集文本
    For Each sld In ActivePresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasTextFrame And shp.TextFrame.HasText Then
                outputText = outputText & shp.TextFrame.TextRange.Text & vbCrLf
            End If
        Next shp
    Next sld
    
    ' 用ADODB.Stream写入UTF-8格式文件
    Set stream = CreateObject("ADODB.Stream")
    With stream
        .Charset = "UTF-8"
        .Open
        .WriteText outputText
        ' 替换为你的目标保存路径
        .SaveToFile "C:\YourPath\PPT_Content_UTF8.txt", 2 ' 2表示覆盖已有文件
        .Close
    End With
    
    Set stream = Nothing
    MsgBox "UTF-8格式文本已保存完成!"
End Sub

关键说明

  • PowerPoint的TextRange.Text本身是Unicode格式,不会丢失字符,问题出在默认的文件写入方式。
  • ADODB.Stream通过指定Charset = "UTF-8",确保写入时保留完整的UTF-8字符。
  • 若需保存为JSON,只需将outputText整理为合法JSON结构,再用相同的Stream方法写入即可。

内容的提问来源于stack exchange,提问作者Abbas Hosain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:08:13