VBA Macro 45

엑셀 VBA로 포토샵 이미지 크기 변경

매크로 설명 포토샵은 Action Batch로 세세한 사항까지 자동화할 수 있지만, VBA를 보다 풍부하게 다루어보고 공부해보기 위해 카테고리를 따로 두어 만들어 보았다. 본 매크로는 포토샵에서 Document가 활성화되어 있는 경우에만 작동한다. VBA 편집기에서 도구 -> 참조 -> Adobe Photoshop [Version] Object Library를 추가해주어야 한다. 포토샵 개체모델 참조: 포토샵 스크립팅 가이드 https://www.adobe.com/devnet/photoshop/scripting.html VBA Code Option Explicit Sub photoshop_touching() Dim appPhoto As Photoshop.Application Dim docPhoto As ..

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

매크로 설명 셀 또는 셀 범위를 선택하여 해당 셀 크기에 맞게 사진을 삽입하는 매크로이다. 선택된 셀이 범위인 경우 해당 셀을 병합한 뒤에 삽입한다. 매크로를 사용하는 방법은 아래 동영상 참고 매크로 실행 동영상 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 unMergeCells() Dim i As Long Dim myCol As Long Dim lastRow As Long With ActiveSheet.UsedRange lastRow = .Row + .Rows.Count - 1 End With For myCol = 1 To 3 '1~3열까지만 ..

VBA Macro/VBA Excel 2018.01.24

[엑셀] VBA로 스택 구현

S Y N O P S I S #VBA로 스택 구현하기 VBA로 구현한 스택이다. 별 건 없다. 필요할 때 가져다 쓰려고 만들어봤다. VBA Code Option Explicit Option Base 0 Const MAXI = 5 'stack 크기 설정 Dim myTop As Long Sub myStack() Dim myArr() As Variant myTop = -1 ReDim Preserve myArr(MAXI) 'stack 크기만큼 배열 초기화 Call push(myArr, "아이템 1") Call push(myArr, "아이템 2") Call pop(myArr) Call pop(myArr) End Sub Function push(ByRef fn_arr() As Variant, ByVal fn_ite..

VBA Macro/VBA Excel 2018.01.14

[엑셀] 유사 단어의 일치도(%) 산출 매크로

S Y N O P S I S #유사한 단어의 일치도(%) 산출하기 유사한 단어의 일치도(%)를 산출한다. 구체적으로 두 단어 사이의 최대 연속 부분의 일치도를 산출하는 매크로이다. 예컨대 "기계자동차공학부"와 "자동차공학과"를 비교했을 때, (전자를 기준으로) 전체 8개 글자 중에서 5개 글자가 일치하므로 5/8 = 62.5%가 일치하는 셈이다. 연속된 글자일 경우에만 산출한다. 불연속 글자의 경우는 일부 코드의 수정이 필요하다. 예시는 전문대학 공학계열 학과 리스트 중에서 찾는 단어(GoalText)의 일치도를 산출한다. 예시 영상에서 100% 일치인데 40%로 나오는 건 괄호와 숫자가 있기 때문. VBA Code Option Explicit Sub max_common_text() Dim lastRow..

VBA Macro/VBA Excel 2018.01.13

[엑셀] 글자 수 세기 (사용자 정의 함수)

# 특정 문자열에서 지정한 글자가 몇개 있는지 세어주는 매크로. # 사용자 정의 함수를 활용하여 엑셀 시트 내에서 함수처럼 쓸 수 있다. # 문자열이 있는 셀 주소를 참조할 수도 있고, 문자열을 직접 설정할 수도 있다. # 대소문자를 구분한다. VBA Code #1 Option Explicit Function cntChr(ByVal target As Variant, ByVal txt As Variant) Dim i As Long Dim cnt As Long Dim start As Long cnt = 0 start = 1 i = 1 Do If InStr(start, target, txt) > 0 Then '찾는 글자가 있으면(>0) cnt = cnt + 1 '카운트를 증가하고 start = InStr(st..

VBA Macro/VBA Excel 2018.01.11

[엑셀] DOM 방식의 웹페이지 정보 가져오기 (사이트 추천)

# http://automatetheweb.net/ 사이트 추천(클릭하면 링크로 이동)# DOM(Document Object Model) 방식의 웹페이지 크롤링에 관한 내용을 다루고 있다.# 군더더기를 다 빼고 오로지 웹페이지 크롤링만을 다룬다. (매우 깔끔하게 정리되어 있다.) # 엑셀을 활용해서 웹페이지를 크롤링 하는 방법은 크게 두 가지로 나눌 수 있는데,# 1. 웹페이지를 관리하는 서버에 필요한 데이터를 직접 요청하는 방식 (Set WHTTP = CreateObject("WinHTTP.WinHTTPrequest.5")와 같은 형식으로 서버에 수신 요청을 보내는 방식)# 2. 위 사이트에서 제시하는 DOM 방식 (정확히는 DOM 방식이 아니라 DOM을 지향하는 웹페이지의 개체(Object)를 건드리..

VBA Macro/VBA Excel 2017.12.22

[엑셀] 같은 내용인 경우에 셀 병합하는 매크로

매크로 설명 특정 열에서 같은 내용이 반복적으로 나타나는 경우 해당 셀들을 병합하는 매크로이다. 데이터 활용에 있어서 셀 병합을 선호하지 않지만, 정리를 위해서 가끔식 필요한 매크로이다. 대략적으로 만들어서 빈 셀 처리 등은 문제가 발생할 수 있다. (매크로를 실행하기 전 시트를 백업해두자.) 사용 조건: 예시 동영상과 같이 빈 셀이 없어야 한다. 빈 셀이 없도록 데이터를 예쁘게 만져놓아야 한다. 매크로 실행 동영상 VBA Code Option Explicit Sub mergeCells() Dim i As Long Dim marker As Long Dim lastRow As Long Dim mergeCol As Long Application.DisplayAlerts = False '병합시 발생하는 대화창..

VBA Macro/VBA Excel 2017.12.19