Excel到Powerpoint(但带有表格而不是图片)

Excel到Powerpoint(但带有表格而不是图片),excel,automation,powerpoint,vba,Excel,Automation,Powerpoint,Vba,我正在尝试使用Excel中创建的表格自动创建powerpoint。我的问题是表格粘贴到powerpoint后,它不会立即被视为“已选定”。我得到一个错误,通常表示“未选择对象”或“对象“选择”的“方法”ShareRange“失败”。如果我用F8慢慢地浏览代码,它会工作,在大多数情况下,当它运行时,它不会工作 在任何情况下,我都尝试过使用表的名称(当表中的副本获得名称“table 1”时,我会想象一下),我尝试过让它等待几秒钟和其他一些事情。我尝试了不同类型的粘贴到文件中,但是我需要将其保存在一个

我正在尝试使用Excel中创建的表格自动创建powerpoint。我的问题是表格粘贴到powerpoint后,它不会立即被视为“已选定”。我得到一个错误,通常表示“未选择对象”或“对象“选择”的“方法”ShareRange“失败”。如果我用F8慢慢地浏览代码,它会工作,在大多数情况下,当它运行时,它不会工作

在任何情况下,我都尝试过使用表的名称(当表中的副本获得名称“table 1”时,我会想象一下),我尝试过让它等待几秒钟和其他一些事情。我尝试了不同类型的粘贴到文件中,但是我需要将其保存在一个表中,而不是一张图片(如果我只需要一张图片,我的代码就可以正常工作)我的问题(我想)是它会粘贴,不会立即被选中。

我对它做了一些修改,只是显示了错误的位置,我也做了同样的粘贴,移动,大小,一遍又一遍。我真的希望这是一个1线-打我的脸,因为这是显而易见的修复

    Dim pp As PowerPoint.Application
    Dim PPPres As PowerPoint.Presentation
    Dim PPSlide As PowerPoint.Slide
    Dim Slide1Title As Excel.Range
    'Opening a blank, normally I have it open a template
    Set pp = New PowerPoint.Application
    Set PPPres = pp.Presentations.Add
    Set PPSlide = PPPres.Slides.Add(1, 12)
    Set PPSlide = PPPres.Slides.Add(2, 12)
    Set PPSlide = PPPres.Slides.Add(3, 12)
    pp.Visible = True


   'Paste as text/table
   'Title 1
    PPPres.Slides(2).Select
    Set Slide1Title = Sheets("presentation").Range("B2:G3")
    Slide1Title.Copy
    PPPres.Application.CommandBars.ExecuteMso ("PasteSourceFormatting")
    'Here-ish is the error, after pasting in I can't seem to select it
    pp.ActiveWindow.Selection.ShapeRange.Top = 10
    pp.ActiveWindow.Selection.ShapeRange.Left = 75

常见问题。最近粘贴的形状将始终处于“顶部”,因此您可以使用类似于以下内容的方式获得它:

PPPres.Slides(2).Shapes(PPPres.Slides(2).Shapes.Count)
请注意,通过选择形状和幻灯片,您可能会遇到奇怪的错误,并将代码的速度降低一个数量级

Dim oSh as Shape
With PPPres.Slides(2)
  ' Do the paste, then get a reference to the pasted shape:
  Set oSh = PPPres.Slides(2).Shapes(PPPres.Slides(2).Shapes.Count)
  With oSh
     ' set .Top, .Left etc
  End With   ' the shape
End With  ' the slide

不使用F8时的临时解决方案

Set Slide1Title = Sheets("presentation").Range("B2:G3")
Slide1Title.Copy
PPPres.Slides(2).Select
With PPPres.Slides(2)
PPPres.Application.CommandBars.ExecuteMso ("PasteSourceFormatting")
MsgBox ("1")
Set oSh = PPPres.Slides(2).Shapes(PPPres.Slides(2).Shapes.Count)

    With oSh
pp.ActiveWindow.Selection.ShapeRange.Top = 10
pp.ActiveWindow.Selection.ShapeRange.Left = 75
    End With   ' the shape
End With  ' the slide

当我运行代码时,它有相同的旧错误,但项目而不是形状。。。然后当我用F8键通过代码时,我得到了形状(未知成员):整数超出范围。0不在1到0的有效范围内。明白了(我最初删除了“选择幻灯片”项目…我认为是PPPres.Slides(2)的结果)我也要选择幻灯片…或将其粘贴到正确的位置…错误…它将粘贴到所选的任何位置…即使上面写着“使用幻灯片2粘贴”,但非常感谢!我遗漏了一些细微差别,我以前见过此代码,但我一直错误地将其放入。再次感谢!!很高兴它成功了…建议:通过发布用最后的代码回答,或者编辑你已经拥有的,并注意到它现在起作用。然后其他人将能够从你所学的中受益。嗯,当我说得到它时……我想我说得太快了……这只是为了当我浏览代码“F8”时……所以它起作用……但只有当手动浏览时……我尝试了等待和睡眠功能ons…没有渗透到做它…我把代码放了一分钟,然后把它取下来:(这样我可以用MsgBox(“”)来运行它,这基本上有助于停止代码…但我更喜欢一些…少一点…点击密集型。。。