반응형

엑셀VBA 50

[엑셀vba] 상품 코드로 쿠팡 판매정보 불러오기

https://godofexcel.tistory.com/3#comment14309008 [엑셀vba] 쿠팡에 있는 상품을 스크래핑 해보자(feat. 자동로그인) https://godofexcel.tistory.com/106 [엑셀vba] 쿠팡 상품을 스크래핑해보자 (업데이트 버전) 예전에 엑셀vba로 쿠팡에 있는 상품 목록을 스크래핑 하는 프로그램을 만들어봤었다. 기존에 몇가지 기능을 추 godofexcel.tistory.com 위 포스팅의 연장전으로 볼 수 있는 상품코드로 판매정보를 불러올 수 있도록 수정해보았다. A열에 상품코드나 상품명을 입력하면 우측에 정보를 나타내준다. 아주아주 간단한거 같은데 좀 애먹었다..;; 2023.02.04 수정 버전 - 선택 옵션 추가 품절 상품 표시, 인터넷 창 표시..

프로그램/완료 2022.10.07

[엑셀vba] 크롬으로 웹 제어 해보자.(6/15 IE 지원 종료)

안타깝게도 22년 6월 15일부터 IE 실행하면 엣지로 열린다고 한다. 엑셀vba로 웹 컨트롤 할 땐 보통 IE를 이용했지만 이제 못할 듯...흐흑 목차 셀레니움 환경 구축(필수) 셀레니움 기본 사용법 크롬 업데이트 중지(선택) 1. 셀레니움 환경 구축 1.1 셀레니움 설치 https://github.com/florentbr/SeleniumBasic/releases Releases · florentbr/SeleniumBasic A Selenium based browser automation framework for VB.Net, VBA and VBScript - florentbr/SeleniumBasic github.com 셀레니움 베이직 다운로드하고 실행 설치를 하다보면 다음 내용을 볼 수 있다. 무슨..

[엑셀vba] 엑셀 열릴 때 경고 팝업 띄우기(feat.msgbox)

엑셀이 열리면 경고 창이 나타나게 만들어보자! 1. 코드 엑셀vba 편집기 > 프로젝트 창 > Microsoft Excel 개체 > 현재_통합_문서 더블 클릭 또는 우클릭 후 코드 보기 코드창 나타나면 workbook 선택 workbook을 선택하면 자동으로 Open 속성으로 선택된다. msgbox 함수를 이용해 코드를 작성한다. 편집창을 닫고 다른이름으로 저장을 누른다. 저장 할 때 .xlsm 확장자로 해야 코드가 사라지지 않는다.

[엑셀vba] 쿠팡 상품을 스크래핑해보자 (업데이트 버전)

예전에 엑셀vba로 쿠팡에 있는 상품 목록을 스크래핑 하는 프로그램을 만들어봤었다. 기존에 몇가지 기능을 추가로 넣는 업데이트를 감행하였다! (ㄷㄷ;; 별거 아닌데 별거 있는거 처럼하기) 추가된 기능. - 판매자명 추출 여부 설정 - 매크로 동작 중 인터넷 창 활성화 설정 - 페이지 수 적용 - 광고여부 출력 - 택배사 출력 (판매자 정보 활성화 했을 경우) 1. 판매자명 추출 댓글로 판매자명도 같이 나오면 좋겠다라는 의견이 있어서 한 번 만들어봤다. 추후에 사업자번호, 이메일, 연락처 등 다양한 정보도 추가로 제공할 예정이다. 이 기능을 활성화 할 경우 매크로 속도가 오래걸린다는 점은 단점이다. 그 이유는 상품의 상세페이지에 접근해야 판매자 정보를 알아 낼 수 있기때문. 기능 활성화 했을 경우 - 판매..

프로그램/완료 2022.04.17

[엑셀vba] with를 이용해서 편하게 코딩하자

with를 이용하면 보다 짧은 코드를 작성할 수 있다. 어떻게 쓰는지 알아보자. 사용법 Sub with_Test() With Range("A1") .Font.Color = RGB(255, 0, 0) End With End Sub With 함수는 변수, 개체 등을 생략 할 수 있게 만들어준다. 위 예시 코드를 보면 With 옆에 생략할 개체를 넣어줌으로써 With 와 End With 사이에서는 해당 개체를 적지않고 .(온점)만 찍어도 개체의 속성을 사용 할 수 있게 된다. ※ 범위, 셀, 시트 등의 개체가 아니라 변수를 넣어도 됨 ※ vba가 그렇듯 마지막엔 End with 필수! 이중 With Sub with_Test() With Sheets(1) With .Range("A1") .Font.Color =..

