在 powerpoint 中创建宏 VBA 弹出窗口,输入页码时,会将所选内容粘贴到除所选幻灯片之外的所有幻灯片中

问题描述 投票:0回答:1

我试图创建一个粘贴到所有宏,将所选内容粘贴到所有幻灯片。但是,我意识到我不希望将其粘贴到封面或结束页等页面,所以我想一个好方法是在运行宏时出现一个弹出窗口,然后您可以选择您不想粘贴的页面。然后,它会将所选内容粘贴到除输入的幻灯片之外的所有幻灯片中。

我有所有代码的通用粘贴,但正在努力弄清楚如何实现弹出框。任何帮助将不胜感激!

通用粘贴到所有代码:

Sub PasteToAll()
    
    Dim oshpR  As ShapeRange
    Dim T1     As Single
    Dim L1     As Single
    
    ActiveWindow.View.Paste
    
    Set oshpR = ActiveWindow.Selection.ShapeRange
    
    T1 = oshpR(1).Top
    
    L1 = oshpR(1).Left
    
    For i = 1 To ActivePresentation.Slides.Count
        Set MyRange = ActivePresentation.Slides(i).Shapes.Paste
        MyRange(1).Left = L1
        MyRange(1).Top = T1
    Next

End Sub
vba powerpoint
1个回答
0
投票

请尝试一下。

Option Explicit
Sub PasteToAll()
    Dim oshpR  As ShapeRange
    Dim T1     As Single
    Dim L1     As Single
    Dim sPage As String
    Dim sIndex As String
    Dim i As Integer, MyRange
    Const SEP_CHAR = ","  ' Modidy as needed 
    ActiveWindow.View.Paste
    Set oshpR = ActiveWindow.Selection.ShapeRange
    T1 = oshpR(1).Top
    L1 = oshpR(1).Left
    sPage = VBA.InputBox("Please input page number(seperated by comma)")
    sPage = SEP_CHAR & sPage & SEP_CHAR
    For i = 1 To ActivePresentation.Slides.Count
        sIndex = SEP_CHAR & i & SEP_CHAR
        If VBA.InStr(1, sPage, sIndex) = 0 Then
            Set MyRange = ActivePresentation.Slides(i).Shapes.Paste
            MyRange(1).Left = L1
            MyRange(1).Top = T1
        End If
    Next
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.