imagelookup 보조명령어에서 계속 에러(컴파일오류)가....

VBA
작성자
u***
작성일
2020-05-21 16:25
조회
2471

안녕하세요 오빠두 선생님

Function IsInArray(FindValue As Variant, _
vaArray As Variant, _
Optional ExactMatch As Boolean = True, _
Optional returnType As xlArrayReturnType = rtnValue, _
Optional Dimension As Integer = 0, _
Optional vbCompare As VbCompareMethod = vbTextCompare) As Variant

이 부분에서 에러가 표시 되네요.. 뭐가 잘못되었을까요?
보조명령어 전문을 아래와 같이 해서 s서브모듈에 넣었습니다.

계속 질문드려서 죄송합니다...

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ vbFileSearch 함수
'▶ 지정한 폴더에 특정 확장자를 가진 파일명을 유사일치/정확히 일치로 검색합니다.
'▶ 인수 설명
'_____________FileName : 검색할 파일명입니다.
'_____________LookIn : 조회할 폴더입니다.
'_____________Extension : 특정 확장자만 조회합니다. (쉼표(,)로 구분)
'_____________ExactMatch : 정확히일치 검색 여부입니다.
'_____________withPath : True일 경우 결과값에 폴더경로를 출력합니다.
'▶ 사용된 기타 사용자지정함수
'_____________SplitFileExt 함수
'_____________IsInArray 함수
'_____________ListFiles 함수
'###############################################################
Function vbFileSearch(FileName As String, _
LookIn As String, _
Optional ExactMatch As Boolean = True, _
Optional Extension As String = "", _
Optional withPath As Boolean = True) As String

Dim sFullName As Variant
Dim sExts As Variant: Dim sExt As Variant
Dim vaArr As Variant: Dim vaRtn As Variant
Dim i As Long: Dim j As Long

vbFileSearch = "-1"
If Right(LookIn, 1) <> "\" Then LookIn = LookIn & "\"

vaArr = SplitFileExt(ListFiles(LookIn, False))
vaRtn = IsInArray(FileName, vaArr, ExactMatch, rtnArrayValue, 0)

If TypeName(vaRtn) = "Variant()" Then
If Extension = "" Then
If withPath = True Then vbFileSearch = LookIn & vaRtn(0, 0) & vaRtn(0, 1) Else: vbFileSearch = vaRtn(0, 0) & vaRtn(0, 1)
Else
sExts = Split(Extension, ",")
For Each sExt In sExts
For i = LBound(vaRtn) To UBound(vaRtn)
If StrComp(CStr(vaRtn(i, 1)), CStr("." & Trim(sExt)), vbTextCompare) = 0 Then
If withPath = True Then
vbFileSearch = LookIn & vaRtn(i, 0) & vaRtn(i, 1)
Exit Function
Else
vbFileSearch = vaRtn(i, 0) & vaRtn(i, 1)
Exit Function
End If
End If
Next
Next
vbFileSearch = "-1"
End If
Else
vbFileSearch = vaRtn
End If

End Function

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ SplitFileExt 함수
'▶ 배열 또는 String으로 받아온 확장자가 포함된 파일경로를 파일이름과 확장자로 분리합니다. (2차원 배열, 0 - 파일명, 1 - 확장자)
'▶ 인수 설명
'_____________Files : 확장자를 분리할 배열 또는 파일명입니다.
'###############################################################
Function SplitFileExt(Files As Variant) As Variant

Dim i As Long
Dim sFile As String
Dim vaArr As Variant

On Error GoTo ErrHandler:

'// 파일 타입을 확인합니다. 배열 또는 기타 문자열일 경우
If TypeName(Files) = "Variant()" Then
'// 입력 형식이 배열일 경우
ReDim vaArr(LBound(Files) To UBound(Files), 0 To 1)
For i = LBound(Files) To UBound(Files)
sFile = Files(i)
vaArr(i, 0) = Left(sFile, InStrRev(sFile, ".") - 1)
vaArr(i, 1) = Right(sFile, Len(sFile) - InStrRev(sFile, ".") + 1)
Next
Else
'// 입력 형식이 기타 문자열일 경우
ReDim vaArr(0, 1)
vaArr(0, 0) = Left(Files, InStrRev(Files, ".") - 1)
vaArr(0, 1) = Right(Files, Len(Files) - InStrRev(Files, ".") + 1)
End If

