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.