Mon problème est que j'ai besoin d'ouvrir des fichiers Excel en utilisant VBA (pour Excel 2007) et extraire les données. Tous les fichiers que je veux ouvrir sont appelés "profit for January.xlsx", "profit for February.xlsx", et ainsi de suite avec seulement le changement de nom du mois, donc je pense que je veux ouvrir un fichier appelé "profit for *" . Il y a un autre fichier dans le dossier appelé "total revenue.xlsx" que je ne veux pas ouvrir.Comment ouvrir certains dossiers Excel dans un fichier avec un nom commun en utilisant vba
Si possible, j'ai besoin du code pour extraire les données des fichiers dans le dossier, quel que soit le dossier car j'envoie ce code à mes collègues pour les mettre dans leurs propres dossiers, qui ont les mêmes formats etc, mais des chemins différents.
J'ai le code pour extraire les données, qui fonctionne, mais il importe toutes les données dans le dossier ou pas du tout!
Toute aide sur ce serait très apprécié car je suis un stagiaire qui essaie de mettre le pied dans la porte, et ce serait une grosse pause pour moi!
Informations complémentaires
Jusqu'à présent, j'ai le code ci-dessous (je ne l'ai pas compris les années sombres parce que je sentais qu'ils peuvent être inutiles?), Que j'ai tiré d'autres sites Web. Je trouve également que, en essayant d'ouvrir tous les fichiers dans le dossier, il essaie de s'ouvrir lui-même! Si quelqu'un pouvait suggérer comment améliorer cela, je serais très reconnaissant. Je n'utilise pas VBA depuis très longtemps, et j'ai trouvé cette tâche assez difficile! La case d'erreur qui s'affiche parfois dit que j'ai besoin d'un 'objet' pour la variable sfilename, et je ne suis pas sûr de savoir comment faire cela sans endommager une autre partie du code.
sub import data()
ChDir ThisWorkbook.Path
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set sfolder = objFSO.GetFolder(ThisWorkbook.Path)
For Each sfilename In sfolder.Files
If sfilename <> "Total Revenue.xlsx" Then
Workbooks.Open Filename:= _
sfilename *'open the file*
Set sfilename = ActiveWorkbook *'set the file name as sfilename, so the single piece of code will work with the copy-loop*
b = Sheets.Count *'for the data-import loop*
Call ImportData *'call in the loop*
sfilename.Close *'close the file*
End If
Next
end sub
Salut Mark En SO, cette zone est réservée aux réponses. Je vais modifier votre message pour inclure cette section et vous pouvez demander que cela soit supprimé. D'accord? :) – Fionnuala
J'ai ajouté quelques notes à ma réponse. – Fionnuala