SplitFileExt = vaArr

Exit Function

ErrHandler:
MsgBox "올바른 파일경로 또는 파일명을 입력하세요." & sFile
End

End Function

Option Explicit

Public Enum xlArrayReturnType
rtnSequence = 1
rtnValue = 2
rtnArrayValue = 3
End Enum

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ IsInArray 함수
'▶ 배열안에 선택한 값의 존재여부를 확인합니다. 4가지 값으로 반환 가능합니다. (순번, 값, 배열)
'▶ 인수 설명
'_____________FindValue : 배열에서 찾을 값입니다.
'_____________vaArray : 값을 검색할 배열입니다.
'_____________ExactMatch : 정확히일치/유사일치 검색여부입니다.
'_____________returnType : 반환형식을 결정합니다. (Public Enum)
'_____________Dimension : 값을 검색할 배열의 차원입니다.
'_____________vbCompare : 대소문자 구분 여부입니다. (vbTextCompare : 대소문자구분X, vbBinaryCompare : 대소문자구분)
'▶ 사용된 기타 사용자지정함수
'_____________ArrayDimension 함수
'▶ 그외 참고사항
'_____________xlArrayReturnType PublicEnum이 사용되었습니다.
'###############################################################

Function IsInArray(FindValue As Variant, _
vaArray As Variant, _
Optional ExactMatch As Boolean = True, _
Optional returnType As xlArrayReturnType = rtnValue, _
Optional Dimension As Integer = 0, _
Optional vbCompare As VbCompareMethod = vbTextCompare) As Variant

Dim i As Long: Dim j As Long
Dim dicArr As Object: Dim dicKey As Variant: Dim dicKeys As Variant
Dim rtnArr As Variant
Dim ArrDim As Integer

ArrDim = ArrayDimension(vaArray)
Set dicArr = CreateObject("Scripting.Dictionary")

'// IsInArray 초기값을 설정합니다.
IsInArray = -1

'// 정확히일치일 경우
If ExactMatch = True Then
'// 값이 있을시 ReturnType에 따라 반환합니다. (정확히 일치이므로 결과는 무조건 1개만 반환)
If ArrDim = 1 Then
'// 배열이 1차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
If StrComp(FindValue, vaArray(i), vbCompare) = 0 Then
If returnType = rtnValue Or returnType = rtnArrayValue Then IsInArray = vaArray(i): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
End If
Next i
Else
'// 배열이 2차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
If StrComp(FindValue, vaArray(i, Dimension), vbCompare) = 0 Then
If returnType = rtnValue Then IsInArray = vaArray(i, Dimension): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
If returnType = rtnArrayValue Then dicArr.Add i, i: Exit For
Exit For
End If
Next i

'// Dictionary에 값이 하나라도 존재시
If dicArr.Count > 0 Then
'배열 Redim
ReDim rtnArr(0, 0 To ArrDim - 1)
'// Dictionary 에서 받아온 각 값을 배열로 옮깁니다
For Each dicKey In dicArr.keys
For j = LBound(vaArray, 2) To UBound(vaArray, 2)
rtnArr(0, j) = vaArray(dicKey, j)
Next
Next
'// 배열로 결과를 출력합니다
IsInArray = rtnArr
End If
End If

'// 유사일치일 경우
Else
If ArrDim = 1 Then
'// 배열이 1차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
'// 값이 있을시 ReturnType에 따라 결과를 반환합니다
If InStr(1, vaArray(i), FindValue) > 0 Then
If returnType = rtnValue Then IsInArray = vaArray(i): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
If returnType = rtnArrayValue Then dicArr.Add i, i
End If
Next i

