2017-11-07 3 views
-1

VBA를 사용하여 Excel에서 Powerpoint로 데이터를 복사하려고합니다. 나는 작동해야한다고 생각하는 다음 코드를 가지고 있지만 모든 변수를 선언하고 명시 했더라도 오류가 계속 발생합니다.VBA를 사용하여 excel에서 powerpoint로 데이터 복사 - 오류

Sub CopyToPPT() 

Dim DestinationPPT As String 
Dim rng As Range 
Dim PowerPointApp As PowerPoint.Application 
Dim myPresentation As PowerPoint.Presentation 
Dim mySlide As Object 
Dim myShape As Object 
Dim myShapeRange As Range 


DestinationPPT = "C:\powerpoint.pptx" 

'Open Powerpoint 
Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT) 


Set rng = ThisWorkbook.ActiveSheet.Range("B2:D14") 

Set mySlide = myPresentation.Slides(5) 
Set myShapeRange = mySlide.Shapes(mySlide.Shapes.Count) 
'Copy 
rng.copy 
'Paste 
    mySlide.Shapes.PasteSpecial DataType:=2 
    Set myShape = mySlide.Shapes(mySlide.Shapes.Count) 


    myShapeRange.Left = 234 
    myShapeRange.Top = 186 





End Sub 

라인

Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT) 

에게 내가이 문제를 해결할 수있는 방법 어떤 생각을 같이하지 않는 것?

런타임 오류 '91':

개체 변수 또는 With 블록 변수가 모든

+0

을 :

이 작동합니다'당신'Desktop' 폴더에 저장 시도하고 코드의 경로를 변경합니다. 작동하지 않는다면 오류 메시지의 내용을 알려주십시오. "파일을 찾을 수 없습니까?" – braX

+2

PP의 새 인스턴스를 만들지 않았습니다. PP는 먼저 열어야합니다.)'Set PowerPointApp = New PowerPoint.Application' –

+0

파일은 실제로 내 C 드라이브의 루트에 있지 않습니다. 실제로는 내 문서 폴더에 있지만이 게시물에 대해 게시하지 않기 위해이 파일을 수정했습니다. 기밀 일 수도 있습니다 – Anonymous

답변

1

먼저 설정하지, 내가 강하게에 대한 읽을 것을 권 해드립니다 내가 그것을 실행하려고 할 때이 오류가 Early and late binding

프레젠테이션을 열기 전에 PowerPoint 응용 프로그램의 새 인스턴스를 만들어야합니다. C '의 루트 폴더에 저장하는 대신

'your code 
Set PowerPointApp = New PowerPoint.Application 
'the rest of your code 
'Open Powerpoint 
Set myPresentation = PowerPointApp.Presentations.Open(DestinationPPT) 
+0

이 근무했습니다. 감사합니다. – Anonymous

+0

대단히 환영합니다.) –

관련 문제