테두리 서식도 마지막행으로 인식하는데 데이터만 마지막행으로 인식하게 하고 싶습니다.

VBA
작성자
호랑이파워
작성일
2021-12-10 12:22
조회
187
엑셀버전 : 엑셀2016

운영체제 : 윈도우10

안녕하세요!

아래 코드는 다른 엑셀 파일에서 데이터를 가져오는 코드인데 사용하다가 수정을 하려다 막히는 부분이 있어서 여쭤봅니다.

 

  1. "'엑셀 파일 아니면 프로세스 종료" 주석에서 엑셀 파일 확장자를 한번에 XLSX,XLSM 등등을 추가해보려다 실패하여 ElseIf를 사용하여 다른 엑셀 확장자도 인식되게 만들었는데 이걸 ElseIf를 사용하지 않고 다른 확장자도 한번에 가져올 방법이 있을까요?
  2. "'가져올 데이터 헤더 1번째 줄은 제외하고 나머지 데이터만" 주석에서 다른 파일의 데이터를 마지막행에 붙여넣는 코드인데요. A열 5행까지 실제 데이터가 있고, 테두리 서식은 10행까지 있으면 다른 파일의 데이터를 가져오면 서식밑 11행에 붙여넣기가 됩니다. 가져온 데이터가 6행에 붙여넣기를 하고싶습니다.
  3. "'가져올 데이터 헤더 1번째 줄은 제외하고 나머지 데이터만" 주석에서 데이터를 가져올때 값만 가져오고 싶어서 .PasteSpecial xlPasteValues를 사용하면 값만 가져올 수 있다고 하여 여기저기 시도해봤지만 오류가 나서 문의 드립니다.

 

VBA는 아무것도 몰라 이제 막 공부를 시작한 초보라서 수정을 하는게 어려워서 도움을 요청합니다.

 

점심 식사 맛있게 하시길 바랍니다!

 

Sub 데이터가져오기()
 
 
Application.ScreenUpdating = False
Application.DisplayAlerts = False
 
Dim wb현재파일 As Workbook
Dim ws현재시트 As Worksheet
Dim int현재시트마지막 As Long
 
Set wb현재파일 = ThisWorkbook
Set ws현재시트 = wb현재파일.Sheets(2)
int현재시트마지막 = ws현재시트.UsedRange.Rows.Count
 
 
 
Dim str가져올파일 As String
Dim obj가져올파일 As Object
Dim wb가져올파일 As Workbook
Dim ws가져올시트 As Worksheet
Dim int가져올파일끝행 As Long
 
 
'파일 선택 및 변수 할당
str가져올파일 = Application.GetOpenFilename
 
'엑셀 파일 아니면 프로세스 종료
If InStr(1, str가져올파일, ".xlsm") >= 1 Or InStr(1, str가져올파일, ".xlsm") >= 1 Then
Debug.Print str가져올파일
MsgBox "데이터를 불러왔습니다"
 
ElseIf InStr(1, str가져올파일, ".xlsx") >= 1 Or InStr(1, str가져올파일, ".xlsx") >= 1 Then
Debug.Print str가져올파일
MsgBox "데이터를 불러왔습니다"
 
ElseIf InStr(1, str가져올파일, ".xls") >= 1 Or InStr(1, str가져올파일, ".xls") >= 1 Then
Debug.Print str가져올파일
MsgBox "데이터를 불러왔습니다"
 
ElseIf InStr(1, str가져올파일, ".csv") >= 1 Or InStr(1, str가져올파일, ".csv") >= 1 Then
Debug.Print str가져올파일
MsgBox "데이터를 불러왔습니다"
 
Else
MsgBox "다시 선택하세요"
GoTo endproce
End If
 
 
 
 
Set obj가져올파일 = GetObject(str가져올파일)
Set wb가져올파일 = Workbooks(Dir(str가져올파일))
Set ws가져올시트 = wb가져올파일.Sheets(1)
 
int가져올파일끝행 = ws가져올시트.UsedRange.Rows.Count
 
 
'가져올 데이터 헤더 1번째 줄은 제외하고 나머지 데이터만
ws가져올시트.UsedRange.Offset(1).Resize(int가져올파일끝행 - 1).Copy Destination:=ws현재시트.Range("a" & int현재시트마지막 + 1)
 
 
 
obj가져올파일.Close
 
 
 
 
endproce:
 
Application.ScreenUpdating = True
Application.DisplayAlerts = True
 
 
Cells(Rows.Count, "A").End(3).Select 'A열 마지막 셀 위치로 이동
End Sub

 

