オフセット付きの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
[OK]を、ここで問題を行く:
私は「フォルダの文字列が含まれているシートとの間のループにサイクルを使用していますが、 "彼のcellValueで、この場合文書のように。私はLeft(rangoCargo、6)を実行して、文字をコピーして後で新しいフォルダに移動するファイルが入っているフォルダに等しい文字数を正確にキャッチしました。
文書のような列に表示されているように、最初の値は "E-0001-997818"です。別のサブフォルダを含むメインフォルダは、メインフォルダOCと呼ばれます。 OCからは、文書を取得してそれを検索したフォルダ(IE E-001)に移動する必要があるので、E-001には新しいフォルダに移動する必要がある文書が含まれていますが、E-001はそのように呼び出されます彼らはそれほど呼び出されているが、余分な数字がたくさんある(私は理由を知らないので、企業はExcelファイルを私に与え、私はそれを修正せずに作業しなければならない)。 私は、それらを見つけるためのフォルダの正確な文字列を取得するために左()を行った、問題がある、私は "それはオブジェクトが必要です"エラーを修正する方法を知らない。 私はほとんどがオフセットのためだと確信していますが、私はそれを修正する方法がわかりません。
だから、どんな助けも非常に役に立つかもしれません。時間を過ごしてくれてありがとう。
左の関数をチェックするために 'rangoCargo'に文字列が含まれているかどうか確認するのに問題があることを示す点にブレークポイントを設定しましたか? –
はい、私はすでにそれをテストしました、それは "E-0001"を持っています。 – Matto
正確にどこが壊れているのか、問題があるのですか?それは左の関数か他のどこかにありますか?オハイオ州申し訳ありません私はあなたが問題を抱えていると言ったあなたのコメントを発見した。 –