S Y N O P S I S #PPT추가기능 #표사이즈자동맞춤

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

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

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

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


  • 메인 코드


    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
                                    '컬럼 사이즈를 임의로 늘린다.
                                    '근데 이게 잘 안먹힌다. 약간의 렉이 있어서 그런지
                                    '사이즈가 늘려지기 전에 다음 코드로 넘어가버린다.
                                    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.


    댓글을 달아 주세요

    S Y N O P S I S #엑셀VSTO추가기능 #셀병합 해제 #같은 내용으로 채우기

  • VSTO를 통해 개발한 첫 번째 엑셀 추가기능이다.
  • 기존에 VBA 매크로로 제작했던 포스팅(링크-새창)을 추가기능으로 만든 것이다.
  • 설치 방법은 다음과 같다.
  • 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음)
  • 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로 실행)
  • 3) 다음, 설치를 클릭하면 설치가 완료된다.

  • 사용 방법은 다음과 같다.
  • 1) 병합된 셀 범위 지정 (1개 셀만 선택하면 다시 선택하라는 메시지 발생)
  • 2) CELL_CTRL 추가기능 탭의 UnMergeCell 단추 클릭
  • ※ 하나의 열만 지정할 수도 있고, 다수의 열을 지정해도 상관 없다.
  • ※ 엑셀 2013 버전을 기준으로 제작하였기 때문에 다른 버전과의 호환성은 아직 장담하지 못한다.
  • ※ 추후 업데이트를 통해 지속적으로 배포할 예정이다.

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




  • 추가기능 실행 동영상






    UnMergeCell_v1.0.0.2.zip



     Copyright (2018) Ruahneuma. All Rights Reserved.


    댓글을 달아 주세요

    S Y N O P S I S #엑셀VSTO추가기능 개발 #VSTO AddIn #CustomTaskPane

  • 이전 포스팅(링크-새창)에서 사용자정의 작업창을 통해 달력 추가기능을 개발한 예제에 이어서
  • 사용자정의 작업창을 리본메뉴와 연동하고, 리본메뉴를 통해 작업창을 켜고 끌 수 있도록 하는 예제이다.
  • 이전 포스팅과 마찬가지로 MS Office의 Synchronizing a Custom Task Pane with a Ribbon Button 예제를 번역한 내용을 바탕으로 재구성하였다.
  • (원문링크-새창)


  • 리본메뉴 버튼과 사용자정의 작업창 연동


    이 예제는 리본메뉴의 토글버튼을 통해 사용자정의 작업창을 켜고 끄도록 하는 예제이다.
    사용자정의 작업창을 개발할 때는 반드시 On/Off 인터페이스를 디자인해주어야 한다.
    MS Office 앱에서 기본적으로 유저가 사용자정의 작업창을 On/Off 하는 인터페이스를 제공하지 않기 때문이다.
    
    역자 주 개발자 스스로 만들어주어야 한다는 의미이다.
    이렇게 하지 않을 경우, 추가기능을 최초 실행 단계에서 자동으로 실행하는 때 이에외는
    추가기능을 다시 실행할 방법이 없다. 앱을 종료했다가 다시 실행해야 한다.
    


    리본메뉴에 토글버튼 추가하기


    a) 프로젝트 메뉴를 클릭하고, 사용자정의 컨트롤 추가를 누른다.
    b) 새 항목 추가 대화창에서 리본(비주얼 디자이너)을 클릭한다.
    c) 리본의 이름을 ManageTaskPaneRibbon으로 지정하고 추가를 누른다.
    d) 그러면 ManageTaskPaneRibbon.vb 파일이 생성되고, [디자인] 창에는 기본적인 그룹, 탭 구성 항목이 나타난다.
    e) 리본 디자이너에서 그룹1(Group 1)을 클릭한다.
        (속성창이 기본적으로 활성화되어 있는 경우에는 클릭만으로 되지만,
         속성창이 활성화되지 않은 경우 오른쪽 클릭을 해서 속성창을 임의로 실행해줘야 한다.)
    
    

    f) 속성창에서 Label 속성을 Task Pane Manager로 변경한다. (이렇게 하면 리본메뉴의 Group 1으로 표시되던 항목이 Task Pane Manager로 변경된다.) g) 도구상자의 리본 컨트롤 탭에서, 토글 버튼을 Task Pane Manager 그룹으로 끌어다 놓는다. (도구상자; Control Box가 보이지 않는 경우, 보기(v) - 도구상자(X)) h) ToggleButton1을 클릭(Gourp1의 Label을 변경할 때와 마찬가지로, 우클릭을 해서 속성창을 실행해준다.) I) Togglebutton1의 Label을 Show Task Pane으로 변경한다. 여기까지 끝냈다면 디자인적인 부분은 완료되었다. 실제 사용자정의 작업창과 연동하기 위해 코드를 작성해야 한다.


    사용자정의 작업창 제작하기


  • 여기서부터는 본격적인 코딩이다.
  • 앞선 프로젝트에서 만들어 둔 달력 컨트롤 예제 코드를 활용할 것이다.
  • 따라서 MSDN 예제상의 코드와 일부 상이한 부분이 있을 수 있다.


  • 사용자정의 작업창 만들기
    a) 솔루션 탐색기에서 PowerPoint 확장(왼쪽 모서리 작은 화살표)
    b) ThisAddIn.vb를 마우스 오른쪽 클릭. 코드 보기(View Code)
    c) 다음 코드를 ThisAddIn.vb 클래스에 삽입.
    
    Private myUserControl1 as myUserControl 'myUserControl 변수 선언
    Private WithEvents myCustomTaskPane As Microsoft.Office.Tools.CustomTaskPane '이벤트와 연동되는(WithEvents) CustomTaskPane 변수 선언
    
    
    d) ThisAddIn_Startup 이벤트 처리기의 코드를 다음의 코드로 변경
        이 코드는 myUserControl1 개체를 사용자정의 작업창 필드에 추가하는 코드이다.
    
    Private Sub ThisAddIn-Startup(Byval sender As Object, Byval e As System.EventArgs) Handles Me.Startup
        myUserControl1 = New MyUserControl()
        myCustomTaskPnae = Me.CustomTaskPanes.Add(myUserControl1, "Calendar")
        myCustomTaskPane.Visible = True
    
    e) 다음 코드를 ThisAddIn 클래스에 추가한다.
        이 메서드는 VisibleChanged 이벤트를 처리한다.
        사용자가 사용자정의 작업창을 닫았을 때,
        즉 사용자정의 작업창의 닫기(x) 단추를 눌렀을 때 리본메뉴의 토글버튼 상태를 업데이트하는 역할을 한다.
    
    Private Sub myCustomTaskPane_VisibleChanged(Byval sender As Object, Byval e As System.EventArgs) Handles myCustomTaskPane.VisibleChanged
    Globals.Ribbons.ManageTaskPaneRibbon.ToggleButton1.Checked = myCustomTaskPane.Visible
    
    
    f) 다음 코드를 ThisAddIn 클래스에 추가한다.
       이 (TaskPane) 속성은 Private 상태인 myCustomTaskPane 개체를 다른 클래스에 노출시킨다.
       다음 단계에서 리본메뉴의 코드를 작성하면서 이 TaskPane 속성을 사용할 것이다.
    
    Public ReadOnly Property TaskPane() As Microsoft.Office.Tools.CustomTaskPane
        Get
            Return myCustomTaskPane
        End Get
    End Property
    

    토글버튼으로 사용자정의 작업창 On/Off


    a) 리본 디자이너에서 ShowTaskPane 버튼 더블클릭
       Visual Studio는 자동적으로 toggleButton1_Click 이벤트 처리기를 생성한다.
       동시에 ManageTaskPaneRibbon.vb 파일을 연다.
    b) toggleButton1_Click 이벤트 처리기 코드를 다음의 코드로 바꾼다.
       이 코드는 사용자가 토글버튼을 클릭했을 때
       토글버튼의 상태와 상관없이 사용자정의 작업창을 켜고 끄는 역할을 한다.
    
    Private Sub ToggleButton1_Click(ByVal sender As System.Object, ByVal e As Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) Handles ToggleButton1.Click
         Globals.ThisAddIn.TaskPane.Visible = TryCast(sender, Microsoft.Office.Tools.Ribbon.RibbonToggleButton).Checked
     End Sub
    


    실행 동영상



     Copyright (2018) Ruahneuma. All Rights Reserved.


    댓글을 달아 주세요

    1. 2018.09.30 14:30 높이뛰기  댓글주소  수정/삭제  댓글쓰기

      관리자의 승인을 기다리고 있는 댓글입니다

     «이전 1 2 3 4 ··· 26  다음»

    티스토리 툴바