일단 아래와 같은 엑셀 시트(통합 문서1.xlsx)가 있습니다.
위에서 원하는 행만큼(여기서는 10행씩) 분할해서(끊어서) 파워포인트 각 슬라이드에 옮기는 작업입니다.(아래 그림)
더보기
Const xlFile As String = "통합 문서1.xlsx"
Const xlLines As Integer = 10 '10이면 엑셀 데이터를 10줄씩 분할 복사
Const Margin As Single = 100 '슬라이드의 여백
Sub Sheet2Slide()
Dim XL As Object
Dim Sht As Object
Dim rng0 As Object, rng As Object
Dim Pres As Presentation
Dim Sld As Slide
Dim Shp As Shape
Dim SW!, SH!
Set Pres = ActivePresentation
SW = Pres.PageSetup.SlideWidth: SH = Pres.PageSetup.SlideHeight
Set XL = CreateObject("Excel.Application")
For Each Sht In XL.Workbooks.Open(Pres.Path & "\" & xlFile).worksheets
Set rng0 = Sht.UsedRange
Set rng = rng0
While Not rng0 Is Nothing
'10줄씩 복사 붙여넣기
Set rng = rng0.Resize(xlLines)
rng.Copy
Set Sld = Pres.Slides.Add(Pres.Slides.Count + 1, ppLayoutBlank)
Set Shp = Sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, SW, 50)
Shp.TextFrame.TextRange = Sht.Name & "_" & rng.Address
Set Shp = Sld.Shapes.PasteSpecial(ppPasteOLEObject)(1)
'크기 조정
Shp.LockAspectRatio = msoFalse
Shp.Width = SW - Margin * 2
Shp.Height = SH - Margin * 2
Shp.Left = Margin: Shp.Top = SH / 2 - Shp.Height / 2
Shp.Name = Sht.Name & "_" & rng.Address
'남은 범위 계산
Set rng0 = DisUnion(XL, rng0, rng)
Wend
Next Sht
XL.CutCopyMode = False 'Clear Clipboard
XL.Quit
Set XL = Nothing
End Sub
Public Function DisUnion(App As Object, Keep As Object, Remove As Object) As Object
Dim Rng_output As Object
Dim Cell As Object
For Each Cell In Keep
'check if given cell is in range to remove
If App.Intersect(Cell, Remove) Is Nothing Then
'this builds the output and handles first case
If Rng_output Is Nothing Then
Set Rng_output = Cell
Else
Set Rng_output = App.Union(Rng_output, Cell)
End If
End If
Next Cell
Set DisUnion = Rng_output
End Function
특히 엑셀 영역을 빼는 사용자 함수(UDF)를 추가하여 총 범위에서 10행식 빼나가면서
각슬라이드에 붙여넣게 만들었습니다.
붙여넣을 때 그림으로 붙여넣을 수도 있는데 엑셀개체로 붙여넣도록 했습니다. (편집 가능)
회색줄도 출력되는데 이것을 피하려면 먼저 엑셀에서 흰색 선으로 바꾸어 놓으세요.
여백이 있고 세로로 좀 늘어나는데 이것은 소스를 수정하면 되겠습니다.
추가: 엑셀 각시트의 프린트 영역을 파워포인트 슬라이드에 각각 복사하는 버전(엑셀 매크로)
(지식인 링크)
'XLS+VBA' 카테고리의 다른 글
연결 끊어진 차트의 엑셀 데이터 복구 (0) | 2022.07.26 |
---|---|
엑셀 데이터를 JSON형식으로 변환 (2) | 2022.01.13 |
Alt+F11 및 VBE창 금지/ 활성화 (0) | 2022.01.02 |
고프로(Gopro) 촬영한 동영상 MP4 파일명을 촬영날짜로 일괄 변경 (9) | 2021.04.17 |
네이버카페 최신글 가져오기 (37) | 2020.11.19 |
네이버 지도 검색 결과 엑셀 수집 (121) | 2020.08.17 |
VBA에서 Selenium 개체를 이용해서 웹 스크래핑 (14) | 2020.02.16 |
WordReference.com 사전 단어 자동 검색 및 MP3다운로드 (36) | 2019.12.24 |
최근댓글