[VBA] 각 Excel 셀의 값을 각 슬라이드 제목으로 PowerPoint 자동 생성

슬라이드 당 하나의 사본을 게시하는 PowerPoint를 만들 기회가있었습니다.

100슬라이드 정도라면 수작업으로도 그렇게 시간이 걸리지 않는다고 생각합니다만, 카피가 3,000 이상 오는 예정으로, 수정도 생각하면 좀더입니다.

또한 카피 라이팅에 필요한 줄 바꿈이 들어 있기 때문에 Excel에서는 셀을 열고 복사해야합니다. (그렇게 하지 않으면 전후에 더블 쿼테이션["]이 붙어 버려, 나중에 지워 가는 것도 귀찮습니다.)

그런 이렇게 수작업으로 하기에는 시간이 지나치게 낭비했기 때문에 오랫동안 VBA 조립했습니다.

전제



원본 복사본은 Excel에 1 복사본 1 셀의 형태로 저장되어 있습니다.
나중에 스타일을 일괄 성형하는 데 슬라이드 마스터를 사용할 수 있으면 편하기 때문에 타이틀 모양에 넣어 가기로했습니다. (타이틀 모양에 넣어두면 슬라이드 마스터로 스타일을 일괄 변환할 수 있습니다.)

또한 이 VBA는 Windows용 Office365에서 만들었습니다. (Mac에서는 검증하지 않았습니다.)

Excel 상태



형식은 뭐든지 좋지만, 1 카피 1 셀의 형태로 격납되어 있는 것으로 합니다.
이번에는 모든 것을 채용하지 않을 가능성을 생각하여 「채용」열을 만들고, 거기에 우선도를 숫자 입력한 것을 필터한다고 가정하고 있습니다.
내용은 적당히 만들었습니다만 ↓ 이런 이미지입니다.



이와 같이 필터 한 상태에서 대상 셀을 일괄 선택한다고 가정합니다.
(이 이미지의 경우 B2 ~ B27을 선택하는 이미지)

VBA



VBA의 전체상은 ↓ 이런 느낌입니다. 매우 간단!
Sub ExcelToPowerPoint()
Dim pp, ps, sl As Object
Dim i, rowCount As Long
Dim r, c As Object
Dim rng As Range

' 選択範囲のうち表示されているセル範囲のみ取得
Set rng = Selection.SpecialCells(xlCellTypeVisible)
' PowerPoint オブジェクト作成
Set pp = CreateObject("PowerPoint.Application")
With pp
    ' PowerPoint 表示
    .Visible = True
    ' PowerPoint ファイル新規作成
    Set ps = .Presentations.Add
    ' 選択範囲の行でループ
    For Each r In rng.Rows
        ' 選択範囲の列でループ
        For Each c In r.Columns
            With ps.Slides
                ' スライドを(タイトルのみレイアウトで)追加
                Set sl = .Add( _
                    Index:=.Count + 1, _
                    Layout:=11)
                ' タイトルシェイプにループ時のカレントセルの内容を挿入
                sl.Shapes(1).TextFrame.TextRange.Text = c.Text
            End With
        Next c
    Next r
    ' オブジェクトをクリア
    Set sl = Nothing
    Set ps = Nothing
End With
Set pp = Nothing
End Sub

이것을 Excel VBA의 표준 모듈로 등록합니다.

VBA의 흐름 해설


  • 선택 범위 중 표시되는 셀 범위 정보를 얻는다
  • PowerPoint 개체 생성
  • PowerPoint 표시
  • PowerPoint 파일 새로 만들기
  • 선택 범위의 행과 열로 루프 처리
  • PowerPoint 슬라이드 (타이틀 전용 레이아웃) 추가
  • 제목 모양에 셀 내용 설정
  • 선택 범위분 6,7을 반복한다

  • 만든 PowerPoint



    ↓이런 느낌이 한순간에 생겼습니다.

    개행도 제대로 반영되고 있습니다.

    요약



    이번에 만든 것은 수요가 적습니다만, VBA는 역시 편리하다고 생각했습니다.

    ** 주의 **
    VBA는 버전과 OS 환경에 따라 다르므로,
    이용되는 경우는 자기책임으로 부탁합니다🙏

    좋은 웹페이지 즐겨찾기