如何通过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
相关产品推荐
相关产品推荐

