2012-10-25 118 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 - 如果这解决了你的问题(如你所说),你应该考虑接受答案。 –

相关问题