VBA로 할때는 생각보다 이부분이 잘 안되더라고요. 파워쿼리로 파일 리스트를 가져오는것도 좋은 방법이 될 수 있습니다. 아래 영상 참고해 보시겠어요? 파이썬 영상이긴 한데, 파이썬으로 다루기에 앞서서 파워쿼리로 파일리스트를 가져오는 방법이 나와있어서 도움이 될 수 있습니다. ruclips.net/video/epIaTx6l1mI/видео.html
안녕하세요 강의 잘 보고 있습니다. 혹시 알려주신 방법 응용 하여 "만든 날짜", "수정한 날짜" 정보 추출 가능할까요? F_Path, F_Name, F_Format As String 부분을 수정 하면 가능할 듯 싶은데 "만들 날짜", "수정한 날짜" 에 대한 명칭을 잘 몰라서 ㅠ 한 번 여쭤봅니다.
지금 보신 영상의 소스에서 바로 어떻게 하기는 좀 복잡할 듯 합니다. 아래 영상 및 글에서 파이썬으로 구현하기 전, 엑셀 기본 기능으로 유사한 작업을 한 부분이 있는데, 이 방법을 한번 살펴 보시겠어요? ruclips.net/video/epIaTx6l1mI/видео.html blog.naver.com/550sn/222385113610 두번째 방법으로는 아래의 영상 및 글 참고하시고, ruclips.net/video/NC__BIdXPFg/видео.html blog.naver.com/550sn/221785907674 소스 중간의 Range("C" & Row).Value = FileListUp.Name Range("D" & Row).Value = FileListUp.Type 다음 줄에 Range("F" & Row).Value = FileListUp.DateLastModified 라고 한줄 추가하시면 동작할 것 같습니다.
안녕하세요! 엑셀 관련 궁금증이 생기면 열심히 보고있는 사람인데요. 난이도가 좀 높아서 열심히 보고 공부중입니다 ㅠㅠ 오늘은 질문이 있어서요! 자동 필터를 잘 활용하고 있는데 데이터를 같은 파일의 다른 시트가 아닌 다른 엑셀 파일의 특정 시트에서 갖고오고 싶은데 어떻게 해야할지 몰라서 질문 남깁니다! 현재는 어디서 운 좋게 주워온 코드를 쓰고있는데.. 수정을 좀 해야할지 다시 해야할지 알려주시면 감사드려요 ㅠ_ㅠ Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Address "$C$3" Then Exit Sub If IsEmpty(Target) Then Exit Sub T = .Value End With Application.ScreenUpdating = False Set rngColumn = Sheets("Data").Range("B2").CurrentRegion.Columns(1) Range("B6:G" & Rows.Count).ClearContents With rngColumn If WorksheetFunction.CountIf(rngColumn, "*" & T & "*") = 0 Then Target.Select MsgBox " 입력하신 데이터에 해당하는 자료가 없습니다! ", 64, "입력오류 " Exit Sub Else .AutoFilter 1, "=*" & T & "*" .Offset(1).Resize(.Cells.Count - 1, 7).SpecialCells(12).Copy Range("B6").PasteSpecial (3) .AutoFilter Target.Select End If End With End Sub
원하시는게 이게 맞는지 잘 모르겠네요... 제가 이해하기로는 현재 소스에서는 같은 파일의 "Data"라는 이름의 Sheet에서 데이터를 찾아오는것 같은데, 이것을 지정된 파일의 "Data"라는 이름의 Sheet에서 데이터를 가져오고 싶다는 뜻으로 이해가 됩니다. 이부분은 7번째줄, set rngColumn = Sheets("Data").... 여기만 바꿔주면 될것 같습니다. 엑셀에서는 엑셀 파일은 Workbook으로 인식되고 Workbook안에 Sheet가 있는 것으로 인식되니, 다음과 같이 WB 을 추가하는 내용 한줄 추가하고, 기존의 rngColumn 선언문에 WB까지 포함하는 것으로 변경해 주면 될것 같습니다. Set WB = Workbooks.open("파일이름(경로포함)") set rngColumn = WB.Sheets("Data").... 만약 다른 파일도 매크로가 실행될때 마다 다르게 골라서 실행하고 싶다고 하면 여기에 File dialog 구문을 추가해서 데이터 엑셀 파일을 고르게 해도 될것 같습니다. Set F_dlg = Application.FileDialog(msoFileDialogFilePicker) F_dlg.Show F_Name = F_dlg.SelectedItems(1) Set WB = Workbooks.open(F_Name) set rngColumn = WB.Sheets("Data").... 직접 실행하면서 테스트 해본건 아니라서 정상 동작할지는 잘 모르겠네요... Sample 파일이 있으면 Test한번 해보면 좋겠긴 한데....
@@TricksOffice 오... 답변 정말 감사합니다!!! 지금 사무실이라서 한번 해봤는데 몇가지 문제가 발생했습니다 ㅠ_ㅠ... 첫번째는 검색을 하면 업데이트 하라고 나오면서 불러올 엑셀파일을 실행합니다 - 저장용 엑셀파일은 실행하지 않는 방법이 없을까요? ㅠㅠ 두번째는 검색해서 업데이트 버튼을 눌러야 결과가 나오고 결과가 잘 나왔는데 에러창이 뜨면서 디버그를 하라고 합니다. 혹시 가능하시면 샘플 파일을 드려도 될까요....??? 조금 정리해서 내용을 말씀드리면 1. 사원들은 검색기(예시).xlsm 파일만 사용 2. 검색기_DB.xlsm 파일은 관리자가 관리 및 업데이트 3. 자료 검색 시 DB.xlsm 파일이 실행되지 않는 방법이 있는지 4. 디버그 창에 나오는 내용은 아래 작성해드리겠습니다. Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Address "$C$3" Then Exit Sub If IsEmpty(Target) Then Exit Sub T = .Value End With Application.ScreenUpdating = False Set WB = Workbooks.Open("D:\승표 진행\2020\검색기\검색기_DB") Set rngColumn = Sheets("DB").Range("B2").CurrentRegion.Columns(1) Range("B6:G" & Rows.Count).ClearContents With rngColumn If WorksheetFunction.CountIf(rngColumn, "*" & T & "*") = 0 Then Target.Select MsgBox " 입력하신 데이터에 해당하는 자료가 없습니다! ", 64, "입력오류 " Exit Sub Else .AutoFilter 1, "=*" & T & "*" .Offset(1).Resize(.Cells.Count - 1, 7).SpecialCells(12).Copy Range("B6").PasteSpecial (3) .AutoFilter Target.Select
@로꼬미데빌 다음의 소스파일로 바꿔보시죠. 에러는 두개의 파일이 열리면서 포커스가 DB 파일로 넘어갔을때 기존 파일의 Range 위치를 정확히 찾지 못해서 발생한 에러였던것 같습니다. (OPWB.active 추가했습니다.) 엄밀히 말하면 DB 파일은 실행이 안되는것은 아니고, 순식간에 실행되었다가 순식간에 닫혀서 일반 사용자분들은 모르시게 처리했습니다. (WB Close 추가했습니다.) ※ 소스 중간에 있는 Exit Sub 부분은 제외했습니다. 안그러면 검색 실패시 DB 파일을 닫지 않고 종료 처리됩니다. 그래도 안되면, sample 파일 보내주실수 있으세요? ------------------------------------------------ Private Sub Worksheet_Change(ByVal Target As Range) Dim WB As Workbook Dim OPWB As Workbook Set OPWB = ActiveWorkbook With Target If .Address "$C$3" Then Exit Sub If IsEmpty(Target) Then Exit Sub T = .Value End With Application.ScreenUpdating = False Set WB = Workbooks.Open("D:\승표 진행\2020\검색기\검색기_DB") Set rngColumn = Sheets("DB").Range("B2").CurrentRegion.Columns(1) Range("B6:G" & Rows.Count).ClearContents With rngColumn If WorksheetFunction.CountIf(rngColumn, "*" & T & "*") = 0 Then OPWB.Activate Target.Select MsgBox " 입력하신 데이터에 해당하는 자료가 없습니다! ", 64, "입력오류 " Else .AutoFilter 1, "=*" & T & "*" .Offset(1).Resize(.Cells.Count - 1, 7).SpecialCells(12).Copy OPWB.Activate Range("B6").PasteSpecial (3) .AutoFilter OPWB.Activate Target.Select End If End With WB.Close savechanges:=False Application.ScreenUpdating = True End Sub --------------------------------------------- 550sn@naver.com
상세 속성이라는것이 파일 정보에 Defalut하게 들어있는 속성이라면 방법이 있을것 같은데, 이점은 주말에 한번 볼께요. 아니면, 매크로 말고도 엑셀 메뉴에서도 파일 리스트를가져오는 기능도 있는데, 여기서는 안보일까요? 데이터탭 >> 새 쿼리 >> 파일에서 >>폴더에서 이것도 꽤 편하게 사용할 수도 있습니다. 저도 이 영상을 만들고 한참 지나고 나서야 알았네요.. ^^;
영상 너무 잘 봤습니다! 혹시 파일생성시간도 목록으로 불러오려면 어떻게 해야할까요??
yyyy-mm-dd hh:ss 이런 형식으로 알아야 됩니다
해결했습니다!
VBA로 할때는 생각보다 이부분이 잘 안되더라고요.
파워쿼리로 파일 리스트를 가져오는것도 좋은 방법이 될 수 있습니다.
아래 영상 참고해 보시겠어요?
파이썬 영상이긴 한데, 파이썬으로 다루기에 앞서서 파워쿼리로 파일리스트를 가져오는 방법이 나와있어서 도움이 될 수 있습니다.
ruclips.net/video/epIaTx6l1mI/видео.html
정말 고맙습니다. 지금까지 제가 찾던 내용입니다. 거기다 소스까지 제공해 주셔서 너무너무 감사합니다.
도움이 되었다니 다행이네요. ^^
폴더안에 2천개 가량의 폴더가 있는데 그 리스트를 엑셀파일로 만드는 방법 알려주실수 있나요?
아래 글과 영상 참고해 보시겠어요?
파이썬을 다루기에 앞서서 엑셀 만으로 하는 방법도 포함되어 있으니 그부분만 보셔도 좋습니다.
blog.naver.com/550sn/222385113610
ruclips.net/video/epIaTx6l1mI/видео.html
안녕하세요 강의 잘 보고 있습니다. 혹시 알려주신 방법 응용 하여 "만든 날짜", "수정한 날짜" 정보 추출 가능할까요? F_Path, F_Name, F_Format As String 부분을 수정 하면 가능할 듯 싶은데 "만들 날짜", "수정한 날짜" 에 대한 명칭을 잘 몰라서 ㅠ 한 번 여쭤봅니다.
지금 보신 영상의 소스에서 바로 어떻게 하기는 좀 복잡할 듯 합니다.
아래 영상 및 글에서 파이썬으로 구현하기 전, 엑셀 기본 기능으로 유사한 작업을 한 부분이 있는데, 이 방법을 한번 살펴 보시겠어요?
ruclips.net/video/epIaTx6l1mI/видео.html
blog.naver.com/550sn/222385113610
두번째 방법으로는 아래의 영상 및 글 참고하시고,
ruclips.net/video/NC__BIdXPFg/видео.html
blog.naver.com/550sn/221785907674
소스 중간의
Range("C" & Row).Value = FileListUp.Name
Range("D" & Row).Value = FileListUp.Type
다음 줄에
Range("F" & Row).Value = FileListUp.DateLastModified
라고 한줄 추가하시면 동작할 것 같습니다.
@@TricksOffice 답글 감사합니다 ^^
감사합니다! 옛날에 이걸 짜고 싶었는데 못 해서 cmd로 작업해서 리스트 만들었었는데...ㅠ 잘 볼께요~ㅎ
도움이 되면 좋겠네요.
참고로 매크로 말고도 엑셀 메뉴에서도 파일 리스트는 가져오는 기능도 있습니다.
데이터탭 >> 새 쿼리 >> 파일에서 >>폴더에서
이게 더 편할 수도 있습니다. 저도 최근에 알았네요.. ^^;
안녕하세요! 엑셀 관련 궁금증이 생기면 열심히 보고있는 사람인데요. 난이도가 좀 높아서 열심히 보고 공부중입니다 ㅠㅠ
오늘은 질문이 있어서요!
자동 필터를 잘 활용하고 있는데 데이터를 같은 파일의 다른 시트가 아닌 다른 엑셀 파일의 특정 시트에서 갖고오고 싶은데
어떻게 해야할지 몰라서 질문 남깁니다!
현재는 어디서 운 좋게 주워온 코드를 쓰고있는데.. 수정을 좀 해야할지 다시 해야할지 알려주시면 감사드려요 ㅠ_ㅠ
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address "$C$3" Then Exit Sub
If IsEmpty(Target) Then Exit Sub
T = .Value
End With
Application.ScreenUpdating = False
Set rngColumn = Sheets("Data").Range("B2").CurrentRegion.Columns(1)
Range("B6:G" & Rows.Count).ClearContents
With rngColumn
If WorksheetFunction.CountIf(rngColumn, "*" & T & "*") = 0 Then
Target.Select
MsgBox " 입력하신 데이터에 해당하는 자료가 없습니다! ", 64, "입력오류 "
Exit Sub
Else
.AutoFilter 1, "=*" & T & "*"
.Offset(1).Resize(.Cells.Count - 1, 7).SpecialCells(12).Copy
Range("B6").PasteSpecial (3)
.AutoFilter
Target.Select
End If
End With
End Sub
관심가지고 댓글달아주셔서 감사합니다. 저도 퇴근하고 나서 한번 확인해 보겠습니다.
@@TricksOffice 우왓!! 감사합니다^^!!!! 제 상황 설명이 이상하다면 말씀해주세요 ㅋㅋㅋㅋ
원하시는게 이게 맞는지 잘 모르겠네요...
제가 이해하기로는 현재 소스에서는 같은 파일의 "Data"라는 이름의 Sheet에서 데이터를 찾아오는것 같은데, 이것을 지정된 파일의 "Data"라는 이름의 Sheet에서 데이터를 가져오고 싶다는 뜻으로 이해가 됩니다.
이부분은 7번째줄,
set rngColumn = Sheets("Data")....
여기만 바꿔주면 될것 같습니다.
엑셀에서는 엑셀 파일은 Workbook으로 인식되고 Workbook안에 Sheet가 있는 것으로 인식되니, 다음과 같이 WB 을 추가하는 내용 한줄 추가하고, 기존의 rngColumn 선언문에 WB까지 포함하는 것으로 변경해 주면 될것 같습니다.
Set WB = Workbooks.open("파일이름(경로포함)")
set rngColumn = WB.Sheets("Data")....
만약 다른 파일도 매크로가 실행될때 마다 다르게 골라서 실행하고 싶다고 하면 여기에 File dialog 구문을 추가해서 데이터 엑셀 파일을 고르게 해도 될것 같습니다.
Set F_dlg = Application.FileDialog(msoFileDialogFilePicker)
F_dlg.Show
F_Name = F_dlg.SelectedItems(1)
Set WB = Workbooks.open(F_Name)
set rngColumn = WB.Sheets("Data")....
직접 실행하면서 테스트 해본건 아니라서 정상 동작할지는 잘 모르겠네요... Sample 파일이 있으면 Test한번 해보면 좋겠긴 한데....
@@TricksOffice 오... 답변 정말 감사합니다!!!
지금 사무실이라서 한번 해봤는데 몇가지 문제가 발생했습니다 ㅠ_ㅠ...
첫번째는 검색을 하면 업데이트 하라고 나오면서 불러올 엑셀파일을 실행합니다
- 저장용 엑셀파일은 실행하지 않는 방법이 없을까요? ㅠㅠ
두번째는 검색해서 업데이트 버튼을 눌러야 결과가 나오고 결과가 잘 나왔는데 에러창이 뜨면서 디버그를 하라고 합니다.
혹시 가능하시면 샘플 파일을 드려도 될까요....???
조금 정리해서 내용을 말씀드리면
1. 사원들은 검색기(예시).xlsm 파일만 사용
2. 검색기_DB.xlsm 파일은 관리자가 관리 및 업데이트
3. 자료 검색 시 DB.xlsm 파일이 실행되지 않는 방법이 있는지
4. 디버그 창에 나오는 내용은 아래 작성해드리겠습니다.
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Address "$C$3" Then Exit Sub
If IsEmpty(Target) Then Exit Sub
T = .Value
End With
Application.ScreenUpdating = False
Set WB = Workbooks.Open("D:\승표 진행\2020\검색기\검색기_DB")
Set rngColumn = Sheets("DB").Range("B2").CurrentRegion.Columns(1)
Range("B6:G" & Rows.Count).ClearContents
With rngColumn
If WorksheetFunction.CountIf(rngColumn, "*" & T & "*") = 0 Then
Target.Select
MsgBox " 입력하신 데이터에 해당하는 자료가 없습니다! ", 64, "입력오류 "
Exit Sub
Else
.AutoFilter 1, "=*" & T & "*"
.Offset(1).Resize(.Cells.Count - 1, 7).SpecialCells(12).Copy
Range("B6").PasteSpecial (3)
.AutoFilter
Target.Select
@로꼬미데빌
다음의 소스파일로 바꿔보시죠.
에러는
두개의 파일이 열리면서 포커스가 DB 파일로 넘어갔을때 기존 파일의 Range 위치를 정확히 찾지 못해서 발생한 에러였던것 같습니다.
(OPWB.active 추가했습니다.)
엄밀히 말하면 DB 파일은 실행이 안되는것은 아니고, 순식간에 실행되었다가 순식간에 닫혀서 일반 사용자분들은 모르시게 처리했습니다.
(WB Close 추가했습니다.)
※ 소스 중간에 있는 Exit Sub 부분은 제외했습니다. 안그러면 검색 실패시 DB 파일을 닫지 않고 종료 처리됩니다.
그래도 안되면, sample 파일 보내주실수 있으세요?
------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
Dim WB As Workbook
Dim OPWB As Workbook
Set OPWB = ActiveWorkbook
With Target
If .Address "$C$3" Then Exit Sub
If IsEmpty(Target) Then Exit Sub
T = .Value
End With
Application.ScreenUpdating = False
Set WB = Workbooks.Open("D:\승표 진행\2020\검색기\검색기_DB")
Set rngColumn = Sheets("DB").Range("B2").CurrentRegion.Columns(1)
Range("B6:G" & Rows.Count).ClearContents
With rngColumn
If WorksheetFunction.CountIf(rngColumn, "*" & T & "*") = 0 Then
OPWB.Activate
Target.Select
MsgBox " 입력하신 데이터에 해당하는 자료가 없습니다! ", 64, "입력오류 "
Else
.AutoFilter 1, "=*" & T & "*"
.Offset(1).Resize(.Cells.Count - 1, 7).SpecialCells(12).Copy
OPWB.Activate
Range("B6").PasteSpecial (3)
.AutoFilter
OPWB.Activate
Target.Select
End If
End With
WB.Close savechanges:=False
Application.ScreenUpdating = True
End Sub
---------------------------------------------
550sn@naver.com
파일의 상세속성을 리스트로 만들려면, 어떻게 매크로파일을 만드는지 궁금합니다.
상세 속성이라는것이 파일 정보에 Defalut하게 들어있는 속성이라면 방법이 있을것 같은데, 이점은 주말에 한번 볼께요.
아니면, 매크로 말고도 엑셀 메뉴에서도 파일 리스트를가져오는 기능도 있는데, 여기서는 안보일까요?
데이터탭 >> 새 쿼리 >> 파일에서 >>폴더에서
이것도 꽤 편하게 사용할 수도 있습니다. 저도 이 영상을 만들고 한참 지나고 나서야 알았네요.. ^^;