我面临的问题似乎非常奇怪。
我想循环遍历目录中的所有文件来计算文件数量(要做一个For 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
答案 0 :(得分:2)
我认为你根本不需要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范围,只需直接引用它。
答案 1 :(得分:0)
我不会说法语,但我可以说nbfichier
包含当前正在打开的工作簿的编号。
话虽如此,用i=2
开始一个循环没有任何意义,因为预期的起始值是1。
For i = 2 To nbfichier