2017-10-04 2 views
-1

Bonjour à tous et merci d'avance pour votre temps.Excel VBA - Copie de divers classeurs nommés range dans un classeur "recap"

Je ne suis pas un grand spécialiste de la vba mais parfois cela m'aide à gagner du temps sur les tâches répétitives sur lesquelles je travaille.

Je voudrais recueillir des informations de divers fichiers dans un fichier "recap". J'ai nommé certaines plages (une cellule chacune) pour faciliter la recherche de ces informations dans tous les fichiers.


Voici les lignes que je commence à écrire:

Sub collectdata() 
    Set a = Workbooks.Open("C:\full address\Project1.xlsx") 
    Set b = Workbooks.Open("C:\full address\Project2.xlsx") 
    Set c = Workbooks.Open("C:\full address\Project3.xlsx") 

    ThisWorkbook.Sheets("Data").Range("C3") = a.Application.Range("Project1_Total") 
    ThisWorkbook.Sheets("Data").Range("C3") = b.Application.Range("Project2_Total") 
    ThisWorkbook.Sheets("Data").Range("C3") = c.Application.Range("Project3_Total") 

    a.Close savechanges:=False 
    b.Close savechanges:=False 
    c.Close savechanges:=False 
End Sub 

Je suis coincé avec l'erreur 1004. Je pense que je sais pourquoi, mais je ne sais pas comment corriger cela.

Avec un "projet" tout va bien.
Mais une fois que j'ajoute un deuxième fichier, j'obtiens l'erreur 1004.

Avec une plage nommée d'un projet c'est correct. Mais une fois que j'ajoute une deuxième plage nommée à partir du même fichier, j'obtiens l'erreur 1004.

Merci pour votre temps.

+0

Vous avez besoin de a.Sheets(), b.Sheets() etc ... comme vous le faites sur le côté gauche - plutôt que d'un.Application, b.Application, etc ... – CallumDA

Répondre

0

Cela fonctionnerait sous l'hypothèse que les plages sont sur la première feuille:

ThisWorkbook.Sheets("Data").Range("C3") = a.Sheets(1).Range("Project1_Total") 
ThisWorkbook.Sheets("Data").Range("D3") = b.Sheets(1).Range("Project2_Total") 
ThisWorkbook.Sheets("Data").Range("E3") = c.Sheets(1).Range("Project3_Total") 

Je suppose que vous ne vouliez pas écraser C3 plusieurs fois. Si vous ne savez pas sur quelle feuille les plages sont activées, vous pouvez utiliser find pour rechercher une plage dans un classeur.

+0

Ceci combiné avec CallumDA résolu ma problème. Merci pour le soutien. –

+0

Excellent. Pourriez-vous alors accepter la réponse pour clôturer la question? – JensS