【PowerPoint】 슬라이드를 지정한 수마다 무작위로 표시

소개



전회 기사 【PowerPoint】 슬라이드를 랜덤으로 표시 그럼 2장까지 밖에 세트로 바꿀 수 없었습니다만, 이번은 수치를 지정하면 복수 세트로 나눌 수 있도록 작성했습니다.
사용법이나 설정 방법은 마지막 기사를 참조하십시오.



준비


  • 코드는 슬라이드 모듈에 기술된다. (이전과 동일.)
  • 슬라이드 종료시 매크로를 실행합니다. (이전과 동일.)
  • 제목 슬라이드 (슬라이드 1)에 "inputTextbox"라는 오토 셰이프를 만듭니다.
    거기에 입력된 숫자를 바탕으로 슬라이드를 나누는 구조.
    예를 들면, 「7」을 입력하고 있으면 7장마다(타이틀 슬라이드 제외) 랜덤으로 배분한다.

  • 슬라이드를 지정된 수의 세트로 교체



    코드


    
    Public Sub OnSlideShowTerminate(ByVal Wn As SlideShowWindow)
    
        Dim sld As Long
        Dim cnt As Long
        Dim i As Long
        Dim sld1 As Slide
        Dim shp As Shape
        Dim setNumber As Long
        Dim arry() As Variant
    
        cnt = ActivePresentation.Slides.Count
    
        Set sld1 = ActivePresentation.Slides(1)
    
        Set shp = Shapes("inputTextbox")
    
        sld1.Select
    
        If ActiveWindow.ViewType = ppViewSlideSorter Then
    
            ActiveWindow.ViewType = ppViewNormal
    
        End If
    
        shp.Select
    
        setNumber = shp.TextFrame.TextRange.Text
    
        If IsNumeric(setNumber) = False Then
    
            MsgBox ("数値を入力してください。")
    
            Exit Sub
    
        End If
    
    
        If cnt < 2 * setNumber Then
            MsgBox ("スライド数が足りません。")
            Exit Sub
    
        ElseIf cnt = 2 Then
            MsgBox ("スライド数を2以上にしてください。")
            Exit Sub
        End If
    
        If setNumber = 1 Then
            GoTo L1:
    
        ElseIf Not cnt Mod setNumber = 1 Then
            MsgBox ("スライド数をセットした倍数にしてください。")
            Exit Sub
        End If
    
    L1:
    
        ActiveWindow.ViewType = ppViewSlideSorter
        Randomize
    
        For i = 1 To cnt
    
            sld = (cnt - 2) * Rnd + 2
    
            If (sld - 2) Mod setNumber = 0 Then
    
                ReDim arry(setNumber)       
    
                For k = 0 To setNumber - 1
                    arry(k) = sld
                    sld = sld + 1
                Next k
    
                ActivePresentation.Slides.Range(arry).Select
                ActiveWindow.Selection.Cut
                ActivePresentation.Slides(cnt - setNumber).Select
                ActiveWindow.View.Paste
    
            Else
                i = i - 1
            End If
        Next i
        ActiveWindow.ViewType = ppViewNormal
    End Sub
    

    해설



    지난번 보다 변경한 부분을 해설합니다.
    Set sld1 = ActivePresentation.Slides(1)
    

    슬라이드(1)를 변수에 대입.
    Set shp = Shapes("inputTextbox")
    

    "inputTextbox"라는 이름의 도형을 변수에 대입. 이름은 슬라이드(1)에서 작성한 도형의 이름으로 한다.
    sld1.Select
    

    슬라이드(1)를 선택.
    If ActiveWindow.ViewType = ppViewSlideSorter Then
        ActiveWindow.ViewType = ppViewNormal
    End If
    

    에러 등으로 슬라이드 리스트 모드로 되어 있는 경우는 표준 모드로 되돌린다.
    shp.Select
    

    슬라이드 (1)의 "inputTextbox"를 선택.
    setNumber = shp.TextFrame.TextRange.Text
    

    입력한 수치를 세트수에 대입.
    If IsNumeric(setNumber) = False Then
        MsgBox ("数値を入力してください。")
        Exit Sub
    End If
    

    만약 수치가 아닌 경우 매크로 종료.
    If cnt < 2 * setNumber Then
        MsgBox ("スライド数が足りません。")
        Exit Sub
    
    ElseIf cnt = 2 Then
        MsgBox ("スライド数を2以上にしてください。")
        Exit Sub
    End If
    

    슬라이드 수가 바꿀 수 보다 적은 경우 매크로 종료.
    If setNumber = 1 Then       
        GoTo L1
    
    ElseIf Not cnt Mod setNumber = 1 Then
        MsgBox ("スライド数をセットした倍数にしてください。")
        Exit Sub
    End If
    L1:
    
    

    세트한 수가 1일 때는 매크로 계속.
    슬라이드 수가 세트한 수로 나눌 수 없는 경우, 매크로 종료.
    If (sld - 2) Mod setNumber = 0 Then
    

    슬라이드 번호를 타이틀 슬라이드 제외 setNumber의 배수로 지정.
    ReDim arry(setNumber)
    

    배열을 재정의.
    For k = 0 To setNumber - 1
        arry(k) = sld
        sld = sld + 1
    Next k
    

    슬라이드 번호를 세트 수 저장한다.
    Else
        i = i - 1
    End If
    

    조건외일 때 반복횟수를 늘린다

    요약



    "슬라이드를 지정한 수마다 무작위로 표시"에 대해 설명했습니다.
    꼭 활용해 주세요.

    좋은 웹페이지 즐겨찾기