데이터를 타이핑하는 대신 간단히 옵션을 클릭해서 선택해서 입력하고 싶다면

엑셀로 하는 것이 간편하고 효율적입니다.

'과일' 이름이 들어갈 셀을 선택하고 나서

데이터 > 데이터 유효성검사를 누르고 원본에 '사과,배,딸기,바나나'를 입력하면 됩니다.

원본란에 시트의 특정 셀 영역을 선택해도 됩니다.

◆ ◆ ◆ ◆ ◆

파워포인트에서 VBA를 활용해야 합니다.

ListBox 나 ComBoBox를 이용해서 목록을 선택하게 할 수 있습니다.

그런데 파워포인트 Active-X 선택상자는 슬라이드쇼에서만 작동하고

슬라이드쇼를 새로 시작하면 목록이 초기화되어 버리며

또한 선택한 값이 양식상자안에 들어 있어서 값을 가져오기도 어렵습니다.

양식상자에서 선택한 값을 표에 남겨놓는 방법을 써야 합니다.

ComboBox 와 SpinButton 을 이용한 예시를 참고하세요.

아래 첫번째 첨부파일은 하나의 예시이고

슬라이드가 늘어난다면 슬라이드마다 초기화시키는 코드도 계속 늘어나게 됩니다.

프레젠테이션2ComboBox1.pptm
0.05MB

◆ ◆ ◆ ◆ ◆

좀 더 제대로 된 인터페이스를 만들려면

Form 창을 띄우고 입력하면 각 슬라이드의 표에 데이터가 들어가는 방식으로 만들어야겠습니다.

두번째 첨부파일은 좀 더 슬라이드 기반의 데이터베이스 관리 샘플입니다.

 

DB관리1.pptm
0.07MB

아래 화면처럼 +를 누르면 편집창(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

 

 

상황에 따라 다르기 때문에 초보자가 만들기는 어려울 수 있습니다.

 

​데이터 목록을 열람하고 편집, 삭제, 검색 등 데이터베이스를 관리하기에는

아무래도 엑셀이 더 편리하고 효율적이겠습니다.

 

 

 

참고: 지식인