可以在PPT中使用VBA代码从剪贴板粘贴到PNG吗?

时间:2012-10-01 15:07:03

标签: vba powerpoint

我尝试了很多版本来获取此代码。这个至少错误...我希望在PowerPoint中,从剪贴板中选择Paste到PNG。

Sub Test()
ActivePresentation.Slides.Paste.Shapes.PasteSpecial ppPastePNG

End Sub

这个错误说出

  

“无效请求。剪贴板为空或包含可能未在此处粘贴的数据。”

剪贴板不为空,并且包含我可以粘贴的数据。

感谢您的任何想法!

2 个答案:

答案 0 :(得分:1)

仅供参考 - 在经过多次试验和错误之后,我想出了这个宏。它复制幻灯片内容并将其作为PNG粘贴回幻灯片。

Sub test()
Dim sld As Slide
Dim pre As Presentation
Dim shp1 As Shape
Dim shp2 As Shape


Set pre = ActivePresentation

For Each sld In pre.Slides
    Set shp1 = sld.Shapes.AddShape(msoShapeRectangle, 0, 0, 20, 20)
    shp1.Line.Visible = msoFalse
    shp1.Fill.Transparency = 1

Set shp2 = sld.Shapes.AddShape(msoShapeRectangle, 0, 0, 20, 20)
shp2.Left = 720 - shp2.Width
shp2.Top = 540 - shp2.Width
shp2.Line.Visible = msoFalse
shp2.Fill.Transparency = 1
Next

For Each sld In pre.Slides
     sld.Shapes.Range.Cut

If sld.Shapes.Count > 0 Then
   sld.Shapes.Range.Delete
   sld.Shapes.PasteSpecial ppPastePNG
   sld.Shapes.Range.Align msoAlignCenters, msoTrue
   sld.Shapes.Range.Align msoAlignMiddles, msoTrue
End If

If sld.Shapes.Count = 0 Then
sld.Shapes.PasteSpecial ppPastePNG
sld.Shapes.Range.Align msoAlignCenters, msoTrue
sld.Shapes.Range.Align msoAlignMiddles, msoTrue
End If
Next

End Sub

答案 1 :(得分:0)

简单回答:

Set m = ActivePresentation
n = m.Slides.Count
m.Slides.Add n + 1, ppLayoutBlank
m.Slides(2).Shapes.PasteSpecial ppPastePng

msdn for powerpoint上的参考页面:
"形状"粘贴格式:
http://msdn.microsoft.com/en-us/library/office/ff745158(v=office.15).aspx

新幻灯片布局:
http://msdn.microsoft.com/en-us/library/office/ff745137(v=office.15).aspx

或者如果需要纯文本:

m.Slides.Add n + 1, ppLayoutText
m.Slides(n + 1).Shapes(2).TextFrame.TextRange.PasteSpecial (ppPasteText)

"的TextRange" pastespecial格式:
http://msdn.microsoft.com/en-us/library/office/ff745706(v=office.15).aspx

甚至可以将文本输入变量:

 myVar = m.Slides(1).Shapes(1).TextFrame.TextRange.Text

"的TextRange"文字属性:
http://msdn.microsoft.com/en-us/library/office/ff746239(v=office.15).aspx

P.S。
对于属性或方法,小写也是可以接受的,尽管它们都是文档中的大写字母 函数调用的括号可以省略,如上面的第一个代码块。