Je souhaite avoir accès aux données d'un classeur d'un autre répertoire mais je ne connais pas la syntaxe, pouvez-vous m'aider s'il vous plaît?
J'ai essayé quelque chose comme ça mais ça ne marche pas
Workbooks("U:\a.xlsx").Sheets("a").Range("A2")
3 Réponses :
Vous devrez ouvrir le classeur pour y accéder.
Comme :
Dim otherwb as Workbook
Set otherwb = Workbooks.Open("U:\a.xlsx")
Dim otherwbRange as Range
Set otherwbRange = otherwb.Sheets("a").Range("A2")
Pour lire une valeur, vous devez d'abord ouvrir ce fichier.
'open a new hidden Excel
Dim ExApp As Excel.Application
Set ExApp = New Excel.Application
ExApp.Visible = False
'open the workbook in that hidden ExApp
Dim MyWb As Workbook
Set MyWb = ExApp.Workbooks.Open(Filename:="U:\a.xlsx", ReadOnly:=True)
'read the value
Debug.Print MyWb.Worksheets("a").Range("A2")
'close it after reading
MyWb.Close SaveChanges:=False
'close hidden Excel
ExApp.Quit
Ou si vous voulez le faire caché en arrière-plan sans afficher le classeur:
XXX
Ici, une gestion correcte des erreurs peut être utile pour s'assurer que l'ExApp est fermé en cas d'erreur. Sinon, le processus restera ouvert.
bonjour il me montre cette erreur, variable d'objet ou avec une variable de bloc non définie
@guenoon Alors soit votre fichier "U: \ a.xlsx" soit la feuille de calcul nommée a n'existe pas. Dans quelle ligne obtenez-vous l'erreur?
Oh non mon mal, j'ai oublié de mettre set avant mywb. Jamais cela fonctionne parfaitement, mais j'essaierai l'autre solution, sans montrer le classeur. Merci beaucoup !
Vous devez d'abord créer un objet pour le classeur.
Essayez quelque chose comme:
Dim excel_wb2 As Excel.Workbook
Set excel_wb2 = Excel.Workbooks.Open("U:\a.xlsx")
x = excel_wb2.Sheets("a").Range("A2")