반응형

EXCEL - VBA 132

주소 결합 시 '산' 다음에 선택적으로 공백 추가하기(사용자 지정 함수)

2024.05.15 - [EXCEL - VBA] - 소재지, 특지구분, 본번, 부번 합치기(2) - VBA위 글에서 매크로로 소재지, 특지 구분, 본번, 부번을 결합하는 것을 해봤는데,이번에는 사용자 지정 함수를 만들어 보겠습니다.(영어로 User-Defined Function이므로 '사용자 정의 함수'라고 하는 것이 맞을 듯한데, 엑셀에서는 사용자 지정 함수라는 용어를 사용하네요) 1. 로직로직은 매크로나 같습니다.특지 구분에 '산'이 있으면 소재지 다음에 공백 한 칸과 '산'을 결합하고, 없으면 빈칸으로 처리하고,부번이 있으면 본번과 부번을 하이픈(-)으로 연결하고 없으면 본번만 표시하는 것입니다. 그런데 사용자 지정 함수에서는 이에 더해 옵션을 줘서 '산' 다음에 공백 한 칸을 둘 것인지를 지정할 ..

EXCEL - VBA 2025.04.15

VBA - vworld 사이트에서 토지 특성 조회(6) : 디버깅

1. 법정동코드 가져오는 URL 확인가. 지역 창은 실패사이트에 접속해서 정보를 가져오는 것이므로 URL이 제대로 됐는지가 제일 중요합니다.  ' 법정동 코드 조회 검색 URL 만들기(domain 지정안해도 됨) base_url = "https://api.vworld.kr/req/address" params = "?service=address&request=getcoord&version=2.0&crs=epsg:4326" params = params & "&address=" & WorksheetFunction.EncodeURL(dong & " " & jibun) params = params & "&refine=true&simple=false&f..

EXCEL - VBA 2025.03.17

VBA - vworld 사이트에서 토지 특성 조회(5) : 코드 설명(2)

(15) 토지특성속성 조회 URL 생성        ' 토지 특성 조회 URL 만들기(기준연도 초기값 올해)         base_url = "http://api.vworld.kr/ned/data/getLandCharacteristics"         params = "?pnu=" & pnu & "&format=xml" & "&key=CEB52025-E065-364C-9DBA-44880E3B02B8" '        params = params & "&numOfRows=3"         params = params & "&stdrYear=" & Year(Date)              ' search_url을 base_url과 params의 결합으로 함         search_url = bas..

EXCEL - VBA 2025.03.14

VBA - vworld 사이트에서 토지 특성 조회(4) : 코드 설명(1)

5. 코드 설명(1) 명시적 변수 선언 요구Option Explicit변수 선언을 명시적으로 하라는 선언입니다. 이렇게 해야 변수의 데이터 형식이 틀어지거나, 값이 잘못 들어가는 오류를 예방할 수 있으므로 필수입니다. (2) Sub 프로시저 시작과 종료Sub parse_xml()    변수선언 및 값 할당, 실행문 등End SubSub 프로시저는 일정한 동작을 처리하는 것으로, 처리한 후 값을 반환하는 Function 프로시저와 구분됩니다. 본 매크로에서는 URL을 작성한 후 VWorld 사이트에서 조회한 후 검색결과를 워크시트에 기록하는 전체적인 처리를 Sub 프로시저에서 처리하는데, VWorld에서 조회한 후 검색 결과를 반환하는 부분을 Function 프로시저로 처리했습니다. 다시 말하면 Sub 프..

EXCEL - VBA 2025.03.13

VBA - vworld 사이트에서 토지 특성 조회(3) : 코드

매크로가 저장되지 않은 엑셀 파일은 아래와 같습니다 4. 코드가. 전체 구성크게 parse_xml이라는 Sub 프로시저 1개와 search_value와 fail이라는 Function 2개로 구성되어 있습니다.Sub 프로시저 하나로 해도 되지만 공통되는 부분을 Function으로 뺐으며, 내용은 아래와 같습니다.이것도 내용별로 구분할 수도 있을 겁니다.Option ExplicitSub parse_xml() Dim xmlDoc As Object Dim ws As Worksheet Dim xmlHttp As New MSXML2.ServerXMLHTTP60 Dim base_url As String, params As String, search_url As String Dim d..

EXCEL - VBA 2025.03.12

VBA - vworld 사이트에서 토지 특성 조회(2) : 도구 - 참조에서 XML v6.0 추가

