728x90

Excel - VBA 59

[Excel] 기존 리본 메뉴에 Custom 그룹 삽입하기

순전히 기억을 위해서 기록해 둡니다. 리본메뉴에 새로운 Tab을 만들어 사용하는 건 기존에 해 왔기 때문에 문제가 없었는데,,, Excel의 기본 Tab 메뉴에 추가하려고 할 때의 방법 부분에 기본 Tab 메뉴의 idMso를 사용 부분에 새로 id 및 label에 새로 삽입할 이름을 넣고, insertAfterMso나 insertBeforeMso에 삽입하려는 기본 메뉴의 그룹 이름을 사용해서 지정합니다. 그런데, 기본 Excel의 idMso를 찾기가 어려워서,,, 한참을 해매었다는,,, 찾은 site는 여기입니다. https://excelbaby.com/learn/idmso-full-list-in-excel-for-windows/ 나중에 또 찾을까봐 여기에 저장해 둡니다. (2022년 버전) Excel에..

Excel - VBA 2023.11.27

[VBA] CheckBox를 쉽게 이용하자

Excel 양식에 CheckBox를 넣으려면 양식도구를 이용해서 추가하여 사용하는데, 실제로 일반 사용자가 사용하기에는 익숙하지 않은 도구입니다. 이를 위하여 사용자가 쉽게 CheckBox를 셀에서 사용할 수 있도록 해 봅니다. 이 기능은 Microsoft 365에서 기본기능으로 추가할 예정인 것을 미지원 버전에서 사용할 수 있도록 모사 구성한 것입니다. https://insider.microsoft365.com/en-us/blog/simplify-data-entry-and-reduce-errors-with-checkboxes-in-cells EGTools를 사용하시는 분은 v3.9.5에서 지원하기 때문에 중복으로 사용시 문제 발생할 수 있습니다. 기본적인 아이디어는 셀서식중 조건을 반영할 수 있는 것을..

Excel - VBA 2023.11.26

[VBA] 선택한 행/열 강조하기

매우 큰 표에서 선택된 셀의 열제목이나 행제목을 쉽게 볼 수 있도록 십자 형태로 셀 색을 바꾸어 줄 수 있습니다. 이미 사용자가 셀에 바탕색을 입력했을 수도 있으므로 이 것을 훼손하지 않고 작업하려면 조건부 서식을 이용해서 선택된 경우에만 표시가 되고, 그렇지 않은 경우에는 원래의 색이 표시되도록 합니다. 주의할 점은 이 기능을 사용하면 모든 선택 변경시마다 "매크로가 실행" 되므로 Excel의 "되돌리기(Undo)" 기능은 작동하지 않게 됩니다. 우선 아래와 같이 이름 관리자에서 "MyRange"나 원하는 이름으로 아무 셀이나 참조대상으로 설정합니다. 주의할 점은 처음 지정하는 "MyRange"이름의 범위(S)에 반드시 "통합 문서"로 지정해야합니다. 처음 지정에 'Sheet1'같이 특정 시트를 지정하..

Excel - VBA 2023.11.25

문제은행 (ExamBank)으로 시험준비 하기

예전에 만들어 둔 파일을 잊어버리지 않으려고 정리해서 올려 둡니다. 시험을 준비할 때, 문제를 써보기만 해도 공부가 조금은 더 되지 않을까요? 시험문제를 입력하면서 한 번 공부하고, 입력한 후에는 문제를 자동으로 섞어서 풀어보고, 틀린 문제는 한 번 더 풀어보고, 내가 입력해 놓은 해설도 보면서 공부 할 수 있는 샘플입니다. ㅁ 시험보기 옵션 설명 진행방식이 "자동"이면 정답을 입력하면 바로 결과가 확인되고, 다음 문제로 넘어 갑니다. 진행방식이 "수동"이면 [정답확인], [다음문제]를 클릭해야 진행이 됩니다. 음성결과가 "무음"이면 소리는 나지 않고, 알림창으로 결과를 알려 줍니다. 음성결과가 "소리"이면 소리로 결과를 알려 줍니다. [정답확인]시 정답인 경우 음성/알림창 내용은 F1의 정답 안내 내용..

Excel - VBA 2023.11.24

[VBA] RTF(Rich Text Format) 을 Plain Text로 변경

RTF 자료를 일반 문자열로 변경이 필요할 때 클래스 모듈을 삽입하고 이름을 clsRTFParsser 로 하고 아래 코드를 삽입합니다. Option Explicit '//32bit 버전 출처 : https://stackoverflow.com/a/1747886 #If VBA7 Then '// 64Bit용에는 PtrSafe 적용, LongPtr로 변경 Private Declare PtrSafe Function GlobalAlloc Lib "kernel32" (ByVal wFlags&, ByVal dwBytes As LongPtr) As LongPtr Private Declare PtrSafe Function GlobalLock Lib "kernel32" (ByVal hMem As LongPtr) As Lon..

