2012-10-25 62 views
1

我一直在嘗試編寫一個宏,它使用Excel中的表格通過powerpoint vba更新演示文稿。Powerpoint vba - 從excel中複製表格

下面是我在做什麼

  • 代碼首先刪除所有照片在演示文稿中,
  • 然後打開Excel工作簿,copys命名範圍,並粘貼到正確的幻燈片。

這個確切的代碼工作正常,前兩天,現在說的對象超出範圍用於複製的範圍「PL」。任何幫助或提示都會很棒,因爲這是我第一次使用powerpoint vba。

valnPath = "G:\valnpath\" 
PriorPath = "G:\Priorpath\" 

Dim xlApp As Object 
Dim xlWorkBook As Object 
Dim XL As Excel.Application 
Dim PPSlide As PowerPoint.Slide 

Set xlApp = CreateObject("Excel.Application") 
xlApp.Visible = True 
xlApp.DisplayAlerts = False 
xlApp.AskToUpdateLinks = False 

Set xlWorkBook = xlApp.Workbooks.Open(valnPath & "Presentation Tables 1208.xlsx", True, False) 
Set XL = GetObject(, "Excel.Application") 
    XL.DisplayAlerts = False 
    XL.AskToUpdateLinks = False 
    XL.Range("PL").Copy 

ActivePresentation.Slides(3).Select 
Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile 

Set XL = GetObject(, "Excel.Application") 
    XL.DisplayAlerts = False 
    XL.AskToUpdateLinks = False 
    XL.Range("AvE").Copy 

ActivePresentation.Slides(5).Select 
Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile 

Set XL = GetObject(, "Excel.Application") 
XL.Quit 

我做錯了什麼? 請幫助我,

謝謝

+1

是否有一個原因,爲什麼你使用'GetObject的()'後你獲得第二參考到Excel已經使用'CreateObject()'打開一個新實例?如果有多個excel實例打開,那麼不能保證'GetObject()會返回哪個實例(它甚至可以返回一個隱藏的實例),所以你最好不要使用原始的' xlApp參考。 –

+0

我沒有特別的理由說明我爲什麼要這樣做,如前所述,這是我在powerpoint vba的第一次嘗試 - 我認爲我必須「調用」excel電子表格才能從中複製。所以,而不是'XL.Range(「PL」)。複製',我會使用'xlApp.Range(「PL」)。複製'感謝您的輸入,我試試這個。 – amymon87

回答

1

試試這個:

valnPath = "G:\valnpath\" 
PriorPath = "G:\Priorpath\" 

Dim xlApp As Excel.Application 
Dim xlWorkBook As Excel.Workbook 
Dim PPSlide As PowerPoint.Slide 

Set xlApp = CreateObject("Excel.Application") 
With xlApp 
    .Visible = True 
    .DisplayAlerts = False 
    .AskToUpdateLinks = False 
End With 

Set xlWorkBook = xlApp.Workbooks.Open(valnPath & _ 
         "Presentation Tables 1208.xlsx", True, False) 

xlApp.Range("PL").Copy 
ActivePresentation.Slides(3).Select 
Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile 

xlApp.Range("AvE").Copy 
ActivePresentation.Slides(5).Select 
Application.ActiveWindow.View.PasteSpecial DataType:=ppPasteEnhancedMetafile 

xlWorkBook.Close False 
xlApp.Quit 
+0

+1,我會給出這個答案,但我必須去一點,你已經對這個效果發表了評論。唯一的其他可能的問題是該工作簿實際上不包括命名範圍。 –

+0

似乎這樣解決了我的問題。真的很感謝幫助。謝謝 – amymon87

+1

@ user1775757 - 如果這解決了你的問題(如你所說),你應該考慮接受答案。 –

相關問題