MS 추가기능 및 앱 개발

[파워포인트 추가기능 배포] 표 셀크기(열) 자동맞춤 VBA

루아흐뉴마 2018. 9. 20. 10:59
반응형







추가기능 사용방법


  • VSTO를 통해 개발한 파워포인트 추가기능이다.
  • 열의 개수가 많은데 직접 표 사이즈를 조정하기 번거로웠던 점을 해소하고자 만들었다.
  • 엑셀의 AutoFit 기능과 유사한 기능이라 생각하면 된다.

  • 설치 방법
  • 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음)
  • 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로 실행)
  • 3) 다음, 설치를 클릭하면 설치가 완료된다.

  • 사용 방법
  • 1) 자동맞춤 할 표를 선택(아무것도 선택하지 않을 경우 오류메시지 발생)
  • 2) 루아흐뉴마 추가기능 탭의 TableAutoFit 단추 클릭
  • ※ 표의 사이즈가 작아서 특정 텍스트가 개행(Enter)되어 있는 경우 제대로 실행되지 않는다.
  • ※ 모든 텍스트가 한 줄에 나타나도록 표 사이즈를 충분히 늘인 다음 추가기능을 실행한다.
  • (이 문제에 대한 해답을 가지고 계시거나 더 좋은 아이디어가 있는 경우 알려주시기 바랍니다.)

  • 삭제하는 방법
  • 1) 시작 -> 제어판 -> 프로그램 및 기능
  • 2) 설치 날짜를 기준으로 내림차순 정렬
  • 3) 설치된 프로그램을 선택하여 제거


추가기능 실행 동영상




메인 코드(언어: VB)


Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) Handles Button1.Click

        Dim sld As PowerPoint.Slide = CType(Globals.ThisAddIn.Application.ActiveWindow.View.Slide, PowerPoint.Slide)
        Dim i As Long, j As Long
        Dim max_w As Double

        max_w = 0 'max_w 초기화

        Try
            If Globals.ThisAddIn.Application.ActiveWindow.Selection.Type = PowerPoint.PpSelectionType.ppSelectionNone Then
                MsgBox("Select Any Table", vbOKOnly) '아무것도 선택하지 않은 경우 오류메시지 활성화
                Exit Sub    '매크로 종료
            Else

                If Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange.Count = 1 Then
                    Dim shp As PowerPoint.Shape = TryCast(Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange(1), PowerPoint.Shape)
                    If shp.Type = Microsoft.Office.Core.MsoShapeType.msoTable Then
                        For j = 1 To shp.Table.Columns.Count
                            For i = 1 To shp.Table.Rows.Count
                                shp.Table.Columns(j).Width = 3000
                                '컬럼 사이즈를 임의로 늘린다.
                                '근데 이게 잘 안먹힌다. 약간의 렉이 있어서 그런지
                                '사이즈가 늘려지기 전에 다음 코드로 넘어가버린다.

                                '2019년 8월 9일 업데이트
                                '약간의 렉이 있는 것이 아니라, Table 개체의 셀크기를 변경해도
                                '전체 표 사이즈가 커지지 않음.

                                With shp.Table.Cell(i, j).Shape.TextFrame
                                    If max_w < .TextRange.BoundWidth + .MarginLeft + .MarginRight Then
                                        max_w = .TextRange.BoundWidth + .MarginLeft + .MarginRight
                                    End If
                                End With
                            Next i
                            shp.Table.Columns(j).Width = max_w   '최대열너비 설정
                            max_w = 0   '열너비 초기화
                        Next j
                    End If
                Else
                    MsgBox("표를 하나만 선택하세요", vbOKOnly)
                End If
            End If
        Catch ex As Exception
            MsgBox(ex.ToString())
        End Try
    End Sub



PPT_Table_AutoFit_1.0.0.2.zip

 Copyright (2018) Ruahneuma. All Rights Reserved.


반응형