파워포인트VBA 20

[파워포인트 VBA] 도형(Shape) 개체 다루기

파워포인트 VBA에서 도형 개체 다루기 이번 포스팅은 파워포인트 VBA를 통해 도형 개체를 다루는 방법이다. 파워포인트에서 다루어지는 대부분의 개체는 도형 개체(Shape Object)이다. 도형 개체에는 그림, 선, 표, 텍스트상자, 차트 등 수없이 많다. 도형 개체가 매우 다양하기 때문에 여기서는 표(Table Object)를 중심으로 설명한다. 이하의 설명은 표 이외의 모든 도형 개체에 적용될 수 있는 내용이다. 여기서 다루는 예제는 기본적으로 마이크로소프트 MSDN의 개체모델을 참고하였다. 파워포인트 개체모델 링크(새창) 해당 링크에서 원하는 Object를 찾으려면 좌측의 Filter by Title에서 Object를 검색하거나 직접 스크롤해서 Object를 찾으면 된다. 테이블 개체(Table ..

[파워포인트 추가기능 배포] 표 행렬 전환하기

추가기능 사용방법 표의 행렬을 전환하는 기능이다. 기존의 표를 전환하는 게 아니라 행렬 전환된 새로운 표를 생성한다. 표의 스타일은 복사하지 못하기 때문에 값만 전환한다. ※병합된 셀이 있는 경우에도 가능하다. 설치 방법 1) 첨부파일의 압축 파일을 압축 해제한다. (아무 곳이듯 상관 없음) 2) setup.exe 파일을 (반드시)관리자 권한으로 실행한다. (마우스 오른쪽 클릭 -> 관리자 권한으로 실행) 3) 다음, 설치를 클릭하면 설치가 완료된다. 사용 방법 1) 표 선택 2) 루아흐뉴마 탭 클릭 3) TableTranspose 클릭 삭제하는 방법 1) 시작 -> 제어판 -> 프로그램 및 기능 2) 설치 날짜를 기준으로 내림차순 정렬 3) 설치된 프로그램을 선택하여 제거 추가기능 실행 동영상 메인 코..

[파워포인트 VBA] 전체 슬라이드 글씨 색깔 바꾸기

매크로 설명 파워포인트 각 슬라이드의 텍스트 서식 중에서 색깔을 일괄적으로 변경하는 매크로이다. 파워포인트 슬라이드가 많아질수록 직접 변경하기 번거로울 때 사용하면 좋다. 변경되는 Shape는 텍스트를 가진 텍스트박스, 도형, 표의 모든 텍스트이다. 파워포인트가 실행되어 있어야 하고, 코드는 엑셀에 작성하여 제어하는 방식이다. 엑셀 개발자도구에서 PowerPoint Object Library를 참조해주어야 한다. ※ 차트의 글씨 색깔은 변경하지 않는다. (참고) 적용 결과 매크로 실행 동영상 VBA Code Option Explicit Sub c_changer() Dim pptRef As PowerPoint.Application Dim sld As PowerPoint.Slide Dim shp As Pow..

사진 속 중간회색 찾기(화이트밸런스 맞추기) 매크로

화이트 밸런스를 눈대중으로 맞추기 어려운 경우에 가끔 사용하려고 제작했다. 사진의 각 픽셀을 건너뛰면서 컬러 샘플링을 하고, 지정한 검출 한계(변수: thr)만큼의 회색인 경우 샘플러를 찍어두는 로직이다. 사진 크기가 클수록 검출하는 데 오래걸리기 때문에 건너뛰는 픽셀(변수: stepPx)수를 조금씩 변경하면서 찾는 편이 빠르다. 중간회색을 찾은 이후에는 Curve 툴로 회색지점(또는 회색이 되어야 하는 지점)을 찍어주어 화이트밸런스를 맞출 수 있다. VBA Code Option Explicit Sub auto_gray_finding() Dim appRef As Photoshop.Application Dim docRef As Document Dim lyrRef As ArtLayer Dim lyrs As ..

엑셀에서 특정 문자로 나열된 셀 내용을 새로운 행을 추가하여 구분하기

