Activeworkbook, thisworkbook 응용 프로그램의 정의 오류 또는 개체 정의 오류

VBA
작성자
hahalong
작성일
2021-12-25 16:17
조회
87
엑셀버전 : M365

운영체제 : 윈도우10

안녕하세요.

VBA 코드 작성에서 매크로 파일은 thisworkbook, 집계용 파일(xlsx)는 activeworkbook으로 지정했습니다.

실행하니  thisworkbook, activeworkbook 코드 전체적으로 응용 프로그램의 정의 오류 또는 개체 정의 오류라고 나와 애를 먹어서 글을 쓰게 됐습니다.

작업 외 엑셀파일 다 끄고, 별도 폴더내에 넣기까지 했는데 잘 모르겠습니다..

 

■ 최종목표

  • 매크로 파일 시트별 순환 (1월~12월)
  • 집계용 파일은 홍길동, 파이리, 꼬부기 등으로 시트 생성 (수기)
  • 매크로 시트 내 데이터를 집계용 파일 시트 이름과 같으면 붙여넣기 (누적)
Sub 개인별_집계()
 
Dim i As Integer '시트 순환 변수
Dim J As Integer '데이터 순환 변수
Dim K As Integer '개인별급여 엑셀파일 시트이름조회 변수
Dim MainCell_Adress As Integer '셀 주소 변수
Dim LastRow_this As Integer '데이터 행값 반환 변수
Dim LastRow_Active As Integer '개인별급여 엑셀파일 마지막 행값 변수
Dim Data_Name As String '시트이름 구분 변수
 
'매크로파일 시트 순환
For i = 2 To 12
 
LastRow_this = ThisWorkbook.Sheets(i).Range(Range("F8"), Range("F8").End(xlDown)).Rows.Count
 
'시트내 표 순환
For J = 1 To LastRow_this
 
MainCell_Adress = J * 2 + 6
 
Data_Name = ThisWorkbook.Sheets(i).Cells(MainCell_Adress, 3).Value
Cells(MainCell_Adress, 3).Select
 
'집계 파일 열기
filePath = ThisWorkbook.Path + "\" + "개인별급여.xlsx"
Workbooks.Open Filename:=filePath
 
'개인별급여 시트와 이름이 같을 경우 데이터 복사
For K = 1 To ActiveWorkbook.Worksheets.Count
 
'누적집계용
LastRow_Active = ActiveWorkbook.Sheets(K).Range(Range("A1"), Range("A1").End(xlDown)).Rows.Count
 
 
'복사하려는 사람 이름과 집계 시트의 이름이 같을 경우
If Data_Name = ActiveWorkbook.Sheets(K).Name Then
ThisWorkbook.Sheets(i).Cells(MainCell_Adress, 3).Resize(2, 23).Copy
ActiveWorkbook.Sheets(K).Cells(LastRow_Active + 1, 1).PasteSpecial xlPasteValues
End If
Next K
 
 
Next J
Next i
 
End Sub
전체 2

  • 2021-12-26 11:49

    일딴 이 메크로의 문제점이 크게 전 2가지가 보입니다.

    하나는 굳이 For문 안에

    filePath = ThisWorkbook.Path + "\" + "개인별급여.xlsx"
    
    

    을 넣음으로써 계속 개인별급여가 열리는 구문이 되어있어 속도를 저하시킵니다.

    파일을 여는것은 한번만 열어도 되는 메크로인것 같으니 For문 이전에 넣어서 한번만 여는것을 추천드립니다.

    두 번째 문제점이 메크로가 실행되지 않는 이유입니다.

    예를들면 LastRow_Active = ActiveWorkbook.Sheets(K).Range(Range("A1"), Range("A1").End(xlDown)).Rows.Count

    이런식으로만 메크로를 구성해놓으셨는데

    이렇게되면 Range(Range("A1"), Range("A1"))

    에서 Range("A1")이 지금 화면에 보여지고 있는 시트의 A1으로 판단되어 메크로가 동작합니다.

    그렇기에 정확한 메크로를 써주기위해서는

    LastRow_Active = ActiveWorkbook.Sheets(K).Range(ActiveWorkbook.Sheets(K).Range("A1"), ActiveWorkbook.Sheets(K).Range("A1").End(xlDown)).Rows.Count

    이렇게 되는 것이죠

    이런식으로 Range안의 범위도 시트를 정확히 해주시면 오류없이 잘 돌아갑니다.

     


  • 2021-12-27 00:14

    답변 감사합니다.

    Sheets.range( ~ ) 로 지정하면 끝나는줄 알았는데 괄호안의 range도 정확하게 지정해줘야 하는 것 처음 알았어요.

    도움 주셔서 감사합니다! 덕분에 해결됐어요