'// 유사일치 값이 하나라도 존재시
If dicArr.Count > 0 Then
'배열 Redim
ReDim rtnArr(0 To dicArr.Count - 1)
i = 0
'// Dictionary 에서 받아온 각 값을 배열로 옮깁니다
For Each dicKey In dicArr.keys
rtnArr(i) = vaArray(dicKey)
i = i + 1
Next
'// 배열로 결과를 출력합니다
IsInArray = rtnArr
End If
Else
'// 배열이 2차원일 경우
For i = LBound(vaArray) To UBound(vaArray)
'// 값이 있을시 ReturnType에 따라 결과를 반환합니다
If InStr(1, vaArray(i, Dimension), FindValue) > 0 Then
If returnType = rtnValue Then IsInArray = vaArray(i, Dimension): Exit For
If returnType = rtnSequence Then IsInArray = i: Exit For
If returnType = rtnArrayValue Then dicArr.Add i, i
End If
Next i

'// 유사일치 값이 하나라도 존재시
If dicArr.Count > 0 Then
'배열 Redim
ReDim rtnArr(0 To dicArr.Count - 1, 0 To ArrDim - 1)
i = 0
'// Dictionary 에서 받아온 각 값을 배열로 옮깁니다
For Each dicKey In dicArr.keys
For j = LBound(vaArray, 2) To UBound(vaArray, 2)
rtnArr(i, j) = vaArray(dicKey, j)
Next
i = i + 1
Next
'// 배열로 결과를 출력합니다
IsInArray = rtnArr
End If

End If
End If

End Function
'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ ArrayDimension 함수
'▶ 배열의 차원수를 반환합니다.
'▶ 인수 설명
'_____________vaArray : 차원을 검토할 배열을 입력합니다.
'###############################################################
Function ArrayDimension(vaArray As Variant) As Integer

Dim i As Integer: Dim x As Integer

On Error Resume Next

Do
i = i + 1
x = UBound(vaArray, i)
Loop Until Err.Number <> 0

Err.Clear

ArrayDimension = i - 1

End Function

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ ListFiles 함수
'▶ 선택한 폴더의 파일목록을 배열로 반환합니다.
'▶ 인수 설명
'_____________sPath : 파일목록을 출력할 폴더입니다.
'_____________withPath : 폴더경로를 같이 출력할 여부를 결정합니다.
'###############################################################

Function ListFiles(sPath As String, Optional withPath As Boolean = False)

'// 각 변수를 생성합니다.
Dim arr As Variant
Dim i As Integer
Dim oFSO As Object: Dim oFolder As Object: Dim oFiles As Object: Dim oFile As Object

Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(sPath)
Set oFiles = oFolder.Files

'// 변수를 설정합니다.
i = 1
If oFiles.Count = 0 Then Exit Function
If Right(sPath, 1) <> "\" Then sPath = sPath & "\"

'// 폴더에 파일이 한개라도 존재시 배열 생성합니다.
ReDim arr(1 To oFiles.Count)

'// 각 파일을 돌아가며 Arr 배열로 반환합니다.
For Each oFile In oFiles
If withPath = False Then arr(i) = oFile.Name Else: arr(i) = sPath & oFile.Name
i = i + 1
Next

'// 배열을 결과값으로 출력합니다.
ListFiles = arr

End Function

'###############################################################
'오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com)
'▶ cvRng 함수
'▶ 사용자지정함수에서 범위로 인수를 받을 시 사용합니다. 만약 인수가 범위로 입력되었을 경우, 범위에 입력된 값을 반환합니다.
'▶ 인수 설명
'_____________TargetRng : 값을 반환할 범위 또는 그외 값입니다.
'###############################################################
Function cvRng(TargetRng)

If TypeName(TargetRng) = "Range" Then
cvRng = TargetRng.Value
Else
cvRng = TargetRng
End If

End Function

