Excel VBA Mypresentation.ApplyTemplate与通用路径文件

时间:2016-06-23 12:54:44

标签: excel vba excel-vba powerpoint-vba

我想使用模板将数据从EXCEL复制到带有EXCEL VBA的POWERPOINT演示文稿。它在我使用显式路径时有效。但是我想使用相对路径来运行它,但它会引发以下错误

Sub PowerPoint()

Dim rng As Excel.Range
Dim PowerPointApp As PowerPoint.Application
Dim myPresentation As PowerPoint.Presentation
Dim mySlide As PowerPoint.Slide
Dim myShapeRange As PowerPoint.Shape
Dim Template As String




'Copy Range from Excel
  Set rng = Worksheets("Contact Page").Range("C2:O38")


'Create an Instance of PowerPoint
  On Error Resume Next

    'Is PowerPoint already opened?
      Set PowerPointApp = GetObject(class:="PowerPoint.Application")

    'Clear the error between errors
      Err.Clear

    'If PowerPoint is not already open then open PowerPoint
      If PowerPointApp Is Nothing Then Set PowerPointApp = CreateObject(class:="PowerPoint.Application")

    'Handle if the PowerPoint Application is not found
      If Err.Number = 429 Then
        MsgBox "PowerPoint could not be found, aborting."
        Exit Sub
      End If

  On Error GoTo 0

'Make PowerPoint Visible and Active
  PowerPointApp.Visible = True
  PowerPointApp.Activate

'Create a New Presentation

  Template = CurDir()
  Template = Template & "\TEMPLATE3.potm"
  Set myPresentation = PowerPointApp.Presentations.Add
   myPresentation.ApplyTemplate (Template)
  'myPresentation.ApplyTemplate ("C:\Users\Oriol\Documents\3mundi\Reporting\BR\New Model\TEMPLATE3.potm")
  myPresentation.PageSetup.SlideSize = ppSlideSizeOnScreen

Error

我该怎么办?

2 个答案:

答案 0 :(得分:1)

假设模板文件位于Excel文件的同一文件夹中,请更改语句:

Template = CurDir()

为:

Template = ThisWorkbook.Path

答案 1 :(得分:0)

Excel文件与您的potm位于同一位置吗? CurDir()返回excel文件当前保存的路径。因此,如果您的potm保存在子文件夹中,您还需要在路径中使用该子文件夹:

Template = CurDir()
Template = Template & "\SubFolder\TEMPLATE3.potm"