본문 바로가기

반응형

코딩/엑셀,VBA

[엑셀/VBA] Object(개체)와 각 Obejct간의 관계 엑셀 VBA로 엑셀 자동화 코드를 작성해야 하는 경우 각 Obejct간의 관계를 알고있으면 도움이 된다. (이 부분은 파이썬에서 win32com 엑셀 자동화를 다룰 때도 동일한 내용으로 알고 있으면 코드를 쉽게 이해할 수 있다.) 여기서 Object란게 무엇인지 궁금해질 수 있다. 구글링을 하면 Obejct = 개체라고 표현한다. 어떤 자료를 볼 때, 개체 또는 Object라고 표기되어있다면 동일한 것을 표현한다고 보면 된다. 1. 개체(Object)에 대한 개념 참고자료들을 들춰보니 개체(Object)의 예시를 들 때, 자동차에 관련 된 예시를 많이 드는 것 같다. 자동차는 굉장히 수많은 부품의 집약체이다. 이 각각의 부품을 개체(Object)라고 한다. 이 개체(Object)는 3가지 구성요소를 가지.. 더보기
[엑셀/VBA] 엑셀 Database SQL 사용하기 1편 - ADODB.Recordset 엑셀과 데이터베이스를 연동하기 위해 필요한 사용법을 정리. 먼저 기본적인 사용법을 정리하기 위해 임의의 데이터베이스(엑셀 파일)을 두고 VBA에 SQL 쿼리를 추가하여 데이터를 불러오는 코드를 작성하였다. 이번 편에서는 다루는 코드는 기능적으로는 이전에 포스팅했던 Getobject 함수를 사용한 내용과 동일하다. 참고링크 : 2021.08.19 - [코딩/엑셀,VBA] - [엑셀/VBA] 엑셀 다른 파일에서 데이터 가져오기 : Getobject 함수 사용하기 이번 포스팅과 차이점은 이전 포스팅은 Getobject를 통해 파일에 접근하여 데이터를 복사해서 가져왔다면, 이번 편은 가져올 데이터를 데이터베이스 취급하고 다른 파일의 엑셀 데이터를 SQL 쿼리로 가져온다는 것이다. 참고로, 구글링을 해보니 엑셀 .. 더보기
[엑셀/VBA] SpecialCells, CurrentRegion, UsedRange 엑셀을 다뤄본 사람이라면 알겠지만 엑셀에는 Cell을 선택하는 다양한 방법이 존재한다. 참고링크를 보면서 알게 된 내용이지만 Cell을 선택하는 방법 중 Range를 각각 Select하는 방법은 VBA 프로그램에서 속도를 저하시키는 주범이라고 한다. Range를 직접 Select하는 방법보다 SpecialCells, CurrentRegion, UsedRange와 같은 영역 설정 기능들을 활용하는게 효율적이다. 이번 포스팅에서는 엑셀 VBA에서 자주 사용하는 영역 설정 코드 SpecialCells, CurrentRegion, UsedRange에 대한 내용을 알아본다. 설명을 위해 아래와 같이 임의의 데이터를 엑셀 시트에 입력해두었다. 1. CurrentRegion 사용영역만을 선택하는 대표적인 기능. 결과.. 더보기
[엑셀/VBA] 엑셀 다른 파일에서 데이터 가져오기 : Getobject 함수 사용하기 이번 내용은 다른 폴더(또는 같은 폴더)에 있는 다른 엑셀 파일에서 필요한 데이터를 가져오려면 어떻게 해야하되는지에 대해 정리한 내용이다. 이전에는 '같은 엑셀 파일에서 다른 시트의 데이터를 가져오려면 어떻게 해야하는가'?를 정리했었다. 이번 포스팅을 잘 사용하면 여러 엑셀파일과 데이터를 연동하여 VBA 프로그램을 만들 수 있다. (이전 포스팅 : 2021.08.16 - [코딩/엑셀,VBA] - [엑셀/VBA] 엑셀 시트별 모든 데이터 통합하기(합치기)) 엑셀 VBA에서 다른 엑셀 파일에 접근하기 위한 방법은 GetObject라는 함수를 사용하는 것이다. 엑셀 VBA를 공부해본 사람이라면 알겠지만 엑셀에는 Workbook이라는 개체가 존재한다. Workbook이라고 하면 "ActiveWorkbook'이나.. 더보기
[엑셀/VBA] 엑셀 시트별 모든 데이터 통합하기(합치기) 이번 엑셀 VBA 포스팅은 엑셀 파일의 시트별 데이터를 통합시트에 모두 취합하는 코드를 작성하려고 한다. 코드를 작성하기 전에 작성 Concept은 아래와 같이 정리해본다. Concept 1. 데이터가 있는 시트(DATA1,2,3,4...)와 "통합"시트가 한 파일에 존재한다. DATA 시트는 아래 이미지로는 5개지만 더 많아져도 상관없다. Concept 2. 시트별로 임의로 작성한 모델 및 가격 데이터가 있다. 시트명이 'DATA1'이라면 모델명은 1-알파벳으로 되어있다. 만약 시트명이 'DATA2'라면 2-알파벳인 데이터가 있다. Concept 3. VBA 코드 실행시 "통합"시트에 아래 이미지 처럼 모든 데이터를 취합한다. 먼저 전체 VBA 코드 및 결과부터 확인해보자. 1. 전체 코드 및 결과 O.. 더보기
[엑셀/VBA] 정적 배열, 동적 배열(ReDim, ReDim Preserve) 이번 포스팅은 엑셀 VBA의 정적 배열과 동적 배열에 관한 내용이다. 2 종류의 배열에 대해 요약하자면 정적배열은 크기가 정해진 배열을 말한다. 초기에 배열을 선언할 때, 배열의 총 사이즈를 정한다. 동적배열은 크기가 정해지지 않은 배열이다. 코드를 동작시키며 이름그대로 동적으로 배열의 크기를 변화시킬 수 있다. 아래는 예시를 통해 정적배열과 동적배열의 사용법에 대해 정리해보고자 했다. 1. 정적 배열 1) 1차원 배열 서론에서 설명했지만 정적배열은 크기가 정해진 배열이다. 1차원 배열의 변수선언은 아래와 같이 할 수 있다. #배열 선언법1 Dim 변수명(시작 Index To 끝 Index) as 변수Type 아래 예시 코드 디버깅을 통해 1차원 배열 변수선언을 확인해보도록 하겠다. Sub 정적배열() .. 더보기
[엑셀/VBA] Option Explicit(명시적 선언 사용하기) 엑셀 VBA에는 option Explicit(명시적 선언)이라는 구문이 있다. 요약해서 설명하자면, 다른 프로그래밍 언어와 마찬가지로 변수를 사용하려면 변수명이 무엇인지, 변수의 타입이 무엇인지에 대한 정의가 있어야 한다. 이를 '변수 선언'이라한다. 엑셀 VBA에서 option Explicit(명시적 선언 구문)을 작성해주면 사용하는 변수에 대해서는 모두 타입이 정의되어있어야 한다. 이를 설명하기 위해 엑셀의 묵시적 선언과 명시적 선언을 먼저 이해해보도록 하자. 1. Implicit declaration(묵시적 선언 : 변수 선언을 하지 않는 경우) 예시를 보며 이해해보자. 먼저 명시적 선언 구문이 없을 때 어떤 식으로 변수에 값이 저장되는지 확인해보도록 하겠다. 아래 코드는 a라는 변수에 100을 저.. 더보기
[엑셀/VBA] 사용자 정의 함수(Custom Function) 만들기 이번 엑셀 VBA 포스팅에서는 사용자 정의 함수(Custom Function)을 만드는 방법에 대해 정리해보려고 한다. 먼저 아래 점수표를 예시로 평균이 80점 이상인 학생들에 대해 합격/불합격(PASS/FAIL)을 판정하는 함수를 구현해보려고 한다. 나중에 파이썬 xlwings와 엑셀을 연동할 때 내가 필요한 엑셀 함수를 VBA를 통해 구현하면 좀더 프로그램 속도 측면에서 효율적이지 않을까 싶다. 일반적으로 합격/불합격을 판정하기 위해선 이미 엑셀에서 기본적으로 제공하고있는 AVERAGE 함수와 IF 함수를 사용하면 쉽게 구현할 수 있다. 아래와 같이 말이다. 이번 포스팅은 사용자 정의 함수를 연습하는 내용으로 위 합격여부 판단을 하는 함수를 사용자 정의 함수로 만들어보려고 한다. 먼저 기존 VBA 개.. 더보기

반응형