Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

Members - Question and Answer


파워포인트에서 엑셀테이블과 챠트갖여오기



아래와 같은 질문

엑셀시트에서는 어느정도 VB를 이용 하고 있습니다.
문제는 엑셀자료를 PPT로 가져오고 싶은데 잘 안되서요

1. VB로 엑셀에서 만들어진 그라프를 그림 형태로 복사해서 PPT에 넣고 싶을때.
2. VB로 엑셀의 자료를 PPT 표 형식에 자료를 이동 복사 하고 싶을때.
두가지를 하려고 합니다.

엑셀에 파워포인트로 보내던가
파뤄포인트에서 엑셀을 부르던가..
코드가 들어있는 프로그램을 HOST 프로그램이라고 할수 있겠다
여기에서는 질문하신분의 요청에 따라서
파워포인트에 코드를 넣고 하자
우선 엑셀화일을 하나 만들어야겠지
엑셀화일의 이름을 calledFromPPT.xls 라고 만들고
시트하나 삼입하고 이름을 Studio 라고 지어 주고
테이블을 하나 만들고



우선 VBA편집기의 도구/참조메뉴에서 엑셀라이브러리를 참조시키시고
아래의 프로시져를 파워포인트 모듈시트에 작성하고
실행하면 챠트를 그림으로 저장한후 파워포인트로 갖여오고
엑셀의 테이블은 CopyPicture하여 그냥 파워포인트에 붙여 넣어도 되고
하나..하나 정보를 불러서 파워포인트의 Shape에 옮기면 될 것이다
아래의 구문은 파워포인트의 디자인 모드에서 실행되는 것이다

Sub insertPictureOfExcelChart() Dim oSlide As Slide Dim oXL As New Excel.Application Dim oBook As Excel.Workbook, oSht As Excel.Worksheet Dim oChart As Excel.Chart Set oBook = oXL.Workbooks.Open( _ ActivePresentation.Path & "\calledFromPPT.xls") Set oSht = oBook.Worksheets("Studio") Set oChart = oSht.ChartObjects(1).Chart oChart.Export ActivePresentation.Path & "\chartForPPT.jpg" Set oSlide = ActivePresentation.Slides.Add _ (ActivePresentation.Slides.Count + 1, ppLayoutBlank) oSlide.Shapes.AddPicture FileName:=ActivePresentation.Path _ & "\chartForPPT.jpg", linktofile:=False, _ savewithdocument:=True, Left:=30, Top:=30 oSht.Range("tableToPPT").CopyPicture oSlide.Shapes.Paste With oSlide.Shapes(2) .Top = 160 .Left = 410 End With oSlide.Select oXL.Quit End Sub

위의 것은 디자인 모드에서 실행되는 것이고
만약 스라이드실행모드에서 하고 싶다면
해당 스라이드에 버튼을 달고 버튼의 Click이벤트프로시져에
같은 내용의 코드를 좀 수정하여 작성하면 될것이다

Private Sub CommandButton1_Click() Dim oSlide As Slide Dim oXL As New Excel.Application Dim oBook As Excel.Workbook Dim oSht As Excel.Worksheet Dim oChart As Excel.Chart Set oBook = oXL.Workbooks.Open( _ ActivePresentation.Path & "\calledFromPPT.xls") Set oSht = oBook.Worksheets("Studio") Set oChart = oSht.ChartObjects(1).Chart oChart.Export ActivePresentation.Path & "\chartForPPT.jpg" Set oSlide = ActivePresentation.Slides(1) oSlide.Shapes.AddPicture _ FileName:=ActivePresentation.Path & _ "\chartForPPT.jpg", linktofile:=False, _ savewithdocument:=True, Left:=30, Top:=30 oSht.Range("tableToPPT").CopyPicture oSlide.Shapes.Paste With oSlide.Shapes(3) .Top = 160 .Left = 410 End With oXL.Quit End Sub

ActivePresentation.Slides(1)에서 Slide의 인덱스는
잘 지켜서 넣어야 할것이다
세번째 스라이드면서 위와 같이 접근하면 당연히 에러!!!

Shape오브젝트에 그림을 넣는 것은 버전이 바뀌면서
다양한 방법이 추가 되다 보니까..많이 헷갈린다
최근의 참 좋은 메소드는 아래와 같은 것이 있으니 꼭 실행시켜보시기
바란다
Shape오브젝트는 오피스내의 워드,파워포인트,엑셀 모두 공통이니
한번 알면 이곳 저곳에서 써먹는 오브젝트이다

아래의 프로시져를 엑셀에서 실행시켜보시기 바란다
웹의 그림을 엑셀로 불러 들이게 된다

편리한 Shape오브젝트의 Fill.UserPicture 메소드이다

Sub getPictureFromWeb() Dim shpX As Shape, iPic As Integer, sPath As String For Each shpX In ActiveSheet.Shapes If shpX.Name = "myPic" Then shpX.Delete Next Set shpX = ActiveSheet.Shapes.AddShape(_ msoShapeRectangle, 50, 50, 300, 150) sPath = "http://uno21.com/aspnet/images/041_" _ & Int(Rnd() * 5) + 1 & ".jpg" With shpX .Name = "myPic" .Fill.UserPicture sPath End With End Sub




callXL.