首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel转PowerPoint VBA

Excel转PowerPoint VBA
EN

Stack Overflow用户
提问于 2019-11-08 19:37:32
回答 1查看 85关注 0票数 0

我正在尝试使用Excel中的ActiveX CheckBox作为控件,将几个单元格从Excel粘贴到PowerPoint中的幻灯片中。将一张幻灯片传送到我指定的PowerPoint演示文稿没有问题,但当我勾选了多个方框时,问题就出现了。

所以我所做的基本上就是创建一个临时的模板演示文稿,当我单击另一个称为“启动”按钮的按钮时,它将被粘贴到我指定的演示文稿中。这是我的代码:

代码语言:javascript
复制
Private Sub CheckBox1_Click()

If CheckBox1.Value = True Then

Dim PPSlide As PowerPoint.Slide
Dim PPPres As PowerPoint.Presentation
Dim PP As PowerPoint.Application
Set PP = CreateObject("PowerPoint.Application")
Set PPPres = PP.Presentations.Open("(my temporary filename)")
Dim iCheckCount As Integer
iCheckCount = 0
Dim obj As OLEObject

    For Each obj In ActiveSheet.OLEObjects
        If obj.Object.Value = True Then iCheckCount = iCheckCount + 1

            Next


If iCheckCount = 1 Then

Set PPSlide = PPPres.Slides(1)


With PPSlide
.Shapes("Textfeld 2").TextFrame.TextRange.Text = ActiveSheet.Range("G3").Text
.Shapes("Textfeld 3").TextFrame.TextRange.Text = ActiveSheet.Range("B3").Text
.Shapes("Textfeld 4").TextFrame.TextRange.Text = ActiveSheet.Range("C3").Text
.Shapes("Textfeld 5").TextFrame.TextRange.Text = ActiveSheet.Range("D3").Text
.Shapes("Textfeld 6").TextFrame.TextRange.Text = ActiveSheet.Range("F3").Text
End With
PPPres.Slides(1).Copy

Else
If iCheckCount > 1 Then
    PPPres.Slides.Paste
    PPPres.Slides(2).Copy

Set PPSlide = PPPres.Slides(1)
With PPSlide
.Shapes("Textfeld 2").TextFrame.TextRange.Text = ActiveSheet.Range("G3").Text
.Shapes("Textfeld 3").TextFrame.TextRange.Text = ActiveSheet.Range("B3").Text
.Shapes("Textfeld 4").TextFrame.TextRange.Text = ActiveSheet.Range("C3").Text
.Shapes("Textfeld 5").TextFrame.TextRange.Text = ActiveSheet.Range("D3").Text
.Shapes("Textfeld 6").TextFrame.TextRange.Text = ActiveSheet.Range("F3").Text
End With

End If
End If
End If
End Sub

我知道它不会工作超过2个盒子(复制到指定的演示文稿)。所以我的问题是:

1)如何一次复制多张幻灯片?我试过了

代码语言:javascript
复制
For i = 1 to PPPres.Slides.Count
PPPres.Slides.Item(i).Copy
Next i

但它不会起作用。

2)我找到了每个勾选的ActiveX CheckBox的if代码。但问题是,我如何才能提到CheckBox_Click的所有Sub,并要求程序这样做呢?Sub的名称为Box1、Box2、Box3、...、Box46。

我知道我的问题真的很混乱,我没有很好地解释它,因为我也是VBA的新手。如果您想了解更多关于我的代码,请不要犹豫。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-11-08 20:24:53

你可以使用例如:

代码语言:javascript
复制
ActivePresentation.Slides.Range(Array(1, 2, 3)).Duplicate
' Or
For i = 1 to PPPres.Slides.Count
    PPPres.Slides.Item(i).Duplicate
Next i
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58765838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档