Code of AI

[ChatGPT] 파워포인트 명패를 만드는 VBA 코드

별별AI 2023. 9. 7. 11:39
728x90


[요청]
엑셀 파일에 a1셀에는 부서, b1셀에는 직급, c1셀에는 이름이 적혀 있다.
파워포인트를 세로로 A4용지 크기로 설정한 후, 부서는 폰트 30에 굵은 글씨로, 직급은 이름과 같은 높이에 크기는 30으로 하고 굵은 글씨로 이름은 크기 50으로 해줘.
부서는 가운데 정렬을 하고, 직급과 이름 두 가지도 페이지에서 가운데 오도록 해줘.
이름별로 한 페이지씩 명패를 만들도록 vba 코딩해줘


[ChatGPT의 답변]
아래는 엑셀 VBA 코드로 요구사항에 맞게 파워포인트 슬라이드를 생성하는 예제입니다. 이 코드를 엑셀 파일의 VBA 에디터에 추가하여 사용하면 됩니다.


[코드]
Sub CreateNameBadges()

Dim ppApp As Object
Dim ppPres As Object
Dim ppSlide As Object
Dim rngData As Range
Dim cell As Range
Dim slideCounter As Integer

' 파워포인트 앱을 열기
On Error Resume Next
Set ppApp = GetObject(, "PowerPoint.Application")
On Error GoTo 0

' 파워포인트 앱이 없으면 새로 열기
If ppApp Is Nothing Then
Set ppApp = CreateObject("PowerPoint.Application")
End If

' 파워포인트 노트북 생성 및 설정
Set ppPres = ppApp.Presentations.Add
With ppPres.PageSetup
.SlideSize = 1 ' ppSlideSizeA4 (세로 방향 A4 용지)
End With

' 엑셀 데이터 범위 설정 (A1부터 시작해서 부서, 직급, 이름 순서로 입력되어 있다고 가정)
Set rngData = ThisWorkbook.Sheets("Sheet1").Range("A1:C1")

' 파워포인트 슬라이드 생성
slideCounter = 0
For Each cell In rngData.Columns(3).Cells ' 이름 열 (C열)

' 새로운 슬라이드 생성
Set ppSlide = ppPres.Slides.Add(slideCounter + 1, 11) ' 11은 ppLayoutBlank

' 부서 정보 설정
With ppSlide.Shapes.AddTextbox(1, 100, 100, 500, 100)
.TextFrame.TextRange.Text = rngData.Cells(1, 1).Value ' 부서 정보 (A1셀)
.TextFrame.TextRange.Font.Size = 30
.TextFrame.TextRange.Font.Bold = True
.TextFrame.TextRange.ParagraphFormat.Alignment = 2 ' 가운데 정렬 (2는 ppAlignCenter)
End With

' 직급 정보 설정
With ppSlide.Shapes.AddTextbox(1, 100, 250, 500, 100)
.TextFrame.TextRange.Text = rngData.Cells(1, 2).Value ' 직급 정보 (B1셀)
.TextFrame.TextRange.Font.Size = 30
.TextFrame.TextRange.Font.Bold = True
.TextFrame.TextRange.ParagraphFormat.Alignment = 2 ' 가운데 정렬 (2는 ppAlignCenter)
End With

' 이름 정보 설정
With ppSlide.Shapes.AddTextbox(1, 100, 400, 500, 100)
.TextFrame.TextRange.Text = cell.Value ' 이름 정보 (C열)
.TextFrame.TextRange.Font.Size = 50
.TextFrame.TextRange.Font.Bold = True
.TextFrame.TextRange.ParagraphFormat.Alignment = 2 ' 가운데 정렬 (2는 ppAlignCenter)
End With

slideCounter = slideCounter + 1
Next cell

' 파워포인트 창 보여주기
ppApp.Visible = True

' 메모리 해제
Set ppSlide = Nothing
Set ppPres = Nothing
Set ppApp = Nothing

End Sub


[ChatGPT의 설명]
위 코드를 사용하려면 다음과 같은 사전 작업이 필요합니다.
엑셀 파일에 파워포인트를 생성할 데이터가 있는 시트를 만듭니다. 예제에서는 "Sheet1"으로 가정하고 작성되었습니다.
엑셀 VBA 에디터를 열고, 이 코드를 새 모듈에 복사하여 붙여넣습니다.
VBA 에디터를 닫고, 엑셀 파일로 돌아가서 원하는 작업을 수행합니다.
엑셀 파일에서 "CreateNameBadges" 서브루틴을 실행하려면 Alt + F8을 눌러서 매크로 실행 창을 열고, "CreateNameBadges"를 선택한 후 실행합니다.
이렇게 하면 파워포인트에 각 이름별로 한 페이지씩 명패가 생성됩니다.


[확인]

 
 



실행이 되는 것은 확인을 했으나 디테일한 조정이 필요
더 구체적인 요청으로 완성도를 높일 필요가 있음



728x90