juanbolas
juanbolas

Reputation: 21

Positioning a Powerpoint table after copy and paste from another slide

I'm having a problem that has me stumped. After I copy a table from a PPTX file and paste it t another file and try to repsosition it, it fails. THe two message boxes after that are not working

here's the code and thanks in advance

Option Private Module


    ' Tables

Sub InsertTable(n As Integer)

    Dim CurWindow As DocumentWindow
    Dim SourceWindow As DocumentWindow
    Dim LoadFrom As String
    Dim LoadImage As Shapes
    
    LoadFrom = "Tables.pptx"
     
    'disable screen updating
    Set appObject = New cScreenUpdating
    appObject.ScreenUpdating = False
    
''    On Error GoTo Err_handler
    
        With Application.ActiveWindow
                If Not (.ViewType = ppViewNormal Or .ViewType = ppViewSlide) Then _
                         Application.ActiveWindow.ViewType = ppViewNormal
                If .ActivePane.ViewType <> ppViewSlide Then .Panes(2).Activate
        End With
        
    Set CurWindow = Application.ActiveWindow
    
    'load the library and copy the slide
    LoadLibrary LoadFrom
    LoadDiagram = ActivePresentation.Slides(n).Shapes.Paste(1)
    With ActiveWindow.Selection
        .Left = 335
        .Top = 370
    End With

     If ActiveWindow.Selection.Type = ppSelectionShapes Then MsgBox "Shapes"
    
     If ActiveWindow.Selection.Type = msoTable Then MsgBox "Tables"
    
ExitMe:
    On Error Resume Next
    
    SourceWindow.Close
    
    Set CurWindow = Nothing
    Set SourceWindow = Nothing
''    RefreshWindow
    
    'enable screen updating
    ScreenUpdating = True

    Exit Sub
    
Err_handler:
    MsgBox "Switch to Normal View.", vbInformation + vbOKOnly, strAppName
    glbErr = True
    Resume Err_Resume
    
Err_Resume:
    On Error Resume Next
    GoTo ExitMe

End Sub

Upvotes: 0

Views: 61

Answers (1)

ZebraOnWheels
ZebraOnWheels

Reputation: 184

(Edited significantly) this works, adapt as needed

Sub InsertTable()

  Dim SourceFile As Presentation

  Set SourceFile = Application.Presentations.Open("Tables.pptx", True, False, msoFalse)

  SourceFile.Slides(1).Shapes("Table").Copy

  ActivePresentation.Slides(1).Shapes.Paste.Select
    
  With ActiveWindow.Selection.ShapeRange    
    .Left = 0
    .Top = 0
  End With

End Sub

Upvotes: 1

Related Questions