VBA-PowerPoint宏-将文本框内容添加到大纲视图

jpsnow72

我有从软件自动生成的PowerPoint。该软件将内容(文本)放入文本框而不是占位符。我需要创建并运行一个宏,该宏会将所有文本添加到“大纲视图”中(出于可访问性目的)。

我有一个脚本,它将文本框内容移动到占位符,默认情况下,该占位符会显示在大纲视图中。唯一的问题是它没有保留样式(带有子项目符号的项目符号列表不起作用)。当我将一张幻灯片中的多个文本框组合到一个占位符中时,样式会变得特别棘手。

有什么想法吗?

这是我当前的脚本(重要的东西):

For Each sld In ActivePresentation.Slides
 With ActivePresentation
 sld.CustomLayout = ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2)

 Set hypCollection = New hyperColl 'Set the collection of arrays - 1 for each shape

 Set shp = sld.Shapes(1)


For j = sld.Shapes.Count To 1 Step -1
     Set shp = sld.Shapes(j)
     bolCopy = False
     If j = 3 Then
         sld.Shapes.Placeholders.Item(1).TextFrame.TextRange = shp.TextFrame.TextRange.Characters
         sld.Shapes.Placeholders.Item(1).Visible = msoTrue
         shp.Delete

    ElseIf j > 3 And shp.Type = msoTextBox Then
      sld.Shapes.Placeholders.Item(2).TextFrame.TextRange.InsertBefore (shp.TextFrame.TextRange.TrimText) '.ParagraphFormat.Bullet.Type = shp.TextFrame.TextRange.ParagraphFormat.Bullet.Type
         If hypCollection.Exists(shp.Name) Then
              hypArray = hypCollection.GetArray(shp.Name)
              For i = LBound(hypArray) To UBound(hypArray)
                  Set hypToAdd = hypArray(i)
                 With sld.Shapes.Placeholders.Item(2).TextFrame.TextRange.Characters(hypToAdd.getchrStart, Len(hypToAdd.getHypText)).ActionSettings.Item(1)
                       .Action = ppActionHyperlink
                       .Hyperlink.Address = hypToAdd.getHypAddr
                 End With
              Next i
         End If

      shp.Delete
    End If
 Next j
 End With
 Next sld

以下是一些示例:第一张图片就是我的开始: 在此处输入图片说明

这是运行脚本后的样子: 在此处输入图片说明

这就是我想要的样子(只需维护格式): 在此处输入图片说明

jpsnow72

解决方法是将Special Paste粘贴到新的占位符中,而不替换所有内容。因为我以相反的顺序遍历文本框,所以我只复制了每个TextBox,然后将Special Paste粘贴到位置0的占位符中(将所有当前内容保留在那里)。

我将代码转换为C#,这是完整的解决方案:

