관련: 지식인 1
엑셀양식에 아래처럼 방을 구분하여 배정하고
![](https://blog.kakaocdn.net/dn/PfU31/btsHy0Sbzzd/KmcuWGvoy4BUQxckbWl6NK/img.png)
아래처럼 방별로 배정명단을 출력하는 작업입니다.
![](https://blog.kakaocdn.net/dn/dW8k2P/btsHy1Kkarb/AH1kjopxg2rpIZxcn209Dk/img.png)
코드 내용:
Option Explicit
Sub GeneratePPT()
On Error GoTo Done:
Dim pres As Presentation
Set pres = ActivePresentation
Dim sld As Slide
Dim shp As Shape
Dim XLapp As Object 'Excel.Application
Set XLapp = CreateObject("Excel.Application")
Dim book As Object 'Excel.Workbook
Dim sht As Object 'Excel.Worksheet
Dim rng As Object 'Excel.Range
Dim LastRow As Long, LastCol As Long, c As Long
Dim TargetXLS As String, TargetPPT As String
Dim room As String
Dim r As Integer
'엑셀 파일 선택 상자
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "엑셀목록", "*.xls?"
If .Show = -1 Then TargetXLS = .SelectedItems(1)
End With
If Len(TargetXLS) = 0 Then GoTo Done:
Set book = XLapp.Workbooks.Open(FileName:=TargetXLS, ReadOnly:=True)
Set sht = book.ActiveSheet
'A열 맨 아래행 구하기
LastRow = sht.Cells(sht.Rows.Count, 1).End(-4162).Row 'xlUp(-4162)
If LastRow <= 1 Then MsgBox "목록이 1개 이하입니다.": GoTo Done
'1행 맨 오른쪽 셀 구하기
LastCol = sht.Cells(1, sht.Columns.Count).End(-4159).Column 'xlToLeft(-4159)
'모든 행에 대해 순환, 번호열 기준
For Each rng In sht.Range("B2:B" & LastRow)
'방이름/방번호
room = rng.Offset(, 2)
'방이 다르면/바뀌면 슬라이드 추가
If room <> rng.Offset(-1, 2) Then
'마지막 슬라이드를 복제
Set sld = pres.Slides(pres.Slides.Count).Duplicate(1)
'마지막 바로 앞으로 보내기
sld.MoveTo pres.Slides.Count - 1
'슬라이드 감추기는 취소
sld.SlideShowTransition.Hidden = False
'반명
sld.Shapes("반").TextFrame.TextRange = rng.Offset(, -1) & "반"
'방호수
sld.Shapes("표").Table.Cell(1, 1).Shape.TextFrame.TextRange = rng.Offset(, 2) & " 호"
'표의 행위치는 초기화
r = 0
End If
r = r + 1
'각 컬럼 별로 입력
sld.Shapes("표").Table.Cell(r + 1, 1).Shape.TextFrame.TextRange = rng
sld.Shapes("표").Table.Cell(r + 1, 2).Shape.TextFrame.TextRange = rng.Offset(, 1)
Next rng
'기본 슬라이드는 슬라이드쇼에서 감춤
pres.Slides(pres.Slides.Count).SlideShowTransition.Hidden = msoTrue
'숨겨진 슬라이드 인쇄 안함
pres.PrintOptions.PrintHiddenSlides = msoFalse
'파일명 변경 저장
'TargetPPT = pres.FullName
'TargetPPT = Left(TargetPPT, InStrRev(TargetPPT, ".") - 1) & _
"_자동생성" & (LastRow - 1) & ".pptx"
'PPTfile.SaveAs FileName:=TargetPPT
Done:
If Err Then MsgBox Err.Description
If Not XLapp Is Nothing Then XLapp.Quit: Set XLapp = Nothing
End Sub
매크로 실행 결과
![](https://blog.kakaocdn.net/dn/cH9L66/btsHAqvkwWG/hNPfFf5cSRXImkIQyk1mpK/img.png)
명단 양식:
출력 양식:
참고) 아래와 같은 기존 다른 예시도 참고하세요.
VBA를 이용해서 엑셀명단을 PPT슬라이드에 채워 넣는 비슷한 사례를 모았습니다.
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102&docId=323539444
엑셀 데이터 통해 파워포인트 만드는 매크로
안녕하세요 ㅠㅠ 제가 파일을 올려야 될거라는 생각을 하지를 못했네용 파일 첨부하여 다시 질문드립니다아래는 전에 드렸던 질문입니다ㅡㅡ안녕하세요, 제가 다음과 같은 엑셀 데이터를 바탕
kin.naver.com
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=437449137
엑셀 매크로 기능 이용해서 파워포인트 슬라이드 자동생성 방법(4행의 엑...
엑셀 매크로 기능 이용해서 파워포인트 슬라이드 자동생성하는 방법 질문드려요. 위의 그림처럼 파워포인트에서 A4사이즈 슬라이드에 네 개의 이름표가 들어가게 만들어서 여러 명을 한 번...
kin.naver.com
PPT(파워포인트)로 메일머지 하는 방법을 알려주세요! (VBA)
VBA로 메일머지 하는 방법이 있다고 알고 있는데이러한 데이터를이렇게 PPT로 출력시키고 싶습니다어떻게 하면 될까요? 알려주세요!
kin.naver.com
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102&docId=326720555
안녕하세요, 엑셀 -> 파워포인트 매크로 질문드립니다.
안녕하세요, 엑셀 -> 파워포인트 매크로(vba) 관련 지식인 찾다보니konahn님 답변이 너무 도움이 되어 이렇게 1:1 질문 드립니다.첨부와 같이 엑셀 시트 내에 있는 데...
kin.naver.com
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=459877084
파워포인트 질문
파워포인트에 엑셀에있는 표내용 하나씩 넣어주는 매크로 있을까요 단순한건데 방법을 모르겠네요엑셀표에있는 항목하나하나가 각 각의 ppt에 들어가야 합니다도와주세요 ㅜㅜ
kin.naver.com
https://kin.naver.com/qna/detail.naver?d1id=1&dirId=102020103&docId=459985130
ppt 엑셀 매크로 질문
파워포인트에 글상자 세개를 엑셀에 a,b,c열 텍스트로 자동채우기를 하고싶은데 현재가지고 있는 메크로가 아래와같습니다. 현재는 글상자 a,b 열 글상자 2개밖에 안채워지는데 3개,...
kin.naver.com
'XLS+VBA' 카테고리의 다른 글
WinHttp 한글 인코딩이 깨질 때 처리 방법(예시: 당근 사이트) (0) | 2024.11.18 |
---|---|
의료기기 검색 크롤링 (2) | 2024.10.03 |
구글 검색 API > 검색 결과 첫번째 링크 가져오기 (0) | 2024.07.03 |
엑셀연동] 자동 방배정 및 명단 출력 2 (0) | 2024.05.23 |
교보문고 ISBN 도서 검색(JSON) (1) | 2024.05.15 |
모든 행 값을 랜덤으로 섞기 (1) | 2024.03.01 |
네이버 API를 이용한 '네이버 쇼핑' 검색 결과 수집 (0) | 2024.02.20 |
엑셀에서 실시간 유튜브 구독자수 모니터링 (0) | 2024.02.15 |
최근댓글