提问人:dw45824 提问时间:11/2/2023 更新时间:11/2/2023 访问量:30
在powerpoint中创建一个宏VBA弹出窗口,当输入页码时,会将所选幻灯片粘贴到除所选幻灯片之外的所有幻灯片中
Creating a Macro VBA Pop-out in powerpoint that, when page numbers are entered, will paste the selected to all the slides besides the ones selected
问:
我试图创建一个粘贴到所有宏,将选定的内容粘贴到所有幻灯片。但是,我意识到我不希望它被粘贴到封面或关闭页面等页面上,所以我认为一个很好的方法是在运行宏时出现一个弹出窗口,然后您可以选择您不希望它粘贴到的页面。然后,它会将所选内容粘贴到除输入的幻灯片之外的所有幻灯片。
我有所有代码的通用粘贴,但正在努力弄清楚如何实现弹出框。任何帮助将不胜感激!
通用粘贴到所有代码:
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
答:
0赞
taller
11/2/2023
#1
注意:您的代码可以在活动幻灯片上创建两个形状(其索引为 ActiveWindow.View.slide.SlideIndex)。 创建第一个形状。 如果活动幻灯片不在“跳过”列表中,则循环将创建第二个形状。ActiveWindow.View.Paste
For
请尝试。
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
评论
0赞
dw45824
11/2/2023
你好!非常感谢您的帮助。我注意到,当代码首次运行时,该形状会立即粘贴到我当前所在的幻灯片上,然后在输入幻灯片编号并提交到弹出窗口后再次粘贴到该幻灯片上(我假设这就是您的笔记所指的)。有没有办法解决这个问题?任何帮助将不胜感激!谢谢!
0赞
taller
11/2/2023
有没有办法确定形状的位置(上、左)而不粘贴在当前幻灯片上?
评论