私は継続的に更新する必要がある29個のファイルがあります。これらのファイルはすべて同じフォルダにあります。 29個のExcelファイルがある別のフォルダがあります(これらのファイルは毎週抽出されます)。これらのファイルはすべて同じフォルダ(フォルダ2)にあります 更新するExcelファイルごとに、同じ名前のExcelファイルを検索する必要があります。フォルダ2では、ワークシート(「シート1」)を更新されるExcelファイル。 以下は私のコードです。 私は、コードを実行すると、私はメッセージ「ランタイムエラーの#5」を取得 、2つのディレクトリ内のファイル名が同一である場合にのみ、1 Dir
を持っている必要がありますする必要があり、あなたの助け2つのDir VBAの使用
Option Explicit
Public Sub ChoixRep()
Dim fd As FileDialog
Dim Reps As String
Dim Repi As String
MsgBox "Choisir le dossier des fichiers de suivi DD"
Set fd = Application.FileDialog(msoFileDialogFolderPicker) 'création d'une boite de dialogue choix de répertoire
fd.AllowMultiSelect = False 'on ne peut choisir qu'un seul repertoire
If fd.Show = -1 Then 'l'utilisateur à valider sa selection
Reps = fd.SelectedItems(1) 'le repertoire choisi
'Boucle repertoire
End If
MsgBox "Choisir le reportoire des fichiers à importer"
Set fd = Application.FileDialog(msoFileDialogFolderPicker) 'création d'une boite de dialogue choix de répertoire
fd.AllowMultiSelect = False 'on ne peut choisir qu'un seul repertoire
If fd.Show = -1 Then 'l'utilisateur à valider sa selection
Repi = fd.SelectedItems(1) 'le repertoire choisi
End If
doubleboucle Reps, Repi
End Sub
Private Sub doubleboucle(ByVal Reps As String, Repi As String)
Dim FichierS As String
Dim FichierI As String
Dim Ws As Workbook
Dim Wi As Workbook
FichierS = Dir(Reps & "\*.xls") 'je pense qu'on peut enlever .xls
FichierI = Dir(Repi & "\*.xls") 'je pense qu'on peut enlever .xls
Do While FichierS <> ""
Set Ws = Workbooks.Open(Reps & "\" & FichierS)
Do While FichierI <> ""
Set Wi = Workbooks.Open(Repi & "\" & FichierI)
If Ws.Name = Wi.Name Then
Traitement Ws, Wi
End If
Wi.Save
Wi.Close
FichierI = Dir
Loop
Ws.Save
Ws.Close
FichierS = Dir
Loop
End Sub
Private Sub Traitement(ByRef Ws As Workbook, Wi As Workbook)
Wi.Worksheets("Feuil1").Cells.Copy Ws.Add.Range("A1")
ActiveSheet.Move After:=Worksheets(Worksheets.Count)
Application.CutCopyMode = False 'Pour eviter d'avoir le message du presse papier à garder
End Sub
場合をファイルは両方のディレクトリで同じ名前を持っていますが、なぜ2つの 'Dir'が必要ですか? 1つのディレクトリ内の名前を知ると、自動的に別のディレクトリの名前を知ることができます。 – YowE3K
@ YowE3Kだから私は1つのDirを使用し、WsとWiの定義をそのまま保つことができますか? –
'If'の中に変数' Reps'と 'Repi'を設定しました。条件が満たされなければ、他の場所には設定しないで、最後に 'doubleboucle'関数で使用します。これによりエラーが発生する可能性があります。 –