Excel VBA .Trouver de méthode entre classeurs

Question:
Pourquoi le Range.Find méthode ne fonctionne pas lorsque le référencement d'un autre classeur?

Problème:
Je suis d'essayer de copier des données entre des classeurs, mais le Range.Find méthode est en cours d'arrêt avec une "Erreur d'Exécution 1004". J'utilise Excel 2007 sur une machine Windows 7.

Détails:
Sur deux classeurs, seule la feuille "Sheet1" est référencé ou utilisée pour chaque classeur. J'ai une procédure (ztest) avec le plan suivant:

  1. Format de la feuille
  2. Boucle dans toutes les cellules dans la colonne E du cahier de travail #1
  3. À l'aide de la Range.Find méthode, de trouver de la valeur dans la colonne E du cahier de travail #2
  4. Une fois trouvé, ensemble classeur n ° 1 décalage de colonne = classeur n ° 2 décalage de colonne

J'aimerais le faire avec .Find - pas à l'aide de HLOOKUP ou similaires.

J'ai simplifié le code un peu, à affiner ce qui se passe exactement. Cela ne montre pas l'étape 4 ci-dessus, mais l'erreur se produit à l'étape 3, dans la déclaration contenant les .Find méthode:

Public Sub ztest2()
'set workbook titles
Const w1 As String = "05AR 20130920.xlsx"
Const w2 As String = "05AR 20130923.xlsx"
Dim cl As Variant

With Workbooks(w2).Worksheets(1)
  'format the sheet
  .Range("A1", "D1").EntireColumn.Hidden = True
  'loop through all cells column E of workbook #1
  For Each cl In .Range("E2", Cells(Rows.Count, "E").End(xlUp))
    'find value of current cell in column E, workbook #2
    Workbooks(w1).Worksheets(1) _
    .Range("E2", Cells(Rows.Count, "E").End(xlUp)) _
    .Find(what:=cl.Value, LookIn:=xlValues).Select
  Next
End With

End Sub
Les oiseaux de Vue: il Vous manque un POINT avant de Cellules... Vous avez besoin pour obtenir votre objet de Cellules, en tous lieux.
BTW +1 pour un bien mis à la question...

OriginalL'auteur Aaron Thomas | 2013-09-23