이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
글 수 822
안녕하세요 아별님
저번에 보내주신 답변을 참고 하기는 하였으나 , 제가 원하던 구조랑 달라서 응용이 어렵네요 ^^.
파일명으로 검색을 하고 싶었는데... 폴더명으로 검색이 되니 이해가 잘 안되는거 같아 다시 한번 질문 드립니다.
A사과 / B사과 / C사과 / A배 / B배 / C배 라는 엑셀파일이 있을때 제가 사과 라는 단어를 입력하면 ,
사과라는 단어가 포함된 엑셀파일만 링크가 걸리는 방법을 알고 싶습니다..
인터넷에 보니까 제가 원하는 구조로 된 엑셀파일이 있기는 한데... 잠겨 있어서 코드 분석이 힘드네요..
^^ 도와 주세요 아별님
항상 감사합니다.
광택입니다님..
안녕하세요?
일전에 알려드린 자료를 조금만 수정하면 원하시는 것을 구현하실 수 있었을텐데요..
강좌파일 다운로드 링크 : http://www.iexceller.com/MyXls/Lectures/VisualBasic/VB0056.zip
좀 더 공부를 하셔야할 것 같습니다.
이번에는 그냥 만들어드리지만..
다음부터는.. 이렇게 만들었는데.. 이런 부분이 안된다는 식으로 질문해주시기 바랍니다.
그래야 실력이 향상될 수 있습니다.
다운받기 : abyul.com_SearchingFiles_20121008-1.zip
'### 재귀호출 함수를 이용하여 하위폴더의 파일까지 검색이 가능한 파일 검색 로직입니다.
'### http://abyul.com/
Option Explicit
Dim r As Long
Dim rngTarget As Range
Sub ab_SearchSubFoldersByRecursiveCall3()
Dim strFolder As String
strFolder = ThisWorkbook.Path & "\"
'### 상위 폴더셀에 아무 값도 넣지 않으면 현재 파일이 있는 폴더 하위 폴더 전체를 검색합니다.
If Range("B3") <> "" Then strFolder = strFolder & Range("B3") & "\"
'### 하위 폴더셀에 아무 값도 넣지 않으면 2012년 전체를 검색합니다.
If Range("C3") <> "" And Range("C3") <> "전체" Then strFolder = strFolder & Range("C3") & "\"
Set rngTarget = Range("B7")
Range(rngTarget, rngTarget.End(xlDown)).ClearContents
r = 0
Call ab_RecursiveCall3(strFolder)
End Sub
Sub ab_RecursiveCall3(Path As String)
Dim i As Integer
Dim intFolder As Integer
Dim strFile As String
Dim strFolder() As String
Dim strTemp As String
Dim Msg As String
Application.DisplayStatusBar = True
strFile = Dir(Path)
Dim cnt As Long: cnt = 0
Do While strFile <> ""
Application.StatusBar = "검색 중... " & Path & strFile
If InStr(strFile, Range("D3")) > 0 Then
ActiveSheet.Hyperlinks.Add Anchor:=rngTarget.Offset(r, 0), Address:=Path & strFile, TextToDisplay:=Path & strFile
r = r + 1
End If
strFile = Dir()
Loop
strFile = Dir(Path, vbDirectory)
Do While strFile <> ""
If strFile <> "." And strFile <> ".." Then
If GetAttr(Path & strFile) = vbDirectory Then
intFolder = intFolder + 1
ReDim Preserve strFolder(intFolder)
strFolder(intFolder) = Path & strFile
End If
End If
strFile = Dir()
Loop
For i = 1 To intFolder
Call ab_RecursiveCall3(strFolder(i) & "\")
Next i
Application.StatusBar = ""
End Sub