오프셋이있는 While 사이클에 문제가 있습니다.루프주기의 오프셋 문제. 필요한 객체
나는 "폴더의 문자열을 포함하는 시트 사이의 루프에 사이클을 사용하고 있습니다 :
Sub Voucher()
Dim rangoCargo, rangoTAG, rangoTipo As Range
Dim archivo As String
Dim vFound As Boolean
Dim subFldr As Object
Dim subsubFldr As Object
Worksheets("OC").Visible = True
Worksheets("OC").Select
Set rangoTAG = Range("B2")
Set rangoCargo = Range("C2")
Set rangoTipo = Range("E2")
Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
rutaAño = ActiveWorkbook.Path & "\2017"
rutaFARFI = rutaAño & "\FAR_FI"
rutaFARTA = rutaAño & "\FAR_TA"
rutaFARTN = rutaAño & "\FAR_TN"
rutaGOPMTI = rutaAño & "\GOPM_TI"
rutaDocumentos = ActiveWorkbook.Path & "\SGSCM\02_ORDENES_DE_COMPRA\"
If Dir(ActiveWorkbook.Path & "\2017", vbDirectory) = "" Then 'This checks if a main folder exist, do the procedure, nothing special
MsgBox "Please, Check if the [2017] Folder Exists"
Else 'if it exists:
Do While Not IsEmpty(rangoCargo) 'Starts the cycle
If rangoTipo = "C" Then 'If Letter Type is C it loops through a folder until it finds the "C" Like one.
rangoCargo = Left(rangoCargo, 6)
For Each subFldr In CreateObject("Scripting.FileSystemobject").GetFolder(rutaFARFI).Subfolders
For Each subsubFldr In CreateObject("Scripting.FileSystemobject").GetFolder(subFldr).Subfolders
Debug.Print subsubFldr
vFound = False
If subsubFldr Like "*\" & rangoTipo & rangoTAG Then 'If it finds it, copy and move the file from another folder to it.
vFound = True
cFolder = subsubFldr.Path
archivo = Dir(rutaDocumentos & "\" & rangoCargo & "\*.*")
Do Until archivo = ""
Call fso.copyFile(rutaDocumentos & "\" & rangoCargo & "\" & archivo, cFolder & "\" & archivo)
archivo = Dir
Loop
End If 'ends subsubFldr
If vFound = True Then
Exit For
End If
Next subsubFldr
If vFound = True Then
Exit For
End If
Next subFldr
ElseIf rangoTipo = "P" Then
archivo = Dir(rutaDocumentos & "\" & rangoCargo & "\*.*")
Do Until archivo = ""
Call fso.copyFile(rutaDocumentos & "\" & rangoCargo & "\" & archivo, rutaFARFI & "\" & rangoTipo & "\" & rangoTAG & "\" & archivo)
archivo = Dir
Loop
End If
Set rangoTAG = rangoTAG.Offset(1, 0)
Set rangoTipo = rangoTipo.Offset(1, 0)
Set rangoCargo = rangoCargo.Offset(1, 0) 'THIS OFFSET HAS THE PROBLEM
'When the command Set rangoCargo = rangoCargo.Offset(1, 0) executes it throws the next message: Run Time Error '424' object required
Loop 'The cycle end when it founds ""
End If 'End if the folder [2017] doesn't exists
End Sub
확인, 문제는 여기 간다 :
이 코드의 "그의 셀 값에서이 경우 문서 Like. 나는 Left (rangoCargo, 6)를 사용하여 정확한 문자 수를 잡아 파일을 복사 할 파일이 들어있는 폴더와 같게하고 나중에 새 폴더로 옮깁니다.
문서 유사 열에서 볼 수 있듯이 첫 번째 값은 "E-0001-997818"입니다. 다른 하위 폴더를 포함하는 주 폴더 인 경우 주 폴더 인 OC을 호출합니다. OC에서 문서를 가져와 검색된 폴더 (IE E-001)로 이동해야하므로 E-001에 새 폴더로 이동해야하는 문서가 포함되어 있지만 E-001은 "Document Like"란 그것들은 그렇게 부르지 만 많은 여분의 숫자 (나는 왜 그런지 모르겠다. 기업이 파일을 나에게 넘겨 준다. 나는 수정하지 않고 그것으로 작업해야한다.). 그래서 나는 그들을 찾기 위해 폴더의 정확한 문자열을 얻기 위해 Left()를했는데 문제가있다. "Object Requires Object"오류를 수정하는 방법을 모르겠다. 나는 그것이 오프셋 때문이라고 거의 확신한다. 그러나 그것을 고치는 방법을 모른다.
어떤 도움도 매우 유용 할 수 있습니다. 시간을 내 주셔서 감사합니다.
'rangoCargo'에 왼쪽 함수가 확인할 문자열이 있는지 확인하는 데 문제가있는 지점에 중단 점을 넣었습니까? –
예, 테스트를 마쳤습니다. 다른 번호가없는 "E-0001"이 있습니다. – Matto
어디에서 문제가 발생 했습니까? 그것은 왼쪽 기능 또는 다른 곳에서 있습니까? 오, 죄송합니다. 당신이 문제를 제기했다는 의견을 발견했습니다. –