2016-06-23 80 views
1

我想使用模板将数据从EXCEL复制到使用EXCEL VBA的POWERPOINT演示文稿。它在我使用显式路径时起作用。不过我想使用相对路径来运行它,但它扔我下面的错误Excel VBA Mypresentation.ApplyTemplate与通用路径文件

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

我应该怎么办?

回答

1

假设模板文件在Excel文件相同的文件夹,更改语句:

Template = CurDir() 

到:

Template = ThisWorkbook.Path 
+0

感谢菲利普,它作品。 –

0

是将Excel中为您POTM相同的位置文件? CURDIR()返回Excel文件,目前保存在路径所以,如果你POTM保存在子文件夹,你将要使用的子文件夹的路径,以及:

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