Excel - VBA 2023.11.02

[VBA] Characters.Font.Color Error

작성된 시트에서 셀내 글자색을 지정하여 사용한 경우 일부 글자색을 다른 글자색으로 일괄 변경하는 매크로입니다. Cell.Characters(i, j).Font.Color를 이용해서 하는 작업인데, 사용중 알 수 없는 오류가 발생하는 경우가 있습니다. Sub FontColorChange1() Dim C As Range, iCnt As Long, i As Long Dim Color1 As Long, Color2 As Long, Color3 As Long, Color4 As Long, Color5 As Long, Color6 As Long, Color7 As Long, Color8 As Long, Color9 As Long, Color10 As Long, Color11 As Long, Color12 As Lo..

Excel - VBA 2023.10.10

Selenium TakeScreenshot.Copy와 TakeScreenshot.SaveAs

Selenium을 이용해서 지적도와 항공사진을 다운로드 하는 작업을 했는데, 지적도나 항공사진 서비스가 하나의 그림파일로 제공되는 게 아니라 일정크기 구역의 지도를 모자이크로 만드는 것이 대부분이므로 이걸 다운로드 하기 어려워 결국 ScreenShot으로 해결을 합니다. 먼저 사용한 방법이 아래와 같이 스크린 샷을 복사하고 바로 붙여 넣기 하는 방식이었는데, 다운로드 한 지도가 수백장이 되니,,, Excel의 메모리 사용량이 1GB를 넘기게 되었습니다. WD.TakeScreenshot.Copy ActiveSheet.Paste With ActiveSheet.Shapes(ActiveSheet.Shapes.Count) '// 화면캐처라 불필요한 부분 잘라내기 .PictureFormat.CropLeft = CI..

Excel - VBA 2023.09.11

[VBA] Compound class names not permitted

SeleniumBasic을 이용하여 Web을 스크랩할 때 Tag의 class가 아래처럼 기술된 경우 FindElementByClass 방법으로 이 버튼을 클릭하고자 할 때 발생하는 오류와 해결하는 방법입니다. 현위치 1. FindElementByClass를 사용하는 경우 오류 발생 wd.FindElementByClass("btn btnCurrent geoLocation Btn").Click => Compound class names not permitted 오류가 발생 2. FindElementByCss와 Title을 사용하는 방법 wd.FindElementByCss("button[title='현재위치를 표시합니다.']").Click 3. FindElementByCss와 class를 사용하는 방법 wd...

Excel - VBA 2023.09.09

WorkBook과 Worksheet 보호를 암호 없이 해제하기

Excel의 보안은 취약하기 이를 데 없습니다. 예전에는 아주 간단한 문자열 대입하는 코드로도 시트보호 암호를 깨기도 했는데, 지금은 암호입력과 결과 반응 시간을 늘려서 해당 코드를 시간이 주구장창 길어져서 효과가 없는 것 같습니다. 그래서 다른 방법으로 해제하는 방법을 소개하면 아래와 같습니다. Excel 문서 파일은 Zip파일과 같은 형식으로 구성되어 있습니다. 확장자를 아래처럼 .zip으로 변경하고 파일탐색기에서 열어보면 아래와 같이 폴더 구조와 파일들을 볼 수 있습니다. 만약 열기 암호가 설정된 파일이라면 열기 암호를 해제한 후에 볼 수 있습니다. 주요 내용은 xl 폴더 안에 있으므로 xl폴더를 먼저 보면 아래와 같습니다. 여기에 보면 workbook.xml 이라는 파일이 있는데, 여기에 Work..

Excel - VBA 2023.08.28

VBA로 ZIP과 UnZip

Excel 파일인 xlsx, xlsm, xlam, xlsb 등은 모두 기본적으로 Zip파일 형식으로 저장된 파일입니다. 그래서 확장자를 zip으로 바꾸면 파일 내부 구조를 볼 수 있습니다. 물론 읽기 암호를 설정한 경우에는 ZIP파일에 암호를 걸어 둔 것처럼 안을 볼 수 없습니다. 이 파일을 압축해제하면 몇 가지 유용한 처리를 할 수 있습니다. 이 때 사용하기 위한 UnZip과 Zip 소스코드 입니다. UnZip 소스이고, 이 함수는 압축이 해제된 폴더 Path를 반환합니다. Function Unzip(ZipName As Variant) As String Dim UnZipFolder As Variant, BasePath As String Dim FSO As Object: Set FSO = CreateOb..

Excel - VBA 2023.08.27
728x90