Quelles déclarations dois-je faire pour pouvoir utiliser des objets et des constantes Excel à partir de mon script VBA Access 2007?
Dim wb As Workbook
ou
Set objExcelApp = New Excel.Application
ou
.Borders(xlEdgeBottom)
Merci
Vous devez d'abord définir une référence (Menu: Outils-> Références) à la bibliothèque d'objets Microsoft Excel, puis vous pouvez accéder à tous les objets Excel.
Après avoir ajouté la référence, vous avez un accès complet à tous les objets Excel. Vous devez ajouter Excel devant tout, par exemple:
Dim xlApp as Excel.Application
Disons que vous avez ajouté un objet de classeur Excel dans votre formulaire et que vous l'avez nommé xLObject.
Voici comment accéder à une feuille de cet objet et modifier une plage
Dim sheet As Excel.Worksheet
Set sheet = xlObject.Object.Sheets(1)
sheet.Range("A1") = "Hello World"
(j'ai copié ce qui précède de ma réponse à cette question)
Une autre façon d'utiliser Excel dans Access est de démarrer Excel via un module d'accès (la façon dont shahkalpesh l'a décrit dans sa réponse)
Je ne suis pas d'accord avec les deux réponses. Ne créez pas de référence du tout, mais utilisez une liaison tardive:
Dim objExcelApp As Object
Dim wb As Object
Sub Initialize()
Set objExcelApp = CreateObject("Excel.Application")
End Sub
Sub ProcessDataWorkbook()
Set wb = objExcelApp.Workbooks.Open("path to my workbook")
Dim ws As Object
Set ws = wb.Sheets(1)
ws.Cells(1, 1).Value = "Hello"
ws.Cells(1, 2).Value = "World"
'Close the workbook
wb.Close
Set wb = Nothing
End Sub
Vous remarquerez que la seule différence dans le code ci-dessus est que les variables sont toutes déclarées en tant qu'objets et que vous instanciez l'instance Excel avec CreateObject ().
Ce code s'exécutera quelle que soit la version d'Excel installée, tandis que l'utilisation d'une référence peut facilement provoquer la rupture de votre code si une version différente d'Excel est installée ou si elle est installée à un emplacement différent.
En outre, la gestion des erreurs peut être ajoutée au code ci-dessus afin que si l'instanciation initiale de l'instance Excel échoue (par exemple, car Excel n'est pas installé ou n'est pas correctement enregistré), votre code peut continuer. Avec un ensemble de référence, votre application Access entière échouera si Excel n'est pas installé.
À l'intérieur d'un module
Option Explicit
dim objExcelApp as Excel.Application
dim wb as Excel.Workbook
sub Initialize()
set objExcelApp = new Excel.Application
end sub
sub ProcessDataWorkbook()
dim ws as Worksheet
set wb = objExcelApp.Workbooks.Open("path to my workbook")
set ws = wb.Sheets(1)
ws.Cells(1,1).Value = "Hello"
ws.Cells(1,2).Value = "World"
'Close the workbook
wb.Close
set wb = Nothing
end sub
sub Release()
set objExcelApp = Nothing
end sub