매크로 설명 지난 번 포스팅을 약간 수정하여 보다 보편화된 상황에서 사용할 수 있도록 만든 매크로이다. (http://ruahneuma.tistory.com/57 "강제 줄바꿈 셀 분리하기") 특정 구분자(예, 콤마, 띄어쓰기, 콜론 등)로 나열된 셀 내용을 행을 추가하여 별도로 분리하는 매크로이다. targetChr 변수에 원하는 구분자를 입력하여 쉽게 분리할 수 있다. VBA Code Sub forced_enter_separation() Dim k As Integer, cnt As Integer Dim varSize As Integer Dim lastRow As Integer Dim myColumn As String Dim targetChr As String With ActiveSheet.UsedRa..

VBA Macro/VBA Excel 2018.03.09

엑셀 VBA로 포토샵 이미지 자르기(불투명 부분 날리기)

매크로 설명 개인적인 필요에 의해서 만든 포토샵 매크로이다. 파노라마 사진을 Merge 하고 남은 투명 배경, 여러 장의 사진을 Stack 모드로 불러와서 Align 했을 때 생기는 투명 배경, 렌즈에 의해 생긴 왜곡이나 수평 맞춤을 했을 때 잘라내야 하는 부분이 직사각형(Rectangle)이 아닌 경우 포토샵의 Trim 기능이 먹히지 않는 경우에 투명 배경만큼을 잘라내는 매크로이다. 전체적인 흐르은 1: 투명 배경의 일부 선택, 2: Grow 기능으로 투명 배경 확장, 3: 투명배경의 좌표(Coordinate) 탐색 및 삭제 동영상을 보면 이해가 쉬울 것으로 생각한다. 원래 사진 작업을 하시는 분들은 Content-aware Fill 기능을 활용하여 원본 픽셀을 보존/확장하면서 훼손을 최소화하지만 본인..

[엑셀] 지정한 셀 크기에 맞게 사진 삽입하기

매크로 설명 셀 또는 셀 범위를 선택하여 해당 셀 크기에 맞게 사진을 삽입하는 매크로이다. 선택된 셀이 범위인 경우 해당 셀을 병합한 뒤에 삽입한다. 매크로를 사용하는 방법은 아래 동영상 참고 매크로 실행 동영상 VBA Code Sub insert_image() Dim selRng As Range Dim rngTop As Double Dim rngLeft As Double Dim rngHeight As Double Dim rngWidth As Double On Error Resume Next Set selRng = Application.InputBox(prompt:="셀 또는 범위를 선택하세요.", Type:=8) '셀 선택 If Err.Number > 0 Then Exit Sub '선택하지 않은 경우 ..

VBA Macro/VBA Excel 2018.03.06

[엑셀VBA] 강제 줄바꿈 셀 분리하기

매크로 설명 워크시트 데이터 중에서 강제 줄바꿈(Alt + Enter)이 들어간 셀을 나누는 매크로이다. 코드의 요점은 강제 줄바꿈이 있는 셀을 찾아서 줄바꿈을 카운트하고 해당 카운트만큼 셀을 삽입하는 방식이다. 필요에 의해 가볍게 쓰려고 만든 코드이다. 곧바로 가져다 쓰기에는 무리가 있을 수 있다. (알맞은 변형이 필요하다.) 매크로 실행 동영상 VBA Code Sub forced_enter_separation() Dim k As Integer, cnt As Integer Dim varSize As Integer Dim myColumn As String Dim lastRow As Integer With ActiveSheet.UsedRange lastRow = .Row + .Rows.Count '마지막 ..

VBA Macro/VBA Excel 2018.03.05

[엑셀] 워크시트의 오류값 리턴(CVErr 함수)

S Y N O P S I S #워크시트의 오류값 리턴하기 VBA 내장 오류코드가 아닌 엑셀 시트의 오류(#N/A 같은)를 반환한다. 오류를 예외로 처리하여 엑셀의 내장함수와 연동하는 경우 유용하다. VBA Code Option Explicit Dim myTop As Long Sub sht_Err() 'CVErr(xlErrDiv0) #DIV/0! 오류 반환 'CVErr(xlErrNA) #N/A 오류 반환 'CVErr(xlErrName) #NAME? 오류 반환 'CVErr(xlErrNull) #NULL! 오류 반환 'CVErr(xlErrNum) #NUM! 오류 반환 'CVErr(xlErrRef) #REF! 오류 반환 'CVErr(xlErrValue) #VALUE! 오류 반환 End Sub 매크로 실행 동영상..

VBA Macro/VBA Excel 2018.03.05

파워포인트에 사용된 이미지 일괄 저장 매크로

매크로 설명 파워포인트 슬라이드에 있는 그림들을 일괄적으로 저장하는 코드를 응용. 파워포인트에 사용된 모든 이미지를 특정 폴더 안에 그 폴더 이름으로 저장하는 매크로이다. 매크로 실행 동영상 VBA Code Option Explicit Sub picSaveAs() Dim i As Long, cnt As Long Dim savePath As String, folderName As String Dim pic As Shape Dim targetFormat As String targetFormat = ".PNG" '그림을 저장할 형식은 PNG With Application.FileDialog(msoFileDialogFolderPicker) .Show If .SelectedItems.Count = 0 Then '..