신고
스크랩
공유
전체 1

  • 2020-05-22 18:21

    @u*** 님 안녕하세요?
    적어주신 내용만으로는 정확한 답변을 드리기 어렵습니다.
    어떤 오류가 출력되는지 스크린샷 또는 오류문구를 같이 적어주시겠어요?
    감사합니다.


전체 16,956
번호 카테고리 제목 작성자 작성일 추천 조회
알림
[📚진짜쓰는 실무엑셀] 2024년 엑셀 공부, 이 책 한권으로 마스터하세요! (291)
오빠두엑셀 | 2022.02.03 | 추천 554 | 조회 849682
오빠두엑셀 2022.02.03 554 849682
공지사항 문서서식
⭐ [더 나은 커뮤니티 문화를 위한 Q&A 글 작성 규칙] ⭐ (197)
오빠두엑셀 | 2021.10.28 | 추천 304 | 조회 31680
오빠두엑셀 2021.10.28 304 31680
74673 함수/공식
New 제조일자별 가장빠른 재고와 다음으로 빠른 위치 도출방법 문의 엑셀파일첨부파일 (2)
Joshu | 13:57 | 추천 0 | 조회 37
Joshu 13:57 - 37
74671 VBA
New 유튜브에서 소개하신 엑셀 문자발송 자동화 예제파일에 대한 문의 드립니다. (1)
jckim**** | 07:15 | 추천 0 | 조회 45
jckim**** 07:15 - 45
74669 피벗테이블
New 피벗테이블 날짜 그룹화에 원치 않는 범위 생성 첨부파일
단팥빵 | 01:08 | 추천 0 | 조회 43
단팥빵 01:08 - 43
74664 기능/도구
New 엑셀 빠른실행도구에 원하는 폰트 등록(바로가기) 가능한가요 ? (1)
불량감자 | 2024.11.01 | 추천 0 | 조회 55
불량감자 2024.11.01 - 55
74662 VBA
New LISTBOX 목록 상자를 만들려고 하는데 ... (1)
땡이 | 2024.11.01 | 추천 0 | 조회 64
땡이 2024.11.01 - 64
74660 함수/공식
New 엑셀처리 속도 관련 질문 (2)
캐쿨이 | 2024.11.01 | 추천 0 | 조회 79
캐쿨이 2024.11.01 - 79
74655
New 데이터 유효성검사 그룹화 하여 여러시트 값 넣기 해결방법 알려주세요 첨부파일 (1)
훅가 | 2024.11.01 | 추천 0 | 조회 68
훅가 2024.11.01 - 68
74654 함수/공식
New 필요 없는 열 숨기기 조건부서식 엑셀파일첨부파일 (2)
JL2 | 2024.11.01 | 추천 0 | 조회 62
JL2 2024.11.01 - 62
74653 VBA
New Form의 CommandButton에서 Module에 있는 매크로 사용방법 문의 첨부파일 (3) 답변완료
땡이 | 2024.11.01 | 추천 0 | 조회 54
땡이 2024.11.01 - 54
74651 문서서식
New 엑셀 번역 기능 질문 입니다. (1)
Foxtail011 | 2024.11.01 | 추천 0 | 조회 65
Foxtail011 2024.11.01 - 65
74649 함수/공식
New 이중 데이터 유효성 질문드립니다. 엑셀파일 (3)
반흔 | 2024.11.01 | 추천 0 | 조회 84
반흔 2024.11.01 - 84
74648 파워쿼리/피벗
New 파워쿼리 구분기호 사라짐 (1)
Byun_inn | 2024.11.01 | 추천 0 | 조회 63
Byun_inn 2024.11.01 - 63
74643 파워쿼리/피벗
New 파워쿼리 구분 키워드 설정 관련 첨부파일 (11) 답변완료
Byun_inn | 2024.11.01 | 추천 0 | 조회 80
Byun_inn 2024.11.01 - 80
74641 함수/공식
New 선택된 셀에 색상넣기 (셀에 만 적용) 수식 변경 부탁드립니다. (8)
갓바위 龍 | 2024.11.01 | 추천 0 | 조회 78
갓바위 龍 2024.11.01 - 78
74639 함수/공식
New 데이터유효성 검사를 통해 40배수의 수만 입력 (10)
쿠노이 | 2024.11.01 | 추천 0 | 조회 91
쿠노이 2024.11.01 - 91
74638 피벗테이블
New 피벗테이블 날짜 그룹화 원치 않는 범위가 뜹니다. (1) 답변완료
단팥빵 | 2024.10.31 | 추천 0 | 조회 76
단팥빵 2024.10.31 - 76
74633 문서서식
New 안녕하세요 게임 시스템 테이블 작성 배우고 있는데 기초적인 부분을 잘 모르겠어서 질문 드립니다! 첨부파일 (1) 답변완료
코니 | 2024.10.31 | 추천 0 | 조회 93
코니 2024.10.31 - 93
74632 기능/도구
New 챗gpt 연동해서 이미지로 된 표의 데이터를 가져오려고 합니다.
김수현 | 2024.10.31 | 추천 0 | 조회 97
김수현 2024.10.31 - 97
74628 구글시트
New IMPORTRANGE 함수에서 칸을 늘리면 사라지는데 고정하는 방법은 없을까요? (3)
야망이 | 2024.10.31 | 추천 0 | 조회 97
야망이 2024.10.31 - 97
74627 문서서식
New 조건부 서식 문의 엑셀파일첨부파일 (9)
배고픈짐승 | 2024.10.31 | 추천 0 | 조회 118
배고픈짐승 2024.10.31 - 118
74626 파워쿼리/피벗
New [파워쿼리] 여러 파일 한번에 불러올 때 데이터 유실 첨부파일 (3)
naa**** | 2024.10.31 | 추천 0 | 조회 81
naa**** 2024.10.31 - 81
74625 VBA
New 시트이동시 유저폼 실행방법 문의 (3) 답변완료
땡이 | 2024.10.31 | 추천 0 | 조회 86
땡이 2024.10.31 - 86
74621 기능/도구
New 4개의 열 에서 같은 이름 가로로 정렬 (4)
Bukonge | 2024.10.31 | 추천 0 | 조회 88
Bukonge 2024.10.31 - 88
74618 VBA
New 유저폼에 바코드스캔시 입력속도 개선방법? (6) 답변완료
땡이 | 2024.10.31 | 추천 0 | 조회 79
땡이 2024.10.31 - 79
74616 함수/공식
New Rawdata 첨부파일 (4)
HIHUGO | 2024.10.31 | 추천 0 | 조회 91
HIHUGO 2024.10.31 - 91
74604 문서서식
New 간트차트 조건부서식 이용 문의 엑셀파일첨부파일 (3)
배고픈짐승 | 2024.10.30 | 추천 0 | 조회 98
배고픈짐승 2024.10.30 - 98
74599 함수/공식
New 이런 경우에는 무슨 함수를 써야할까요..? (3)
iwnqn | 2024.10.30 | 추천 0 | 조회 133
iwnqn 2024.10.30 - 133
74598 문서서식
New 엑셀 유효성 검사 뛰어 쓰기 문제 엑셀파일 (2) 답변완료
퉁퉁이 | 2024.10.30 | 추천 0 | 조회 93
퉁퉁이 2024.10.30 - 93
74592 함수/공식
New 여러 값들 중에서 원하는 값을 찾고 싶어요 도와주세요! 첨부파일 (9) 답변완료
저도해볼게요 | 2024.10.30 | 추천 0 | 조회 117
저도해볼게요 2024.10.30 - 117
74589 구글시트
New 한셀에 줄바꿈으로 있는 여러데이터를 한셀에 한데이터 들어가게끔 일괄로 하고 싶습니다 첨부파일 (4) 답변완료
스톤스톤 | 2024.10.30 | 추천 0 | 조회 76
스톤스톤 2024.10.30 - 76