VBA Macro 45

[파워포인트 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..

[엑셀 VBA] 셀 내용 보존하면서 셀 병합하기

매크로 실행 동영상 여러 셀을 병합하면 첫 셀을 제외한 나머지 셀은 내용을 잃는다. 이 매크로는 병합 대상 셀의 모든 내용을 보존하면서 병합을 수행하는 매크로이다. 코드를 응용하면 조건에 따라 반복적인 보존병합을 수행할 수 있다. 꽤나 다양하게 응용 가능하다. VBA Code 예시 Option Explicit Sub merge_maintain_content() Dim targetR As Range '병합 범위 Dim mergeStr As String '병합 내용 변소 Dim eachR As Range '셀 순환용 객체 Application.DisplayAlerts = False '병합시 대화창 Off Set targetR = Application.InputBox("병합할 범위를 선택하세요", Type:=..

VBA Macro/VBA Excel 2018.07.28

[파워포인트 VBA] 차트 데이터레이블 일괄 변경 매크로

매크로 설명 파워포인트 차트의 데이터레이블 설정을 일괄적으로 변경하는 매크로이다. 특히 데이터레이블 위치를 임의로 변경하는 노가다를 해야하는 경우에 유용할 것 같다. 이 매크로는 엑셀을 통해 파워포인트의 차트를 제어하는 방식으로 작동한다. 파워포인트의 차트 개체모델에 접근하는 방식과 엑셀의 차트 개체모델에 접근하는 방식이 다르기 때문에, 엑셀에 적용하는 경우에는 오류가 발생 수도 있다. 매크로 실행 동영상 VBA Code Option Explicit Sub chart_batch() Dim pptRef As PowerPoint.Application Dim curSlide As Long Dim shName As String Dim objChart As PowerPoint.Chart Dim seriesCnt,..

[VBA] Early Binding Vs. Late Binding

Early Binding과 Late Binding의 차이 Binding은 "묶다"는 어원적 의미에서부터 설명하자면, 어떤 개체 변수를 설정하는 것과 관련된 개념이다. Early Binding은 변수 선언 단계에서 이미 myPPT 변수를 PowerPoint.Application으로 지정한다. 반면, Late Binding은 변수 선언 단계에서 myPPT 변수를 단순히 Object로 선언하고, 개체를 생성하는 단계에서 나중에 PowerPoint.Application을 지정한다. 변수 선언 측면에서 별 차이가 없어보일 수 있지만, 이후의 코드 작성이 완전히 달라진다. Early Binding을 통한 코딩의 경우, 아래 예시와 같이 .WindowState = 까지만 기입하면 이후에 입력할 수 있는 변수 목록이 ..

VBA Macro 2018.05.07

[파워포인트 VBA] 그림 크기 일괄 변경하기 (엑셀에서 제어)

매크로 설명 기존 포스팅에서 이와 유사한 매크로를 다루었지만, 사소하지만 꽤나 중대한 문제가 있었기에 리뉴얼해서 올린다. 사소하지만 꽤나 중대한 문제라 함은, 기존에 만든 매크로의 경우 파워포인트 프로그램에서 실행된다. 이 경우 해당 PPT 파일을 매크로가 사용가능한 .pptm으로 변경하고 코드를 복붙하고 실행해야 하는 번거로움이 있었다. 이를 해결하기 위해 엑셀을 통해 PPT 파일을 제어하도록 변경한 매크로이다. 정상적으로 작동하려면 PowerPoint Object Library 참조를 추가해주어야 한다. VBA 편집기 화면 -> 도구 -> 참조 -> Microsoft PowerPoint ##.# Object Library를 찾아서 체크 -> 확인 매크로 실행 동영상 VBA Code Option Exp..

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

화이트 밸런스를 눈대중으로 맞추기 어려운 경우에 가끔 사용하려고 제작했다. 사진의 각 픽셀을 건너뛰면서 컬러 샘플링을 하고, 지정한 검출 한계(변수: 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 실제 사용 중인 영역의 경계 선택하기

S Y N O P S I S #VBA로 사용 중인 영역의 경계 선택하기 보통 사용 중인 영역을 Application.UsedRange로 설정하여 작업을 수행하게 되는데, 간혹 엑셀 시트를 만지다보면 데이터가 없는 영역인데도 불구하고 UsedRange가 선택하는 경우가 있다. 이 경우에는 셀 서식이 변경되었거나 변경 후 삭제를 했으나 저장을 하지 않은 경우 UsedRange로 인식할 수 있다. 이를 해결하기 위해 UsedRange가 아닌 실제 데이터 값만 들어 있는 UsingRange를 인식하도록 구현한 매크로이다. VBA Code Option Explicit Sub usingRng() Dim firstRow As Long Dim firstCol As Long Dim lastRow As Long Dim l..

VBA Macro/VBA Excel 2018.03.07

엑셀 VBA를 이용하여 포토샵 이미지 리사이즈 및 저장

매크로 설명 엑셀의 VBA 코드를 활용하여 포토샵 이미지를 리사이즈 하고 Export까지 수행하는 매크로이다. 인스타그램을 하다보니 최종편집 후 1080 사이즈의 이미지를 만드는 게 귀찮기도 하고, 포토샵의 액션 기능을 사용하는 경우 원본 Document의 사이즈에 따라 크기가 제멋대로 나와서 만들어 보았다. 가로 이미지와 세로 이미지를 인식하여 장축이 가로인 경우에는 가로가 1080이 되도록, 세로가 장축인 경우에는 세로가 1080이 되도록 리사이즈한다. VBA Code Option Explicit Sub resize_image() Dim appPhoto As Photoshop.Application Dim docPhoto As Photoshop.Document Dim imgSize As Double D..