簡體   English   中英

Excel 到 PowerPoint VBA

[英]Excel to PowerPoint VBA

我正在嘗試將 Excel 中的幾個單元格粘貼到 PowerPoint 中的幻燈片,使用 Excel 中的 ActiveX CheckBox 作為控件。 將一張幻燈片傳輸到我指定的 PowerPoint 演示文稿沒有問題,但是當我勾選多個框時出現問題。

所以我所做的基本上是制作一個臨時模板演示文稿,當我單擊另一個名為“啟動”按鈕的按鈕時,它將被粘貼到我指定的演示文稿中。 這是我的代碼:

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)如何一次復制多張幻燈片? 我試過了

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 的新手。 如果您想了解更多關於我的代碼的信息,請隨時問我。

謝謝!

您可以使用例如:

ActivePresentation.Slides.Range(Array(1, 2, 3)).Duplicate
' Or
For i = 1 to PPPres.Slides.Count
    PPPres.Slides.Item(i).Duplicate
Next i

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM