ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Word > 运用VBA将Word文档内容发送至PowerPoint的一个实例

运用VBA将Word文档内容发送至PowerPoint的一个实例

作者:绿色风 分类: 时间:2022-08-17 浏览:142
楼主
0Mouse
Q:如何运用VBA将示例Word文档的内容发送至PowerPoint呢?
示例Word文档内容部分截图:

 
对应的预期幻灯片效果:

 
A:代码如下:
  1. Const ppLayoutText = 2    '声明“标题和内容”版式常量

  2. Sub 运用VBA将Word文档内容发送至PowerPoint()
  3.     Dim pptPre      As Object       '指代演示文稿的变量
  4.     Dim pptSld      As Object       '指代幻灯片的变量
  5.     Dim para        As Paragraph    '段落变量
  6.     Dim lnum        As Long         '大纲级别为1级的段落数计数变量
  7.     Dim pCount      As Byte         '标记幻灯片第2个占位符的段落数
  8.     Dim ArrLevel()  As Byte         '动态数组变量,记录第2个占位符各段落的缩进级别
  9.     Dim idx         As Byte         '循环变量
  10.     With CreateObject("PowerPoint.Application")     '引用PowerPoint应用程序
  11.         Set pptPre = .presentations.Add             '新建演示文稿并赋值给pptPre变量
  12.         For Each para In ActiveDocument.Paragraphs  '循环分析Word文档的每一个段落
  13.             With para                               '引用循环到的段落对象
  14.                 Select Case .OutlineLevel           '判断段落的大纲级别
  15.                 Case wdOutlineLevel1                '如果是1级
  16.                     lnum = lnum + 1                 '计数变量+1
  17.                     '新建“标题和内容”版式的幻灯片并赋值给pptSld变量
  18.                     Set pptSld = pptPre.slides.Add(lnum, ppLayoutText)
  19.                     '在新建幻灯片的标题占位符内放入当前段落除最后一个字符(段落标记)以外的内容
  20.                     pptSld.Shapes(1).TextFrame.TextRange.Text = Left(.Range.Text, Len(.Range.Text) - 1)
  21.                 Case wdOutlineLevel2, wdOutlineLevel3           '如果是2级或3级
  22.                     With pptSld.Shapes(2).TextFrame.TextRange   '引用第2个占位符
  23.                         pCount = .Paragraphs.Count              '标记占位符内的段落总数
  24.                         If pCount Then                          '如果段落数不为0,也即占位符内有内容
  25.                             ReDim ArrLevel(1 To pCount)         '重新声明数组,并指定其维度的大小
  26.                             '通过循环将占位符内各段落的缩进级别记录在数组变量中
  27.                             For idx = 1 To pCount
  28.                                 ArrLevel(idx) = .Paragraphs(idx).IndentLevel
  29.                             Next idx
  30.                         End If
  31.                         .Text = .Text & para.Range.Text         '将当前循环到的段落文本追加到占位符末尾
  32.                         '通过循环恢复追加文本前占位符中各段落的缩进级别
  33.                         For idx = 1 To pCount
  34.                             .Paragraphs(idx).IndentLevel = ArrLevel(idx)
  35.                         Next idx
  36.                         '设置追加段落(此时占位符内的最后一个段落)的缩进级别为当前循环到的段落的大纲级别-1
  37.                         .Paragraphs(idx).IndentLevel = para.OutlineLevel - 1
  38.                         pCount = 0    '重置标记段落数的变量
  39.                     End With
  40.                 End Select
  41.             End With
  42.         Next para
  43.         Erase ArrLevel          '清空数组变量
  44.         Set pptSld = Nothing    '清空对象变量pptSld
  45.         Set pptPre = Nothing    '清空对象变量pptPre
  46.         .Visible = True         '令PowerPoint程序窗口可见
  47.     End With
  48.     MsgBox "完毕!", vbInformation, "xqoa"    '弹出消息框提示处理完毕
  49. End Sub

示例附件:
运用VBA将Word文档内容发送至PowerPoint的一个实例.rar

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap