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

Excel to Powerpoint (But with tables not pictures)

我正在尝试使用在 Excel 中创建的 table 自动创建 powerpoint。我的问题是 table 粘贴到 powerpoint 后,它不会立即被视为 'selected'。我收到一个错误,通常显示 'no object selected' 或 "Method 'ShareRange' of object 'Selection' failed" 之类的内容。如果我用 F8 慢慢浏览代码,它会起作用,在大多数情况下,它在运行时不起作用。

无论如何我都尝试过使用 table 的名字(当 table 中的副本得到名字时 'table 1' 想象一下),我试过它等待几秒钟和其他一些事情。我已经尝试过将不同类型的粘贴到文件中,但是我需要将其保留为 table,而不是图片(如果我只需要一张图片,我的代码就可以正常工作)。 我的问题(我认为)是粘贴后没有立即选中。

我对它做了一些修改,只是显示错误所在,我也一遍又一遍地重复粘贴、移动、调整大小。我真的希望这是一条 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

常见问题。最近粘贴的形状将始终是 "on top",因此您可以使用类似这样的东西来获取它:

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