我面临的问题似乎非常奇怪。
我想遍历目录中的所有文件来计算文件的数量(对于i = 1到数字文件)((OK),打开它们中的每一个(OK)并将范围复制到主表。我的问题是,我希望在每个文件之后,我的粘贴目标将在右边的步骤中取消(使用我的循环i)。由于一个原因我不明白,它不起作用,我推测它因为我不放置我的循环在适当的地方,但我无法弄清楚在哪里放置它。
如果有人有任何想法,我会非常感谢帮助:)问候,
让米歇尔
Sub synthèsewb()
Dim synthese As Worksheet
Dim chemin As String
Dim fichier As String
Dim WorkBk As Workbook
Dim SourceRange As Range
Dim DestRange As Range
Dim i As Integer
' détermine la feuille de synthèse
Set synthese = ThisWorkbook.Sheets(1)
' chemin d'accès aux fichiers
chemin = "V:\DFIN\COM\CCG\CONSO\6-Fichiers de contrôle de liasses\2017\traitement par macro\"
' appel de tous les fichiers xls
fichier = Dir(chemin & "*.xls*")
'Comptage nombre de fichiers existant
Do Until fichier = ""
nbfichier = nbfichier + 1
fichier = Dir
Loop
' boucle sur tous les fichiers
Do While fichier <> ""
' ouvre les fichiers
Set WorkBk = Workbooks.Open(chemin & fichier)
'boucle sur toutes les feuilles du classeur ouvert
For Each sh In WorkBk.Worksheets
nom = WorkBk.Name
For i = 2 To nbfichier
If sh.Name = "copieSynthèse" Then
sh.Range("H16:H22").Copy synthese.Cells(3, i)
sh.Range("H10").Copy synthese.Cells(10, i)
Set alimenter = ThisWorkbook.Sheets(1).Cells(2, i)
For Each c In alimenter.Cells
If c.Value = "" Then c.Value = nom
Next c
End If
i = i + 1
Next i
Next sh
' Close the source workbook without saving changes.
WorkBk.Close savechanges:=False
' Use Dir to get the next file name.
fichier = Dir()
Loop
' Call AutoFit on the destination sheet so that all
' data is readable.
ActiveSheet.Columns.AutoFit
End Sub
我认为你根本不需要i
循环。
i = 2
Do While fichier <> ""
' ouvre les fichiers
Set WorkBk = Workbooks.Open(chemin & fichier)
nom = WorkBk.Name
'boucle sur toutes les feuilles du classeur ouvert
For Each sh In WorkBk.Worksheets
If sh.Name = "copieSynthèse" Then
sh.Range("H16:H22").Copy synthese.Cells(3, i)
sh.Range("H10").Copy synthese.Cells(10, i)
Set alimenter = ThisWorkbook.Sheets(1).Cells(2, i)
If alimenter.Value = "" Then alimenter.Value = nom
End If
Next sh
' Close the source workbook without saving changes.
WorkBk.Close savechanges:=False
' Use Dir to get the next file name.
fichier = Dir()
i = i + 1
Loop
如果您打算将每个文件更改为2列,请更改为i = i + 1
。注意我无法测试它没有相同的文件,重现环境需要很长时间。此外,您不需要迭代超过1x1范围,只需直接引用它。
我不会说法语,但我可以说nbfichier
持有当前正在打开的工作簿的编号。
话虽如此,用i=2
开始循环没有任何意义,因为预期的起始值是1。
For i = 2 To nbfichier