web-dev-qa-db-fra.com

Comment faire référence aux objets Excel dans Access VBA?

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

15
Pablo

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)

13
marg

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é.

31
David-W-Fenton

À 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
3
shahkalpesh