회원등급 : 4레벨
포인트 : 197 EP
총질문 : 5 개 (마감율 : 100%)
채택답변 : 0 개
전체 7

  • 2021-12-10 13:07

    Dim iRow As Long
    Dim iCol As Long

    iRow = Cells.Find(What:="*", _
    After:=Range("A1"), _
    LookAt:=xlPart, _
    LookIn:=xlFormulas, _
    SearchOrder:=xlByRows, _
    SearchDirection:=xlPrevious, _
    MatchCase:=False).Row

    iCol = Cells.Find(What:="*", _
    After:=Range("A1"), _
    LookAt:=xlPart, _
    LookIn:=xlFormulas, _
    SearchOrder:=xlByColumns, _
    SearchDirection:=xlPrevious, _
    MatchCase:=False).Column

    iRow 또는 iCol이 마지막 Data가 있는 Cell의 Row와 Column 번호
    입니다. Coloring과 Board선은 무시 됩니다.


    • 2021-12-10 13:56

      @Yukon 님 답변 감사합니다.

      초보지만 알려주신 코드로 적용시켜보도록 공부하겠습니다.

      # 아래 코드에서 가져올 파일 확장자를 추가하려면 어떻게 해야할까요? 전 ".xlsm",".xlsx",".xls" 이런식으로 옆에 추가하니까 오류가 나서 여쭤봅니다.

      If InStr(1, str가져올파일, ".xlsm") >= 1 Or InStr(1, str가져올파일, ".xlsm") >= 1 Then
      Debug.Print str가져올파일
      MsgBox "데이터를 불러왔습니다"


      • 2021-12-12 16:31

        @호랑이파워 님 확장자는 이미 포함되어  있습니다.


  • 2021-12-10 13:52
    채택된 답변

    데이터가 있고, 없고의 구분 기준이 [A]열 상황이라면

    rr = Range("A2000").End(xlUp).Row           '2000은 데이터의 양을 감안하여 충분히 큰 수로 바꾸어 쓰시면 됩니다.
    MsgBox rr

    코드가 실행되었을 때, rr 의 값이 마지막 데이터가 기록된 행번호 입니다.  이 방법을 채택하는 것이 간단할 것 같습니다.


    • 2021-12-10 14:03

      @김학동 님 답변 감사합니다.

      초보지만 알려주신 코드로 적용시켜보도록 공부하겠습니다.

       

      # 알려주신 코드로 데이터 바로 밑으로 가져오기가 되었는데 값만 가져오려면 어떻게 해야할까요?

       


      • 2021-12-10 20:38

        @호랑이파워 님 어떤 값을 가져오려는 것인지?


        • 2021-12-10 23:48

          @김학동 님 답변 감사합니다.

          서식을 포함하여 복사가 되는걸 순전히 값만 가져오고 싶습니다.

          .PasteSpecial xlPasteValues를 사용하면 값만 가져올 수 있는거 같은데 위 코드를 아래 코드에 어떻게 붙여야 할까요?

           

           

          '가져올 데이터 헤더 1번째 줄은 제외하고 나머지 데이터만

          ws가져올시트.UsedRange.Offset(1).Resize(int가져올파일끝행 - 1).Copy Destination:=ws현재시트.Range("a" & int현재시트마지막 + 1)

           


