2010-10-07 15 views
1

J'ai un certain nombre de fichiers excel contenant rempli survery, maintenant je voudrais pour avoir un document maître qui aurait un résultat sommaire de chacun.Excel résumé de nombreuses données de fichiers Excel dans un rapport excel

Ainsi je l'imagerie d'avoir pour chaque fichier une entrée de ligne: nom - adresse - des données ...

Je voudrais ouvrir chacun des fichiers et copier les données à partir de cellules sélectionnées dans mon maître fichier.

J'ai compris que je peux créer une instance invisible d'Excel, donc il ne sera pas affiché à l'utilisateur.

Comment puis-je copier/coller les données supposent de A1 dans ma feuille?

Sub Combine() 
    Fpath = "c:\test\" 
    Fname = Dir(Fpath & "*.xls") 
    Dim xl As Excel.Application 
    Set xl = CreateObject("Excel.Application") 
    xl.Visible = false 
    Dim w As Workbook 
    Dim remoteBook As Workbook 
    Set remoteBook = xl.Workbooks.Open(Fpath & Fname) 
    xl.Quit 
End Sub 

Je suis nouveau dans VBA, la voie d'accès semble être assez compliqué, il est beaucoup plus facile pour obtenir des valeurs de ceux fichiers Excel? Je souhaite vraiment avoir une solution simple. Ce qui est plus ennuyeux sont les macros VBA dans les fichiers d'enquête puis-je désactiver ceux sur l'ouverture afin que l'utilisateur ne soit pas invité?

merci!

Répondre

0

Vous êtes sur la bonne voie. Ce n'est pas difficile et je ne pense pas qu'il existe un moyen plus simple d'obtenir des données d'un autre classeur. Ecrire une fonction et vous pouvez réutiliser le code facilement.

Si les macros sont nécessaires uniquement pour compiler les données d'enquête, vous pouvez supprimer les macros du fichier xls rempli. Sinon, vous devrez modifier les autorisations de sécurité sur chaque ordinateur ou signer numériquement le projet.

2

Ce sont au moins 4 questions en une, nous allons voir ce que nous pouvons faire à ce sujet :-)

Tout d'abord, il n'y a pas besoin de créer une autre instance Excel, il suffit d'ajouter votre code dans un classeur vide (ou dans votre document maître, si c'est ok pour vous)

Public Function OpenWorkbook(mypath As String) As Workbook 
    Workbooks.Open Filename:=mypath 
    Set OpenWorkbook = ActiveWorkbook 
End Function 

Utilisation:

Dim wb as workbook, ws as worksheet 
set wb = OpenWorkbook("your path") 
set ws = wb.Sheets(1) 

Éviter l'instance 2 Excel résout automatiquement votre problème avec les macros VBA dans votre sur Documents vey - lorsque vous ouvrez un autre classeur à partir d'une macro en cours d'exécution comme ci-dessus, l'utilisateur ne recevra aucun avertissement de sécurité. (? Soit dit en passant, faire les documents d'enquête doivent contenir toutes les macros)

Copie de données à partir de cette feuille dans votre classeur va comme ceci:

ThisWorkbook.Sheets("Name of your sheet").Range("A1") = ws.Range("A1") 

Itère un tas de fichiers Excel dans un dossier est décrit, par exemple, here

Hope that helps.