用VBA宏代码,把幻灯片中所有文字,包括大纲视图中不显示的,快速提取到 Word

您所在的位置:网站首页 怎么把ppt大纲提取出来 用VBA宏代码,把幻灯片中所有文字,包括大纲视图中不显示的,快速提取到 Word

用VBA宏代码,把幻灯片中所有文字,包括大纲视图中不显示的,快速提取到 Word

2024-07-06 05:23| 来源: 网络整理| 查看: 265

如题,用VBA宏代码,把幻灯片中所有文字,包括大纲视图中不显示的,快速提取到 Word。

造成大纲视图下不显示文字的原因是,创建幻灯片时,选择“空白”创建一个空白幻灯片,再在文本框内添加文字,或直接把文字复制到幻灯片中,在这两种情况下大纲视图都是不显示文字的,也无法把文字复制到 Word 或通过“创建讲义”方式转换成Word,主要是因为文本框中没有占位符。

而选择非“空白”幻灯片(如“标题幻灯片”或“标题和内容”),它们都有占位符(“单击此处添加标题”或“单击此处添加文本”便是占位符),这样添加完文字,在大纲视图下都是显示的。

那么下面我们开始用宏代码,把幻灯片中所有文字,快速提取到 Word:

在 PowerPoint 窗口,按 Alt + F11 打开 VBA 编辑窗口,单击“插入”,在弹出的菜单中选择“模块”,新建一个模块,把以下代码:

Sub PPTToWord()

    On Error Resume Next

    Dim docObj As New Word.Document, shapeObj As Shape, slideObj As Slide

    For Each slideObj In ActivePresentation.Slides

        For Each shapeObj In slideObj.Shapes

            docObj.Range().Text = docObj.Range() + shapeObj.TextFrame.TextRange.Text

        Next shapeObj

    Next slideObj

    docObj.Application.Visible = True

End Sub

复制到模块窗口,单击“工具”,然后选择“引用”,打开“引用”窗口,往下拖右边的滚动条一直找到 Microsoft Word Object Liblary(Word 对象类库),勾选它,单击“确定”,单击“运行”图标,则开始把PPT转Word,一会后转换完成,并自动用 Word 打开。这样,在 PowerPoint 的大纲视图中没有显示的内容也提取到了 Word。操作过程步骤,如图所示:

快速把幻灯片所有文字提取到 Word

注意:

文字提取完,有可能顺序会出错,手动编辑下就好。

VBA 代码说明:

A、On Error Resume Next 表示代码执行过程中发生错误后继续往下执行。

B、Dim docObj As New Word.Document 把 docObj 定义为 Word 的 Document(文档)对象,shapeObj As Shape 把 shapeObj 定义为Shape(形状)对象,slideObj As Slide 把 slideObj 定义为 Slide(幻灯片)对象。

C、ActivePresentation 表示活动(当前)窗口中的演示文稿,ActivePresentation.Slides 表示演示文稿中的所有幻灯片;slideObj.Shapes 表示形状对象 slideObj 中的所有形状,这里指所有幻灯片中的文本框。

D、Word 的 Range 对象用于表示文档中的一片连续区域,它有 Start 和 End 两个参数,Start 用于指定区域的开始字符,End 用于指定区域的结束字符,例如  Range(Start:=0, End:=5) 表示当前文档中从第 0 个到第 5 个字符;Range() 省略了参数,表示当前文档中所有字符,省略参数时,括号也可以省略,Range() 可以写为 Range;Range().Text(或 Range.Text)表示一片连续区域中的文字。

E、PowerPoint 中的 TextFrame 对象表示 Shape 对象中的文本框架;TextRange 表示文本框中的文本,用于操作文本的属性与方法。

F、For Each In ... Next 是循环语句,For Each slideObj In ActivePresentation.Slides ... Next 用于遍历当前窗口的演示文稿中

的每个幻灯片,第一次执行时,slideObj 表示第一个幻灯片;第二次执行时,slideObj 表示第二个幻灯片,其它的以此类推。

H、For Each shapeObj In slideObj.Shapes ... Next 用于遍历每个幻灯片中的所有文本框。

I、docObj.Range().Text = docObj.Range() + shapeObj.TextFrame.TextRange.Text 用于把遍历过的文本累加起来,docObj.Range() 表示已遍历过文本框中的文本,shapeObj.TextFrame.TextRange.Text 表示当前遍历文本框中的文本。

J、docObj.Application.Visible = True 用于把 Word 文档显示出来,Visible 是显示属性,设置为 True,表示显示,设置为 False,表示隐藏。

K、代码的意思是,先用外层循环遍历所有幻灯片,再用内层循环遍历每个幻灯片中的所有文本框,遍历完一个幻灯片后继续遍历下一个幻灯片,一直遍历完所有幻灯片。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3