Manuel de reference Vba via Path

Je fais une macro est Excel 2016 et je veux faire reference à un classur via son path sans l'ouvrir.

C'est ce que j'ai fait pour le moment

Dim Wb As Workbook Dim Path As Ssortingng Dim Fd As FileDialog Set Fd = Application.FileDialog(msoFileDialogOpen) Fd.AllowMultiSelect = False Fd.Show Path = Fd.SelectedItems(1) Set Wb = Workbooks.Open(Path) 

Cependant, la dernière ligne ouvre le file.

J'aimerais connaître la façon de définir Wb comme le classur où le path d'access conduit sans l'ouvrir.

Je dois simplement faire reference à ce classur afin que je puisse récupérer quelques données de ses cellules plus tard. Est-ce que je ne peux pas stocker un object de classur dans Wb qui est le classur auquel le path d'access conduit?

Nan. Jusqu'à ce qu'un file soit ouvert dans Excel, ce n'est pas un classur, même si vous et moi pensons qu'il s'agit d' un classur, ce n'est pas le cas. C'est juste un file. Mais vous pouvez get des données à partir de classurs fermés.

Il existe quelques façons de faire cela (il y en a peut-être d'autres):

  1. Pour de petites quantités de données, utilisez la méthode ExecuteExcel4Macro .
  2. Pour de grandes quantités de données, utilisez ADO pour interroger le classur.
  3. Pour une solution simple, ouvrez simplement le file et gardez-le invisible.

Je couvrirai la façon la plus simple de le faire, c'est-à-dire de l'ouvrir de manière invisible dans une nouvelle instance d'Excel. Ce n'est que légèrement plus compliqué que de l'ouvrir visiblement dans la même instance d'Excel. Vous devrez simplement créer une nouvelle instance Excel, définir sa propriété .Visible sur False et ouvrir le file dans cette instance.

 Dim Wb As Workbook Dim xlApp as Excel.Application Dim Path As Ssortingng Dim Fd As FileDialog Set Fd = Application.FileDialog(msoFileDialogOpen) Fd.AllowMultiSelect = False Fd.Show If Fd.SelectedItems > 0 Then Path = Fd.SelectedItems(1) Else MsgBox "Nothing selected!" Exit Sub End If '## Create new instance of excel, and make it invisible Set xlApp = New Excel.Application xlApp.Visible = False '## Open your workbook in this new instance ' I use ReadOnly:=True to prevent conflict if the file is already open elsewhere Set Wb = xlApp.Workbooks.Open(Path, ReadOnly:=True) 

Assurez-vous qu'à la fin de votre procédure, procédez comme suit: pour fermer le classur et quitter l'instance Excel / invisible:

 Wb.Close xlApp.Quit