[엑셀vba] 파일이름 변경하기 (Name AS)

엑셀vba를 이용해 파일이름을 변경해보자. 변경할 때 쓰는 함수는 Name As 아주 간단하다. 사용법: Name 원본파일 As 변경될파일이름 ex) Name "C:\test\A.txt" As "C:\test\AA.txt" Name As 특징 파일 이름 변경 가능 파일 이동 시킬 수 있음 대소문자 구분하지 않음( a.txt = A.txt , aaaA.txt = Aaaa.txt 같은 파일로 취급) 확장자 변환 가능하지만 데이터 손실됨. 존재하지 않는 파일이면 오류 발생(53 런타임 오류, 파일을 찾을 수 없음) 존재하지 않는 폴더로 이동할 경우 오류 발생(53 런타임 오류, 파일을 찾을 수 없음) Name As 테스트 Sub 파일이름변경하기() Name "C:\test\A.txt" As "C:\test2\..

[엑셀vba] 셀 데이터가 변경되면 옆 셀에 변경된 시간을 표시 해보자!

특정 셀의 데이터가 변경될 경우 언제 바꼈는지 시간을 기록하고 싶을 때가 있다. 간단한 vba 코딩으로 해결해보자! 1. VBA 코드(단일 셀) Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Row > 1 Then Cells(Target.Row, "D") = time End If End Sub Target = 현재 데이터가 변경된 셀 정보 time = 현재 시간 정보 (시분초) now = 오늘 날짜 및 시간 (년월일 시분) 코드 해석: 타켓의 열이 1번(A열)이고 행이 1보다 크다면 타켓의 행번호와 D열에 현재 시간을 입력하라. 2. VBA 코드(범위) Private Sub Worksheet_Chang..

[엑셀vba] InputBOX 함수를 이용해 입력값을 받아보자!

프로그램 동작 중 사용자에게 입력값을 받아야 할 때가 있다. InputBox 함수를 이용해서 해결해 보자! InputBox 사용법 InputBox 함수 입력값 또는 버튼 선택에 따라 다른 코드 진행 입력값 검증 1. InputBox 사용법 Sub Inputbox_Test() InputBox "내용", "제목", "기본값" End Sub Msgbox 함수와 비슷한 인수들을 가지고 있다. InputBox Prompt, [Title], [default], [xpos], [ypos], [helpfile], [context] InputBox 함수의 내용에 해당하는 Prompt만 필수이며 나머지 인자는 선택사항이다. title: 제목 default: 시작했을 때 입력되있을 값 xpos: 가로 위치 (숫자로 입력) ..

[엑셀vba] Msgbox를 이용해서 메세지 팝업창을 띄워보자!(feat. 줄바꿈, 버튼 형식)

