"Nouvel utilisateur VBA, Excel 2010, et j'ai plusieurs classeurs d'estimation des coûts dans le même dossier. Je souhaite parcourir tous les classeurs, puis parcourir uniquement les première et deuxième feuilles de calcul, puis copier et coller les valeurs finales de cellules spécifiquesEn boucle dans de nombreux classeurs, bouclez uniquement les première et deuxième feuilles de calcul, puis copiez/collez des cellules dans un classeur
J'ai rassemblé plusieurs extraits de plusieurs sources dans le texte ci-dessous. "boucle pour la feuille de calcul" Distro Sheet "semble être saisir des données.La deuxième boucle" If "pour" Execution Estimation "ne semble jamais coller des cellules? J'ai essayé de marquer les deux premières feuilles de calcul, utilisé un tableau, et utilisé un "déclaration Aucune de ces méthodes n'a fonctionné Aucune idée serait grandement appréciée ! "
Sub GatherData()
Dim wkbkorigin As Workbook
Dim originsheet As Worksheet
Dim destsheet As Worksheet
Dim ResultRow As Long
Dim Fname As String
Dim RngDest As Range
Dim ws As Worksheet
Set destsheet = ThisWorkbook.Worksheets("Project Cost Tracker")
Set RngDest = destsheet.Cells(Rows.Count, 1).End(xlUp).Offset(1,0).EntireRow
Fname = Dir(ThisWorkbook.Path & "/*.xlsx")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Do While Fname <> "" And Fname <> ThisWorkbook.Name
Set wkbkorigin = Workbooks.Open(ThisWorkbook.Path & "/" & Fname)
For Each ws In wkbkorigin.Worksheets
If ws.Name = "Distro Sheet" Then
RngDest.Cells(6, 1).Value = ws.Range("C8").Value
RngDest.Cells(6, 5).Value = ws.Range("H8").Value
RngDest.Cells(5, 2).Value = ws.Range("C10").Value
RngDest.Cells(7, 1).Value = ws.Range("C15").Value
RngDest.Cells(8, 1).Value = ws.Range("C16").Value
RngDest.Cells(9, 1).Value = ws.Range("C17").Value
RngDest.Cells(10, 1).Value = ws.Range("C18").Value
RngDest.Cells(11, 1).Value = ws.Range("C19").Value
RngDest.Cells(7, 5).Value = ws.Range("D20").Value
RngDest.Cells(8, 5).Value = ws.Range("D21").Value
RngDest.Cells(9, 5).Value = ws.Range("D22").Value
RngDest.Cells(10, 5).Value = ws.Range("D23").Value
RngDest.Cells(11, 5).Value = ws.Range("D24").Value
End If
If ws.Name = "Execution Estimate" Then
RngDest.Cells(8, 10).Value = ws.Range("J99").Value
RngDest.Cells(9, 10).Value = ws.Range("J157").Value
RngDest.Cells(10, 10).Value = ws.Range("J186").Value
End If
Set RngDest = RngDest.Offset(1, 0)
Next ws
wkbkorigin.Close SaveChanges:=False
Fname = Dir()
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Avez-vous essayé de parcourir ligne par ligne avec le débogueur? – SandPiper
@SandPiper Oui, la variable ws parcourt chaque feuille comme il se doit, mais sur la feuille n ° 2 "Estimation de l'exécution" aucune des valeurs ne remplit mon classeur récapitulatif. Semble-t-il qu'il existe une meilleure façon de parcourir uniquement des feuilles de travail plutôt que toutes? Merci pour vos commentaires! –
Quelle est la valeur de 'ws.Name' quand vous arrivez à la deuxième feuille? Est-ce '' Execution Estimate "' (cas exact, pas d'espace supplémentaire, orthographe exacte)? (c'est-à-dire lorsque vous parcourez le code, est-il réellement ** dans ** la seconde instruction "If"?) – YowE3K