728x90

Excel - VBA 59

VBA에서 Web 정보 가져오기 (Web Scraping)

Web Page에서 원하는 정보를 가져와서 재구성하거나 필요한 파일을 Web에서 다운로드 할 때, 또는 RESTful API를 이용하여 정보를 획득할 때 등등 Web에서 필요한 정보를 가져오기 하는 함수입니다. Web 스크래핑에 사용할 수 있는 개체는 대략 3가지 정도입니다. MSXML2.XMLHTTP.6.0, MSXML2.ServerXMLHTTP, WinHttp.WinHttpRequest.5.1 각각 속도와 장단점이 있기 때문에 일반적으로 XMLHTTP6.0을 사용하고 나머지 2개는 필요한 경우에 별도로 지정을 하도록 합니다. On Error Resume Next Select Case UseObject Case 1 ''// 일반적인 환경에서 속도가 빠름, OAuth처럼 Redirect가 필요한 경우에 ..

Excel - VBA 2023.07.11

VBA CreateObject("htmlfile")을 이용한 URL Encode 및 HTML Entity 제거

RESTful API를 사용할 때에 URL에 옵션 내용을 넣어야 하는 경우 URL Encode를 해야 합니다. Excel은 2013버전부터 내장함수로 ENCODEURL()을 지원하고 있으나, 그 이전 버전도 사용해야 하므로 아래와 같이 간단한 코드로 Encoding을 할 수 있습니다. Function EncodeURL(Text As Variant) '// Application.ENCODEURL은 Excel2013부터 지원함 Dim oHTML As Object: Set oHTML = CreateObject("htmlfile") oHTML.parentWindow.execScript "function encode(s) {return encodeURIComponent(s)}", "jscript" EncodeUR..

Excel - VBA 2023.07.10

VBA로 인터넷 연결을 확인하기

인터넷에 연결되어 있는지는 윈도우 API를 사용하여 확인이 가능합니다. Window API를 사용할 수 있도록 정의 #If Win64 Or VBA7 Then Public Declare PtrSafe Function InternetGetConnectedState Lib "wininet.dll" (ByRef dwflags As Long, ByVal dwReserved As Long) As Long #Else Public Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef dwflags As Long, ByVal dwReserved As Long) As Long #End If API를 사용하여 연결된 상태를 확인합니다. 관련된 상수는 아래와..

Excel - VBA 2023.07.10

Filter된 영역에서 Macro 작업하기

AutoFilter를 사용중인 영역에서 Macro작업을 할 필요가 있을 때에 이미 설정된 Filter 정보를 저장했다가 Macro 작업 이후 다시 동일한 설정을 할 필요가 있을 때 아래와 같이 Backup 및 Restore를 할 수 있습니다. 먼저 필터가 적용중인 주소를 저장할 변수를 설정합니다. Private cFilteredAddress As Variant '필터된 영역의 주소 저장용 필터를 백업할 때는 각 열마다 필터된 첫번째 내용(Criteria1), 연산자(Operator), 두번째 내용(Criteria2)를 배열을 이용하여 저장해 둡니다. Public Function BackUpFilters(sh As Worksheet) Dim FilterArray As Variant Dim col As In..

Excel - VBA 2023.07.03

길이 0인 문자열 제거하기

수식에서 IFERROR(수식, "") 처럼 결과를 길이가 0인 문자열로 설정한 경우나 이를 값으로 복사/붙여넣기 한 경우 값은 없지만 실제로는 빈셀이 아닌 경우에 이를 제거하도록 하는 매크로입니다. 수식이 있는 경우 제외하는 선택을 할 수 있습니다. Sub RemoveZeroLengthString() Dim vData As Variant, vFormula As Variant, ExcludeFormula As Variant, iRow As Long, iCol As Long, r As Long, c As Long ExcludeFormula = MsgBox("수식이 들어 있는 셀은 제외할까요?", vbYesNoCancel) If ExcludeFormula = vbCancel Then Exit Sub Exclu..

Excel - VBA 2023.06.28

VBA 배열(Array) 관련 유용한 함수