프로그램 동작 중 사용자에게 경고 알림 확인 등 메세지 팝업을 띄워서 알려야 하는 경우가 있다 그럴때 사용할 수 있는 함수는 msgbox ! Msgbox 사용법 Msgbox 버튼 선택에 따라 다른 코드 진행 Msgbox 내용 줄바꿈 1. Msgbox 사용법 Sub Msgbox_Test() MsgBox "내용", vbOKCancel, "제목" End Sub msgbox 함수는 Prompt, [buttons], [title], [helpfile], [context] 5가지 인수를 사용할 수 있다. 이 중에서 Prompt는 필수이며 메세지 내용을 나타낸다. 나머지는 선택사항 buttons = 버튼 형식 선택 title = 메시지박스 제목 helpfile = 도움말 파일[context 인수를 사용하면 필수 항목..

[엑셀vba] 함수나 프로시저에 선택적 인수를 받게 해보자.

전달자 또는 파라미터라 부르는 놈을 우리는 잘 알고 있으며 잘 사용하기도 한다. vba에서 대표적인(?) 파라미터를 들자면 msgbox 함수가 있다. 메세지 박스를 띄우는 함수인데 파라미터가 엄청 많다. 여기서 필수 항목은 맨 앞에 있는 Prompt이다. 메세지 내용을 담당하고 있어서 그런지 필수적으로 들어가야 할 내용인가보다. 그 뒤에 나오는 애들은 있든 없든 메세지 박스 실행에 전혀 영향을 주지 않는다. 그런 필수항목인 프롬프트를 설정하지 않으면 다음과 같은 오류를 볼 수 있을 것이다. 내가 만들 프로시저나 함수에는 저런 오류메세지가 안뜨도록 선택적 인수로 가득하게 해보자. 선택적 인수를 만들기 위해선 Optional을 붙여주자 Sub Test(X As Integer, Optional Y As Int..

[엑셀vba] 사용자 정의폼 KeyDown 이벤트 - KeyCode 파라미터

사용자 정의 폼을 사용하다보면 KeyDown 이벤트를 이용할 때가 있다. 특정 키를 눌렀을 때 작업을 수행 할 수 있도록 할 수 있는 이벤트이다. TextBox1을 생성하고 KeyDown 이벤트를 눌러보면 다음과 같이 나타난다. 1 2 3 Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) End Sub Colored by Color Scripter cs KeyCode와 Shift 파라미터는 다음과 같은 의미를 가진다. KeyCode: 내가 누른 키의 번호 Shift: Shift키를 눌렀는지 확인 (0이면 안누름, 1이면 누름) 특이한 점 - 좌측 Ctrl를 누르면 Shift 값: 2, Ke..

[엑셀vba] AccessDB 테이블에 엑셀 파일로 한 번에 대량 데이터 입력하기

지금까지 엑셀vba를 이용해서 액세스 DB에 데이터를 저장하는 방식은 SQL 쿼리를 이용했었다. 데이터가 소량일 때는 큰 문제가 되지 않았는데, 수 백개 이상이 되면서 처리 속도가 상당히 느려지는 바람에 작업에 큰 무리가 있음을 알게되었다. 그래서 한 방에 뙇! 넣을 수 있는 방법이 없을까 구글링을 하면서 찾은 해결책을 기록하고자 한다. 1. 해결방안 액세스에서 엑셀파일을 불러오는 모듈을 만들고 엑셀vba에서 액세스의 모듈을 실행시킨다. ???: 않이;;; 그럴꺼면 그냥 첨부터 액세스vba로 만들면 되는거 아니냐;; 라고 생각할 수 있다. 근데 나 도박사 엑셀의 신이 될 남자기 때문에 엑셀을 사용한다. 2. 액세스vba 모듈 추가 액세스vba에 들어갈 소스는 구글링하다가 다음 블로그에서 찾아냈다. 그냥 ..

[엑셀vba] 파일을 삭제해보즈아!(kill)

vba를 이용해 파일을 삭제해보자!!!! USING: Kill "File Path" 사용법: Kill "삭제할 파일 경로" 이번에도 경로나 파일이름을 이상하게 만들고 오류 테스트를 해봤다. 어떤 오류가 나올지 충분히 예상 되는 부분? 그러나 오류가 filecopy 함수와는 다르게 나타나는 것을 볼 수 있다. 경로가 이상하거나 파일이름이 잘못되어도 동일하게 런타임 53 오류를 뱉어낸다. filecopy 함수는 경로가 다르면 런타임 76, 파일이름이 잘못되면 런타임 53 오류를 발생시켰다.

[엑셀vba] 파일을 복사해보자!(filecopy)

vba를 이용해서 파일을 복사해보자! Using: filecopy "Source File", "Destination File" 사용법: filecopy "원본 파일", "복사할 경로" 원본 파일 이름이나 복사될 경로가 잘못됐다면 어떻게 될까? 당연히 오류 나겠지? - 런타임 53 오류: 파일 이름이 잘못됐을 때 나타나는 오류 - 런타임 76 오류: 경로가 잘못됐을 때 나타나는 오류 이런 오류가 발생한다는 사실을 확인했고 다른 실험을 해봤다. 원본 파일의 경로와 파일이름을 이상하게 만들어서 실행하면 어떤 오류가 나타날까? 런타임 73 오류가 먼저나타나는 것을 알 수 있었다. 끝

[엑셀VBA] 회원 관리 프로그램 Ver 1.0 (feat. UserForm, ACCESS)

현재 엑셀과 액세스를 이용한 프로그램을 하나 제작중이다. 만들게된 계기는 지인 모임 중에서 돈이나 회비 관리를 엑셀 시트로만 작성하고 있었다. 이게 문제가 되는건 아니지만, 매년 바뀌는 임원단으로 인해 양식이 각양각색이었다. 으... 그걸 보고 탄식이 절로 나올 수 밖에 없었다... 그래서 이 참에 한 번 싹 갈아 엎는건 어떤지 물어보고 내가 만들어주기로 했다. 1. 프로그램 기능 회원 관리: 등록, 정보수정, 삭제, 복구, 상세정보 입출 관리: 입출 입력, 입출 내역 조회 (검색 필터 포함) 지원금 관리: 교통비, 미참석 지원금 자동 계산, 보고서 출력 행사 관리: 등록, 수정, 삭제 랭킹: 회비 및 모임 참석 관련 랭킹 출력 환경설정: 월 회비 및 지원금 변경, 파일 백업, 파일 이름 변경 기타: 로..

[엑셀vba] 다량의 엑셀파일 한 번에 암호걸기(하위폴더 포함)

vba 공부 초기에 만들었던 매크로를 업그레이드 해보았다. 지금도 초보이지만 처음보다 많이 나아진 듯하다.. (개인적인 생각 ^_^) 1. 매크로 기능 - 사전에 설정된 패스워드로 특정 폴더 안의 엑셀 파일을 암호화 해줌 ※ xls 문자열이 들어간 엑셀 파일만 가능 - 하위 폴더도 적용할 지 선택 가능 - LOG 시트에 암호화 성공 실패 관련 기록 볼 수 있음 (최대 1,048,575개) 2. 매크로 실행 우선, 이번 매크로의 희생양을 준비해보자. 각 폴더에 하위 폴더의 하위 폴더를 만들어두었다. 4겹 정도된다. 그리고 '테스트파일.xlsx' 하나와 텍스트 파일 한 개를 넣어두었다.(캡쳐에 안보이는건 함정) 이제 매크로를 실행하기 위한 준비는 끝났고, 경로와 패스워드만 설정해주면 된다. B1 셀에 경로를..

[엑셀vba] ACCESS DB 연결해서 사용하기 1(Feat. SQL 쿼리)

소량의 데이터라면 엑셀로 처리해도 큰 문제는 없었으나 요즘 대량데이터를 가지고 놀다보니 엑셀에 한계가 있음을 느꼈다. 그래서 눈을 돌려봤더니 데이터베이스가 있었다. 그 중 엑셀과 가장 가까운 DB ACCESS를 이용해 대량 데이터 처리를 시작해보고자 한다. 액세스? 엑세스? ACCESS ! 엑셀과 액세스 준비 조회(SELECT) 삽입(INSERT INTO) 변경(UPDATE) 삭제(DELETE) 1. 엑셀과 액세스준비 우선 연습용 액세스 DB를 만들어준다. 필자는 C드라이브에 DB 폴더를 만들고 그 안에 DB 파일을 생성하겠다. 만들기 -> 테이블을 클릭하면 엑셀 시트같은 화면이 나타난다. 여기에 '추가하려면 클릭'을 눌러서 이름이나 나이 등 아무거나 데이터를 집어 넣도록 하자. 여기서 ID, 이름, 나..

[엑셀vba] 시트에 달력을 표시해보자.

단 코드 몇 줄이면 시트에 달력을 표시할 수 있다. 아주 쉽게 만들어보자. 우선, 달력을 표시할 셀을 이쁘게 꾸며보자. 실행 과정 코드(윤년 계산법) 1. 실행 과정 나의 경우 셀 C1에는 '년도', C2에는 '월' 입력 하기 위한 양식을 만들었다. 그리고 데이터 유효성 검사 기능으로 각 셀에는 입력값을 제한 하고 있다. - C1에는 1900 ~ 4000 까지 입력 가능 - C2에는 1 ~ 12 입력가능 정해진 범위가 아닌 값을 입력하면 오류가 출력되며 코드가 실행되지 않는다. 정확한 값을 넣으면 다음과 같이 정상적으로 작동하는 것을 볼 수 있다. 2021년 4월 달력을 출력해봤다. 실제 달력과 비교해본 결과 똑같았다. 년도나 월 값을 변경하면 달력도 자동으로 변경된다. 다음 그림을 보자. 윤년도 정확히..

[엑셀vba] 셀메이트 발송 확인 프로그램

오랜기간 셀메이트를 이용한 발송 업무를 해왔다. 그리고 발송 작업을 하다보면 발송 완료처리가 제대로 되지 않는 경우가 발생한다. 이런일이 발생하면 생길 문제는 다음과 같다. 회사의 상품 재고가 맞지 않게된다. 완료처리를 하면 재고도 차감되는 방식이기에 완료처리가 되지 않는다면 상품 재고에 영향을 주게 된다. 상품이 제대로 나갔는지 고객이 받기 전엔 확인하기 어렵다. 셀메이트에는 완료처리된 시간이 기록된다. 만약 발송 작업에 문제가 있어서 고객에게 잘못 전달되었다면, 완료처리 시간을 보고 발송 작업자의 cctv를 확인하게된다. 하지만 완료처리가 되지 않았다면 언제 어떻게 잘못나가게 됬는지 cctv를 볼 수가 없다. (발송 수량이 적으면 일일히 보면서 노가다로 가능하긴 할 듯..) 고객상담 부서와의 친밀도 ..

프로그램/완료 2021.02.03
반응형