반응형
추가기능 사용방법
- 표의 행렬을 전환하는 기능이다.
- 기존의 표를 전환하는 게 아니라 행렬 전환된 새로운 표를 생성한다.
- 표의 스타일은 복사하지 못하기 때문에 값만 전환한다.
- ※병합된 셀이 있는 경우에도 가능하다.
- 설치 방법
- 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음)
- 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로 실행)
- 3) 다음, 설치를 클릭하면 설치가 완료된다.
- 사용 방법
- 1) 표 선택
- 2) 루아흐뉴마 탭 클릭
- 3) TableTranspose 클릭
- 삭제하는 방법
- 1) 시작 -> 제어판 -> 프로그램 및 기능
- 2) 설치 날짜를 기준으로 내림차순 정렬
- 3) 설치된 프로그램을 선택하여 제거
추가기능 실행 동영상
메인 코드(언어: C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Tools.Ribbon;
using pptApp = Microsoft.Office.Interop.PowerPoint;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace ppt_tbl_transpose {
public partial class tbl_ctrol {
private void tbl_ctrol_Load(object sender, RibbonUIEventArgs e) {}
private void button1_Click(object sender, RibbonControlEventArgs e) {
try {
pptApp.Presentation pptDoc = Globals.ThisAddIn.GetActivePresentation();
pptApp.Slide curSld = Globals.ThisAddIn.Application.ActiveWindow.View.Slide; //현재 슬라이드
pptApp.Shape curShp = Globals.ThisAddIn.Application.ActiveWindow.Selection.ShapeRange[1]; //Selection을 개체로 반환
//정방형 표 만들기
if (curShp.HasTable == Microsoft.Office.Core.MsoTriState.msoTrue) {
pptApp.Table shpTbl = curShp.Table;
int rows = shpTbl.Rows.Count;
int cols = shpTbl.Columns.Count;
int _max = max(rows, cols);
pptApp.Table shpTbl_Mirror = curSld.Shapes.AddTable(_max, _max).Table; //같은 크기의 정방형 표 생성
for (int i = 1; i < rows + 1; i++) {
for (int j = 1; j < cols + 1; j++) {
shpTbl_Mirror.Cell(i, j).Shape.TextFrame.TextRange.Text = shpTbl.Cell(i, j).Shape.TextFrame.TextRange.Text;
}
}
// 여기서부터 행렬 전환 시작
// 대각선(i = j)을 기준으로 표내용 Swap
for (int i = 2; i < _max + 1; i++) {
for (int j = 1; j < i; j++) {
var temp = shpTbl_Mirror.Cell(i, j).Shape.TextFrame.TextRange.Text;
shpTbl_Mirror.Cell(i, j).Shape.TextFrame.TextRange.Text = shpTbl_Mirror.Cell(j, i).Shape.TextFrame.TextRange.Text;
shpTbl_Mirror.Cell(j, i).Shape.TextFrame.TextRange.Text = temp;
}
}
if (rows > cols) { //행이 열보다 크면 새로생긴 표의 행을 삭제
int rows2 = shpTbl_Mirror.Rows.Count;
for (int i = cols + 1; i < rows2 + 1; i++) { shpTbl_Mirror.Rows[cols + 1].Delete(); }
} else { //반대의 경우 새로생긴 표의 열을 삭제
int cols2 = shpTbl_Mirror.Columns.Count;
for (int i = rows + 1; i < cols2 + 1; i++) { shpTbl_Mirror.Columns[rows + 1].Delete(); }
}
}
}
catch (COMException ex) { // 아무것도 선택하지 않은 경우
MessageBox.Show(text: "표를 선택해주세요.");
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}
public int max(int a, int b) { //큰수 반환 함수
if (a > b) {
return a;
} else {
return b;
}
}
}
}
Copyright (2019) Ruahneuma. All Rights Reserved.
반응형
'MS 추가기능 및 앱 개발' 카테고리의 다른 글
[파워포인트 추가기능 배포] 지정 슬라이드로 이동하기 (0) | 2019.07.30 |
---|---|
[엑셀 추가기능 배포] 빈도수 빠르게 구하기(중복카운트) #2 (0) | 2019.07.21 |
[엑셀 추가기능 배포] 워크시트별로 분할 저장하기 (0) | 2019.07.15 |
[엑셀 추가기능 배포] 빈도수 빠르게 구하기(중복 카운트) (2) | 2019.06.24 |
[파워포인트 추가기능 배포] 표 셀크기(열) 자동맞춤 VBA (3) | 2018.09.20 |