【发布时间】:2021-03-28 03:29:27
【问题描述】:
我制作了一个 VBA 宏,它可以自动创建一个 PowerPoint 和一个使用文本创建名为“Handlungsempfehlungen”的工作表的宏。工作表“Handlungsempfehlungen”如下所示:
https://i.stack.imgur.com/nZEL8.png
它有大约 40 列 (A-AO) 和从第 1 行到最大值的每列中的文本。 34(用文本填充的行数每列不同)。我现在需要以某种方式遍历每一列中的每一行,并将每个 Cell.Value 交给现有的(和当前打开的)PowerPoint。到目前为止,我已经使用类似的东西在 PowerPoint 中创建文本框并使用 Excel 中的单元格值填充它们:
'New PPslide (copy slide 2 which is emtpy)
Set PPslide = PPapp.ActivePresentation.Slides(2).Duplicate.Item(1)
'Put new slide to end of PP
PPslide.MoveTo (PPpres.Slides.Count)
'Change title
PPslide.Shapes.Title.TextFrame.TextRange = "Slidetitle"
PPslide.Shapes(2).TextFrame.TextRange.Text = "Second title"
'Insert Textbox
Set PPtextbox = PPslide.Shapes.AddTextbox(msoTextOrientationHorizontal, Left:=40, Top:=133, Width:=875, Height:=30)
PPtextbox.TextFrame.TextRange.Text = ActiveWorkbook.Worksheets("Handlungsempfehlungen").Cells(1, 1).Value
但是对于 40 列和每列大约 30 行,每列都填充了文本,我需要创建大约 1000 个文本框并将它们交给我的 PowerPoint。如何循环浏览此工作表并自动在 PowerPoint 幻灯片上为每个文本框设置位置?每个 PowerPointslide 的幻灯片标题已经保存在工作表中每列的第 35 行(见屏幕截图),所以我也会把它交给循环内的 PP(对于每列设置 slidetitle = currentColumn.Row 35 有点想法)
我目前的想法是每张幻灯片有 5 个文本框并设置位置,用第一列第 1-5 行的值填充它们,然后创建一张新幻灯片并对第 6-行执行相同的过程10以此类推,直到当前列中的Cell.Value为空,然后向右跳一列并再次创建一个新的PPslide并重复整个过程,直到完成整个工作表。我认为这似乎相对简单,但我仍然是初学者,很难实现。
这是一个好主意吗?我需要如何到达那里?我很不擅长循环,但我对每个答案都很满意!感谢您的时间和帮助!
PS:创建的 PP 及其对象的声明:
Public Shape As Object
Public PPshape As PowerPoint.Shape
Public PPapp As PowerPoint.Application
Public PPpres As PowerPoint.Presentation
Public PPslide As PowerPoint.Slide
Public PPtextbox As PowerPoint.Shape
Set PPapp = New PowerPoint.Application
PPapp.Visible = msoTrue
【问题讨论】:
标签: excel vba loops powerpoint paste