2
votes

Accès aux données d'un classeur dans un autre répertoire

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")


0 commentaires

3 Réponses :


0
votes

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")


0 commentaires

1
votes

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.


3 commentaires

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 !



0
votes

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")


0 commentaires