3. 준비 사항 가. 개발 도구 탭 표시개발 도구 탭이 보이지 않는다면 파일 - 옵션 - 리본 사용자 지정 옵션을 누른 후 확인 버튼을 누릅니다.  그러면 보기 오른쪽에 개발 도구 탭이 표시됩니다. 나. 작업 파일 위 파일을 엽니다. 다. VB 에디터 열기개발 도구 탭을 누른 후 코드 그룹에서 Visaul Basic을 누릅니다. 그리고, get_land_char.xlsx 파일이 선택된 상태에서 삽입 - 모듈을 눌러  모듈을 추가합니다.왼쪽 get_land_char.xlsx 아래에 모듈과 Module1이 표시되고, 오른쪽에 빈 코드 창이 열립니다. 라. 도구 - 참조 - XML, v6.0에 체크VBA로 매크로를 만들 때 도구 - 참조를 추가할 일이 거의 없는데,XML 파일을 처리하기 위해서는 도구 - 참조..

EXCEL - VBA 2025.03.11

VBA - vworld 사이트에서 토지 특성 조회(1) : 토지특성속성조회 API

1. 토지특성속성 조회 APIvworld 사이트에서 토지특성을 조회하는 API는vworld.kr에서 접속한 후오픈API 메뉴 아래 API 레퍼런스를 누른 후 나오는 목록에서국가중점데이터API의 레퍼런스를 누릅니다. 그러면 레퍼런스를 검색하는 화면이 표시되는데,서비스 란에 '토지특성'이라고 입력하고 엔터 키를 누르면 토지특성WMS, WFS와 속성이 표시되는데, 토지특성속성조회를 선택합니다. 2. 상세 내용가. 요청 변수 그러면, 상세 내용이 표시되는데 위에 요청 변수(pnu: 고유번호, stdrYear: 기준연도, format: 응답결과 형식, key: 인증키 등)가 있고, 나. 출력 결과그 아래에 출력결과가 표시되는데, 코드명(pnu, ldCode 등)과 설명(고유번호, 법정동코드 등)이 표시됩니다. ..

EXCEL - VBA 2025.03.10

범위를 지정하는 방법(2) - Selection

이번에는 Selection을 이용해 매크로를 수정해 보겠습니다. Application.InputBox를 이용한 방법은아래 글을 참고 바랍니다.범위를 지정하는 방법(1) - Application.InputBox 1. 코드범위를 입력받지 않고 선택된 범위를 이용하므로코드도 간결해집니다.Sub 하이픈지우기2() Dim c As Range If IsEmpty(Selection) Then End Else For Each c In Selection c = WorksheetFunction.Substitute(c, "-", "") Next End IfEnd Sub 에러를 처리하는 구문이 없고(On Error Resume Next),범..

EXCEL - VBA 2025.02.21

범위를 지정하는 방법(1) - Application.InputBox

엑셀 작업할 때 범위를 대상으로 많이 작업을 합니다. 작업된 영역을 선택할 때는 CurrentRegion을 사용하고,기준 열의 맨 아래 줄까지 한 줄씩 작업할 때는 맨 아래줄을 알아내기 위해 Cells(Rows.count, "A").End(XlUp).Row를 사용합니다(여기서는 Rows.Count는 맨 아래 줄의 행 수를 가리킵니다). 그리고, 작업 시 범위를 입력받을 때는 Application.InputBox를 사용해 직접 입력을 하도록 하는데, 예) Application.InputBox("작업 범위를 선택하세요", type:=8) 이미 지정된 범위에서 작업할 때는 Selection을 이용하면 됩니다.  1. 바꾸기Ctrl + H키를 누르거나, 홈 탭 - 편집 그룹에서 '찾기 및 선택' 아래 바꾸기를 ..

EXCEL - VBA 2025.02.20

지정된 색이 포함된 행을 위로 올리기

1. 문제차량이 여러 대 있는데, 도착하는 순서대로 B열에 파란색을 칠하면'미도착'을 '도착'으로 바꾼 다음 맨 처음인 경우는 해당 행을 2행으로 이동하고그다음부터는 파란색 다음(아래) 행으로 이동하는 것을 반복한다고 가정해 보겠습니다.   2. 해결 방안색이 변하면 할 때 생각나는 것이 Worksheet_SelectionChange 이벤트입니다.그리고, 파란색이 여러 개일 경우 맨 아래로 배치되어야 하므로 For Each 문을 반복해서 파란색인지 체크하는 구문이 필요합니다. 가. 개발 도구개발 도구를 클릭한 후 Visual Basic을 누르고,  완료여부체크.xlsx 파일의 Sheet1을 클릭합니다. 그리고, 오른쪽 '일반'이라고 쓰여 있는 곳을 누르면 Worksheet가 있는데 선택하면 '선언'이라고..

EXCEL - VBA 2025.02.19
반응형