전체 5,121
번호 카테고리 제목 작성자 작성일 추천 조회
알림
하루 딱 "1분", 진짜 쓰는 엑셀 꿀팁 👉 "오빠두엑셀" 인스타그램 오픈! (28)
트로피 오빠두엑셀 | 2021.10.12 | 추천 22 | 조회 744
트로피 오빠두엑셀 2021.10.12 22 744
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (21)
오빠두엑셀 | 2021.10.28 | 추천 27 | 조회 2315
트로피 오빠두엑셀 2021.10.28 27 2315
26015 함수/공식
New 혹시 Crtl + F 찾기 같은 함수와 있나요
태혁 | 11:39 | 추천 0 | 조회 15
태혁 11:39 0 15
26014 차트/그래프
New 해당 스크린샷의 그래프를 어떻게 만드는지 알려주세요
민석 | 11:39 | 추천 0 | 조회 15
민석 11:39 0 15
26005 함수/공식
New 한 숫자값에 대한, 홀수/짝수값을 나열하고 싶습니다. (4)
땅콩구리아빠 | 08:43 | 추천 0 | 조회 25
땅콩구리아빠 08:43 0 25
26000 VBA
New Rng.find 함수로 찾은 값을 DB안에 넣고싶습니다. (1)
가을전어 | 2022.01.16 | 추천 0 | 조회 28
가을전어 2022.01.16 0 28
25994 함수/공식
New 날짜 입력하면 당일 주야간 합구하는 함수나 방법을 배우러 왔습니다. (1)
현주아빠 | 2022.01.16 | 추천 0 | 조회 27
현주아빠 2022.01.16 0 27
25993 VBA
New workday 함수를 vba로.. (1)
Hong | 2022.01.16 | 추천 0 | 조회 22
Hong 2022.01.16 0 22
25989 차트/그래프
New 표 자동 입력 첨부파일 (2) 답변완료
미르 | 2022.01.16 | 추천 0 | 조회 32
미르 2022.01.16 0 32
25983 함수/공식
New 년도에 따른 출장 일수 구하고 싶은데 도움 부탁드립니다. (1)
kjin1020@naver.com | 2022.01.16 | 추천 0 | 조회 25
kjin1020@naver.com 2022.01.16 0 25
25982 함수/공식
New 입력하면 옆 셀에 자동으로 '1'이 입력되는 방법 (1) 답변완료
올리주인 | 2022.01.16 | 추천 0 | 조회 42
올리주인 2022.01.16 0 42
25973 함수/공식
New index match로 불러온 여러 목록의 사진을 다시 취합해서 불러오고 싶습니다. 첨부파일
배고픈콩콩 | 2022.01.16 | 추천 0 | 조회 36
배고픈콩콩 2022.01.16 0 36
25969 VBA
New 검색한 셀의 가로열 전부를 복사하는 방법이 알고 싶습니다. vba
ㅈㄱㄹ | 2022.01.16 | 추천 0 | 조회 24
ㅈㄱㄹ 2022.01.16 0 24
25945 함수/공식
New if 함수 중첩 (3)
shheee | 2022.01.15 | 추천 0 | 조회 49
shheee 2022.01.15 0 49
25938 기능/도구
New 수식이 포함된 시트에서 수식이 입력된 셀을 제외한 셀을 선택하는 방법을 알고자 합니다 (1)
yya**** | 2022.01.15 | 추천 0 | 조회 34
yya**** 2022.01.15 0 34
25932 문서서식
New 안녕하세요...도움을 요청합니다. 첨부파일 (1)
violet**** | 2022.01.15 | 추천 0 | 조회 46
violet**** 2022.01.15 0 46
25919 함수/공식
New 중복일 경우 1개만 카운트 첨부파일 (3) 답변완료
s77**** | 2022.01.14 | 추천 0 | 조회 79
s77**** 2022.01.14 0 79
25918 함수/공식
New 대출 이자율을 구하는 함수가 있을까요? (3)
늦깎이 | 2022.01.14 | 추천 0 | 조회 59
늦깎이 2022.01.14 0 59
25909 문서서식
New 셀값에 보이지 않는 값이 있습니다 이게 뭔지 알려주세요ㅠㅠ 첨부파일 (2) 답변완료
닉으로 | 2022.01.14 | 추천 0 | 조회 58
닉으로 2022.01.14 0 58
25908 함수/공식
New 혹시 매주 월요일마다 자동 작성되게 할 수 있나요? (5)
태혁 | 2022.01.14 | 추천 0 | 조회 81
태혁 2022.01.14 0 81
25905 대시보드
New 데이터 관리 때문에 질문 드립니다. 첨부파일 (4)
콜럼버스 | 2022.01.14 | 추천 0 | 조회 48
콜럼버스 2022.01.14 0 48
25896 함수/공식
수입, 지출누적액 구하는 방법 (6)
칼있으녀 | 2022.01.14 | 추천 0 | 조회 81
칼있으녀 2022.01.14 0 81
25892 VBA
VBA 크롤링 - innerText 의 특정 문자 제외하는 방법 도움요청드립니다. (5) 답변완료
98e | 2022.01.14 | 추천 0 | 조회 49
98e 2022.01.14 0 49
25888 함수/공식
일주일째 골머리 입니다 도움요청드립니다 첨부파일 (5)
k5188 | 2022.01.14 | 추천 0 | 조회 133
k5188 2022.01.14 0 133
25884 함수/공식
참조가 잘안되면 어떤 함수를 써야하나요 (3)
박모씨 | 2022.01.14 | 추천 0 | 조회 59
박모씨 2022.01.14 0 59
25876 피벗테이블
피벗으로 가공한 데이터 정렬 문의 첨부파일 (2) 답변완료
엑셀어린잉 | 2022.01.13 | 추천 0 | 조회 54
엑셀어린잉 2022.01.13 0 54
25875 함수/공식
ROW 함수를 이용한 셀좌표값을 SUMIF 문에 자동으로 입력되게 할수 없을까요? 첨부파일 (6)
속등가설분전반 | 2022.01.13 | 추천 0 | 조회 68
속등가설분전반 2022.01.13 0 68
25873 함수/공식
importhtml 함수 질문드립니다. 첨부파일 (1) 답변완료
감성카드 | 2022.01.13 | 추천 0 | 조회 59
감성카드 2022.01.13 0 59
25872 함수/공식
수식 질문 첨부파일 (6) 답변완료
k5188 | 2022.01.13 | 추천 0 | 조회 65
k5188 2022.01.13 0 65
25870 VBA
VBA로 IE다루는 중 웹페이지 대화상자 닫는 법 (1)
케케케 | 2022.01.13 | 추천 0 | 조회 40
케케케 2022.01.13 0 40
25869 문서서식
항상고맙습니다...어려운 부문이 있어 문의드립니다. 첨부파일
violet**** | 2022.01.13 | 추천 0 | 조회 50
violet**** 2022.01.13 0 50
25868 파워쿼리/피벗
쿼리 새로고침 시 중복데이터 (1)
뿌잉뿌잉 | 2022.01.13 | 추천 0 | 조회 34
뿌잉뿌잉 2022.01.13 0 34