VBA에서 배열(Array)을 이용할 때 유용한 함수로 자주 사용하는 것들을 모아 놓은 것입니다. 2023-05-22 TransposeArray 수정하고, SliceArray 추가 □ IsArray() : 배열인지 아닌지 확인하는 함수 - 변수를 Variant로 선언하고 VarArray = UsedRange.Value2 처럼 Range를 직접 배열에 할당하는 경우 배열이 초기 상태는 Empty라서 IsArray 결과 값은 False이고, 할당된 이후에는 True가 되어 할당 여부를 확인할 때 사용 □ getDimension() : 배열이 1차원인지, 2차원인지 확인하는 함수 결과값 : 배열이 아니면 0, 1차원 배열은 1, 2차원 배열은 2,,,, Public Function getDimension(va..

Excel - VBA 2023.05.22

샘플링 검사 (KS Q ISO 2859-1) 다회 샘플링 방식 지원 함수

KS Q ISO 2859-1 에서 규정하는 계수형 합격판정 샘플링 검사에 대해서 필요로 하는 정보를 함수로 구현한 것입니다. 여기 소개된 함수들은 EGTools 추가기능에 추가되었습니다. (v3.7.7) 1회 샘플링 검사에 대한 내용만 필요하면 아래를 참고하세요. https://egtools.tistory.com/entry/ISO2859-SAMPLING 여기에 올린 파일은 1회샘플링 검사 방식뿐만 아니라 2회 샘플링 검사 방식과 다회샘플링 검사 방식에 대해서도 사용할 수 있도록 확장하였습니다. 표준에서 기술한 샘플링표는 첨부 문서 안에 그대로 옮겼습니다. 1회 샘플링 방식의 판정은 알기 쉬우므로 2회와 다회 샘플링 방식의 판정 기준을 설명합니다. □ 2회 샘플링 방식의 판정 기준 1차 검사 : 샘플수 n..

Excel - VBA 2023.05.20

DatePicker 만들기 - 3 (레이블 이벤트를 이용한 날짜 선택)

□ 레이블이벤트를 사용할 클래스 추가 및 동작 지정 삽입 - 클래스 모듈 (이름 : cLblEvents ) WithEvents를 사용하여클래스 내부에 이베트를 가진 레이블을 추가 (이름: lbl ) 동작 : 레이블을 클릭하거나 더블클릭하면 Tag에 있는 날짜를 SelectedDate 인터페이스를 통해 지정 선택된 날짜를 기재하고 폼은 숨기기 Public WithEvents lbl As MSForms.Label Private Sub lbl_Click() If Left(lbl.Name, 3) = "lbD" Then lbl.Parent.SelectedDate = CDate(lbl.Tag) lbl.Parent.Hide End If End Sub Private Sub lbl_DblClick(ByVal Cancel..

Excel - VBA 2023.05.05

DatePicker 만들기 - 2 (레이블을 이용한 Calendar 날짜 정리)

□ DatePicker에서 사용할 내부 변수 및 인터페이스 설정 내부에서 사용할 변수로 date_Selected를 선언 이 변수를 설정하고 읽어올 인터페이스를 정의 (Let, Get) Private date_Selected As Date Public Property Let SelectedDate(argDate As Date) date_Selected = argDate End Property Public Property Get SelectedDate() As Date SelectedDate = date_Selected End Property □ 달력을 만드는 프로시저 생성 인수 : 연도(필수), 월(필수), 일(선택) 레이블의 이름을 기준으로 레이블 컨트롤을 지정하여 날짜 및 서식을 적용 (lbD1~42,..

Excel - VBA 2023.05.05

DatePicker 만들기 - 1 (Calendar용 User Form 준비)

□ User Form 추가 이름 : formCalendar Caption : DatePicker 날짜에 사용할 Control을 선택 : 명령단추나 레이블 등을 사용할 수 있는데 여기 설명에는 레이블(Label) 기준으로 진행 □ 주차명에 해당하는 레이블 생성 왼쪽에 주차번호를 넣고, 일~토요일 7개를 넣어야 하므로 적절한 위치에 첫번째 레이블 생성 첫번째 레이블 - 이름 : lbT1 - 크기 : Width = 15, Height = 15 - Caption : 일 - TextAlign : fmTextAlignCenter - Font : 맑은 고딕, 보통, 크기=10 두번째 ~ 일곱번째 레이블 : 첫번째를 복사 - 이름을 lbT2 ~lbT7 으로 수정하고, Caption을 월~토 로 수정하고 적절한 간격으로..

Excel - VBA 2023.05.05
728x90