private void FixPPTDocument()
    {
        PPT.Application pptApp = new PPT.Application();
        PPT.Shape currShp;
        PPT.Shape shp2;



        if (File.Exists((string)fileLocation))
        {
            DateTime today = DateTime.Now;
            PPT.Presentation pptDoc = pptApp.Presentations.Open(fileLocation, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoFalse);

            foreach (PPT.Slide slide in pptDoc.Slides)
            {
                slide.CustomLayout = pptDoc.Designs[1].SlideMaster.CustomLayouts[2];
                for (int jCurr = slide.Shapes.Count; jCurr >= 1; jCurr--)
                {
                    currShp = slide.Shapes[jCurr];
                    if (jCurr == 3)
                    {
                        slide.Shapes.Placeholders[1].TextFrame.TextRange.Text = currShp.TextFrame.TextRange.Text;
                        slide.Shapes.Placeholders[1].Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
                        currShp.Delete();
                    }
                    else if (jCurr > 3 && currShp.Type == Microsoft.Office.Core.MsoShapeType.msoTextBox)
                    {
                        currShp.TextFrame.TextRange.Copy();
                        slide.Shapes.Placeholders[2].TextFrame.TextRange.Characters(0, 0).PasteSpecial();
                        currShp.Delete();
                    }
                }
            }
            pptDoc.SaveAs(fileNewLocation);
            pptDoc.Close();
            MessageBox.Show("File created!");
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

VBA-PowerPoint宏-将文本框内容添加到大纲视图

来自分类Dev

如何使用VBA将文本框添加到PowerPoint演示文稿

来自分类Dev

无法使用Excel VBA将Powerpoint文本框内容提取到Excel中

来自分类Dev

使用VBA宏在PowerPoint中删除图片

来自分类Dev

VBA Powerpoint宏在点处粘贴形状

来自分类Dev

从VBA定义的宏创建PowerPoint加载项

来自分类Dev

VBA Powerpoint宏在点处粘贴形状

来自分类Dev

PowerPoint文本到语音宏

来自分类Dev

PowerPoint VBA宏可跳过幻灯片上的动画

来自分类Dev

VBA宏可从PowerPoint中的URL插入图像

来自分类Dev

直接在PowerPoint上运行时Excel-VBA调用Powerpoint宏失败

来自分类Dev

VBA Powerpoint - 文本框 - 将 WordWrap 转换为回车

来自分类Dev

VBA文本框更改触发宏

来自分类Dev

修改Microsoft Word VBA宏以从外部文件调用其他文本并添加到脚注

来自分类Dev

在VBA powerpoint中如何将新幻灯片添加到空白演示文稿

来自分类Dev

在Powerpoint 2016中将文本框添加到所有幻灯片

来自分类Dev

VBA:在运行时将文本框添加到用户窗体

来自分类Dev

Excel VBA:基于“组合框选择”然后“求和”将值添加到文本框

来自分类Dev

.find VBA宏在一列中查找文本,并将条件文本添加到相邻列

来自分类Dev

从activeX文本框中获取文本(VBA,PowerPoint)

来自分类Dev

VBA Powerpoint,在整个演示文稿中在后台运行定时任务/宏

来自分类Dev

PowerPoint VBA-在编辑模式下更改幻灯片时运行宏

来自分类Dev

Powerpoint VBA宏可将所有选定对象的大小调整为最大对象

来自分类Dev

PPT的宏-将文本框内容移动到占位符-维护链接和列表

来自分类Dev

使用VBA自动将VBProject引用添加到PowerPoint库,具体取决于运行的Office版本PC

来自分类Dev

VBA宏,以验证是否已创建新文件或将新文件添加到文件夹

来自分类Dev

VBA宏更改宏

来自分类Dev

VBA 文本搜索范围然后运行宏

来自分类Dev

VBA或Excel宏添加1年

Related 相关文章

  1. 1

    VBA-PowerPoint宏-将文本框内容添加到大纲视图

  2. 2

    如何使用VBA将文本框添加到PowerPoint演示文稿

  3. 3

    无法使用Excel VBA将Powerpoint文本框内容提取到Excel中

  4. 4

    使用VBA宏在PowerPoint中删除图片

  5. 5

    VBA Powerpoint宏在点处粘贴形状

  6. 6

    从VBA定义的宏创建PowerPoint加载项

  7. 7

    VBA Powerpoint宏在点处粘贴形状

  8. 8

    PowerPoint文本到语音宏

  9. 9

    PowerPoint VBA宏可跳过幻灯片上的动画

  10. 10

    VBA宏可从PowerPoint中的URL插入图像

  11. 11

    直接在PowerPoint上运行时Excel-VBA调用Powerpoint宏失败

  12. 12

    VBA Powerpoint - 文本框 - 将 WordWrap 转换为回车

  13. 13

    VBA文本框更改触发宏

  14. 14

    修改Microsoft Word VBA宏以从外部文件调用其他文本并添加到脚注

  15. 15

    在VBA powerpoint中如何将新幻灯片添加到空白演示文稿

  16. 16

    在Powerpoint 2016中将文本框添加到所有幻灯片

  17. 17

    VBA:在运行时将文本框添加到用户窗体

  18. 18

    Excel VBA:基于“组合框选择”然后“求和”将值添加到文本框

  19. 19

    .find VBA宏在一列中查找文本,并将条件文本添加到相邻列

  20. 20

    从activeX文本框中获取文本(VBA,PowerPoint)

  21. 21

    VBA Powerpoint,在整个演示文稿中在后台运行定时任务/宏

  22. 22

    PowerPoint VBA-在编辑模式下更改幻灯片时运行宏

  23. 23

    Powerpoint VBA宏可将所有选定对象的大小调整为最大对象

  24. 24

    PPT的宏-将文本框内容移动到占位符-维护链接和列表

  25. 25

    使用VBA自动将VBProject引用添加到PowerPoint库,具体取决于运行的Office版本PC

  26. 26

    VBA宏,以验证是否已创建新文件或将新文件添加到文件夹

  27. 27

    VBA宏更改宏

  28. 28

    VBA 文本搜索范围然后运行宏

  29. 29

    VBA或Excel宏添加1年

热门标签

归档