전체 5,136
번호 카테고리 제목 작성자 작성일 추천 조회
알림
하루 딱 "1분", 진짜 쓰는 엑셀 꿀팁 👉 "오빠두엑셀" 인스타그램 오픈! (28)
트로피 오빠두엑셀 | 2021.10.12 | 추천 22 | 조회 752
트로피 오빠두엑셀 2021.10.12 22 752
공지사항 공지사항
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (21)
오빠두엑셀 | 2021.10.28 | 추천 28 | 조회 2345
트로피 오빠두엑셀 2021.10.28 28 2345
26079 함수/공식
New 도와주세요 예전에 잠깐 본적이 있는 강의인데 못찾겠어요
딸기아빠 | 16:19 | 추천 0 | 조회 4
딸기아빠 16:19 0 4
26078 함수/공식
New sumif 오류 관련 첨부파일
논바닥 | 16:19 | 추천 0 | 조회 4
논바닥 16:19 0 4
26068 함수/공식
New 다른쉬트 값 불러 오기 (VLOOKUP 안될 시) 첨부파일 (3)
벗님들 | 12:48 | 추천 -1 | 조회 36
벗님들 12:48 -1 36
26067 함수/공식
New 도와주세요! 목록 별 수량 합산이 필요한데 가능한지 확인 부탁 드릴게요! 첨부파일 (6)
monom | 12:38 | 추천 0 | 조회 31
monom 12:38 0 31
26058 기능/도구
New 자동필터 복사 범위 풀림 오류 (1)
허영진 | 10:29 | 추천 0 | 조회 28
허영진 10:29 0 28
26050 함수/공식
New 행과 열의 합의 함수를 알고 싶어요! (1)
Goldhajin | 00:45 | 추천 0 | 조회 47
Goldhajin 00:45 0 47
26041 VBA
New 일정시간이 지나면 MsgBOX로 알림창이 뜨게 하고싶습니다. (2)
을지지뢰 | 2022.01.17 | 추천 0 | 조회 46
을지지뢰 2022.01.17 0 46
26035 함수/공식
New 특정날짜와 시간 고정해서 데이터 추출방법 도와주세요 (4)
박현욱 | 2022.01.17 | 추천 0 | 조회 44
박현욱 2022.01.17 0 44
26033 함수/공식
New 필터 함수를 인덱스 매치 함수로 변환하는 어려움 첨부파일 (2)
미르 | 2022.01.17 | 추천 0 | 조회 33
미르 2022.01.17 0 33
26030 함수/공식
New 원본표에서 일정 조건의 내용을 추출하여 새로운 표에 자료 넣기 첨부파일 (2)
알면서 | 2022.01.17 | 추천 0 | 조회 31
알면서 2022.01.17 0 31
26029 기능/도구
New 필터에서 상하위 % 추출 안됨 오류 첨부파일 (3)
알면서 | 2022.01.17 | 추천 0 | 조회 23
알면서 2022.01.17 0 23
26026 함수/공식
New 한 셀에 입력된 문장 중 조건에 만족하는 문장 개수 함수 (5)
삐약이 | 2022.01.17 | 추천 0 | 조회 34
삐약이 2022.01.17 0 34
26025 기능/도구
New 셀 내용을 지우면 특정 셀 내용도 같이 삭제되는 기능? 첨부파일 (2) 답변완료
올리주인 | 2022.01.17 | 추천 1 | 조회 38
올리주인 2022.01.17 1 38
26023 VBA
New VBA 사용자정의폼 show 0 명령어 (1)
병욱 | 2022.01.17 | 추천 0 | 조회 34
병욱 2022.01.17 0 34
26022 VBA
New 거래처별 파일 나누기 첨부파일
silli**** | 2022.01.17 | 추천 0 | 조회 36
silli**** 2022.01.17 0 36
26015 함수/공식
New 혹시 Crtl + F 찾기 같은 함수와 있나요 (1)
태혁 | 2022.01.17 | 추천 0 | 조회 50
태혁 2022.01.17 0 50
26014 차트/그래프
New 해당 스크린샷의 그래프를 어떻게 만드는지 알려주세요 (1)
민석 | 2022.01.17 | 추천 0 | 조회 24
민석 2022.01.17 0 24
26005 함수/공식
New 한 숫자값에 대한, 홀수/짝수값을 나열하고 싶습니다. (6) 답변완료
땅콩구리아빠 | 2022.01.17 | 추천 0 | 조회 38
땅콩구리아빠 2022.01.17 0 38
26000 VBA
New Rng.find 함수로 찾은 값을 DB안에 넣고싶습니다. (2)
가을전어 | 2022.01.16 | 추천 0 | 조회 33
가을전어 2022.01.16 0 33
25994 함수/공식
New 날짜 입력하면 당일 주야간 합구하는 함수나 방법을 배우러 왔습니다. (1)
현주아빠 | 2022.01.16 | 추천 0 | 조회 34
현주아빠 2022.01.16 0 34
25993 VBA
New workday 함수를 vba로.. (1)
Hong | 2022.01.16 | 추천 0 | 조회 32
Hong 2022.01.16 0 32
25989 차트/그래프
New 표 자동 입력 첨부파일 (2) 답변완료
미르 | 2022.01.16 | 추천 0 | 조회 45
미르 2022.01.16 0 45
25983 함수/공식
New 년도에 따른 출장 일수 구하고 싶은데 도움 부탁드립니다. (1)
kjin1020@naver.com | 2022.01.16 | 추천 0 | 조회 28
kjin1020@naver.com 2022.01.16 0 28
25982 함수/공식
New 입력하면 옆 셀에 자동으로 '1'이 입력되는 방법 (1) 답변완료
올리주인 | 2022.01.16 | 추천 0 | 조회 54
올리주인 2022.01.16 0 54
25973 함수/공식
New index match로 불러온 여러 목록의 사진을 다시 취합해서 불러오고 싶습니다. 첨부파일
배고픈콩콩 | 2022.01.16 | 추천 0 | 조회 39
배고픈콩콩 2022.01.16 0 39
25969 VBA
New 검색한 셀의 가로열 전부를 복사하는 방법이 알고 싶습니다. vba
ㅈㄱㄹ | 2022.01.16 | 추천 0 | 조회 27
ㅈㄱㄹ 2022.01.16 0 27
25945 함수/공식
if 함수 중첩 (3)
shheee | 2022.01.15 | 추천 0 | 조회 59
shheee 2022.01.15 0 59
25938 기능/도구
수식이 포함된 시트에서 수식이 입력된 셀을 제외한 셀을 선택하는 방법을 알고자 합니다 (1)
yya**** | 2022.01.15 | 추천 0 | 조회 36
yya**** 2022.01.15 0 36
25932 문서서식
안녕하세요...도움을 요청합니다. 첨부파일 (2)
violet**** | 2022.01.15 | 추천 0 | 조회 54
violet**** 2022.01.15 0 54
25919 함수/공식
중복일 경우 1개만 카운트 첨부파일 (3) 답변완료
s77**** | 2022.01.14 | 추천 0 | 조회 89
s77**** 2022.01.14 0 89