데이터를 타이핑하는 대신 간단히 옵션을 클릭해서 선택해서 입력하고 싶다면
엑셀로 하는 것이 간편하고 효율적입니다.
'과일' 이름이 들어갈 셀을 선택하고 나서
데이터 > 데이터 유효성검사를 누르고 원본에 '사과,배,딸기,바나나'를 입력하면 됩니다.
원본란에 시트의 특정 셀 영역을 선택해도 됩니다.
◆ ◆ ◆ ◆ ◆
파워포인트에서 VBA를 활용해야 합니다.
ListBox 나 ComBoBox를 이용해서 목록을 선택하게 할 수 있습니다.
그런데 파워포인트 Active-X 선택상자는 슬라이드쇼에서만 작동하고
슬라이드쇼를 새로 시작하면 목록이 초기화되어 버리며
또한 선택한 값이 양식상자안에 들어 있어서 값을 가져오기도 어렵습니다.
양식상자에서 선택한 값을 표에 남겨놓는 방법을 써야 합니다.
ComboBox 와 SpinButton 을 이용한 예시를 참고하세요.
아래 첫번째 첨부파일은 하나의 예시이고
슬라이드가 늘어난다면 슬라이드마다 초기화시키는 코드도 계속 늘어나게 됩니다.
◆ ◆ ◆ ◆ ◆
좀 더 제대로 된 인터페이스를 만들려면
Form 창을 띄우고 입력하면 각 슬라이드의 표에 데이터가 들어가는 방식으로 만들어야겠습니다.
두번째 첨부파일은 좀 더 슬라이드 기반의 데이터베이스 관리 샘플입니다.
아래 화면처럼 +를 누르면 편집창(UserForm)이 뜹니다.
옵션값을 선택해서 현재 슬라이드에 저장하거나
새 슬라이드를 추가하고 값을 저장하거나
삭제할 수 있습니다.
작동 화면입니다.
UserForm1 에 사용된 코드:
Option Explicit
'폼이 열릴 때
Private Sub UserForm_Activate()
InitOptions
End Sub
'Private Sub UserForm_Initialize()
' InitOptions
'End Sub
'콤보박스 초기화
Sub InitOptions()
Dim myList As Variant
Dim i As Integer, str As String
Dim sld As Slide, shp As Shape, tbl As Table
Set sld = SlideShowWindows(1).View.Slide
Set shp = sld.Shapes("Table 1")
Set tbl = shp.Table
'콤보박스 초기화
myList = Array("과일1", "과일2", "과일3", "과일4")
'원래 선택한 옵션 복구
str = tbl.Cell(1, 2).Shape.TextFrame.TextRange.Text
With ComboBox1
.list = myList ' 초기값 적용
For i = 1 To .ListCount '기존 선택값과 같은 옵션 선택
If .list(i - 1) = str Then .ListIndex = i - 1: Exit For
Next i
End With
myList = Array("스포츠1", "스포츠2", "스포츠3", "스포츠4")
str = tbl.Cell(2, 2).Shape.TextFrame.TextRange.Text
With ComboBox2
.list = myList
For i = 1 To .ListCount
If .list(i - 1) = str Then .ListIndex = i - 1: Exit For
Next i
End With
myList = Array("색깔1", "색깔2", "색깔3", "색깔4")
str = tbl.Cell(3, 2).Shape.TextFrame.TextRange.Text
With ComboBox3
.list = myList
For i = 1 To .ListCount
If .list(i - 1) = str Then .ListIndex = i - 1: Exit For
Next i
End With
End Sub
'레코드 저장
Sub SaveData(sld As Slide)
Dim tbl As Table
Dim str(0 To 2) As String
str(0) = Me.ComboBox1.Value
str(1) = Me.ComboBox2.Value
str(2) = Me.ComboBox3.Value
'새로 입력
sld.Shapes("No").TextFrame.TextRange.Text = sld.SlideIndex
Set tbl = sld.Shapes("Table 1").Table
tbl.Cell(1, 2).Shape.TextFrame.TextRange.Text = str(0)
tbl.Cell(2, 2).Shape.TextFrame.TextRange.Text = str(1)
tbl.Cell(3, 2).Shape.TextFrame.TextRange.Text = str(2)
Me.hide
End Sub
'현재 슬라이드 저장
Private Sub CommandButton1_Click()
SaveData SlideShowWindows(1).View.Slide
End Sub
'추가
Private Sub CommandButton2_Click()
Dim sld As Slide
Set sld = SlideShowWindows(1).View.Slide
'슬라이드 추가
With ActivePresentation.Slides
Set sld = .Item(sld.SlideIndex).Duplicate(1)
sld.MoveTo .Count
End With
'저장
SaveData sld
'이동
SlideShowWindows(1).View.GotoSlide sld.SlideIndex
End Sub
'삭제
Private Sub CommandButton3_Click()
Dim sld As Slide
Dim tbl As Table
Me.hide
Set sld = SlideShowWindows(1).View.Slide
If sld.SlideIndex = 1 Then
Set tbl = sld.Shapes("Table 1").Table
tbl.Cell(1, 2).Shape.TextFrame.TextRange.Text = ""
tbl.Cell(2, 2).Shape.TextFrame.TextRange.Text = ""
tbl.Cell(3, 2).Shape.TextFrame.TextRange.Text = ""
Else
sld.Delete
'번호 정리
For Each sld In ActivePresentation.Slides
sld.Shapes("No").TextFrame.TextRange.Text = sld.SlideIndex
Next sld
End If
End Sub
'닫기
Private Sub CommandButton4_Click()
Me.hide
End Sub
상황에 따라 다르기 때문에 초보자가 만들기는 어려울 수 있습니다.
데이터 목록을 열람하고 편집, 삭제, 검색 등 데이터베이스를 관리하기에는
아무래도 엑셀이 더 편리하고 효율적이겠습니다.
참고: 지식인
'PPT+VBA' 카테고리의 다른 글
슬라이드 썸네일 크기와 여백을 지정해서 유인물 인쇄 (0) | 2024.10.29 |
---|---|
구글 스트리트 뷰를 슬라이드에 삽입하기 (1) | 2024.10.13 |
텍스트 상자를 단어 단위로 분리하기 (0) | 2024.10.01 |
애니메이션 점수판 자동 생성 (2) | 2024.09.18 |
글머리 기호 Bold체 해제 (4) | 2024.09.07 |
엑셀 명단 이용하여 PPT 명찰 출력(ppt 메일 머지) (0) | 2024.08.15 |
Bing Wallpaper 슬라이드 쇼 생성 (0) | 2024.08.09 |
파워포인트에서 16이상 원문자 삽입하기 (0) | 2024.07.29 |
최근댓글