[ACCESS] Exectuer Macro Excel dans Access
artamys
Messages postés
127
Statut
Membre
-
artamys Messages postés 127 Statut Membre -
artamys Messages postés 127 Statut Membre -
Bonjour,
je dois a partir d'un BDD, extraire a la demande (bouton) des requetes sur fichier excel.
L'extraction ne pose pas de problème.
Mon objectif est que je puisse lancer une Macro excel située dans un SUB d'access sur la feuille excel nouvellement créé.
et la gros problème.
la reprogrammation pour piloter excel depuis access pose probleme notament pour la définition des longueurs... width ne passe pas ...
donc merci pour une solution éventuelle.
j'ai bien essayé de lancer une commande comme : xlApp.Run ("c:\.....\Bureau\BDD.mdb!MacroExcel") mais je suis rejeté car la base est ouverte... et surtout il est pas évident que le code sera interprété sur le format excel.
L'objectif étant de limiter au maximum les dépendances avec d'autre fichiers excel qui contiendrait éventuellement le code pour optimiser le suivi et la viabilité.
Merci.
je dois a partir d'un BDD, extraire a la demande (bouton) des requetes sur fichier excel.
L'extraction ne pose pas de problème.
Mon objectif est que je puisse lancer une Macro excel située dans un SUB d'access sur la feuille excel nouvellement créé.
et la gros problème.
la reprogrammation pour piloter excel depuis access pose probleme notament pour la définition des longueurs... width ne passe pas ...
donc merci pour une solution éventuelle.
j'ai bien essayé de lancer une commande comme : xlApp.Run ("c:\.....\Bureau\BDD.mdb!MacroExcel") mais je suis rejeté car la base est ouverte... et surtout il est pas évident que le code sera interprété sur le format excel.
L'objectif étant de limiter au maximum les dépendances avec d'autre fichiers excel qui contiendrait éventuellement le code pour optimiser le suivi et la viabilité.
Merci.
A voir également:
- [ACCESS] Exectuer Macro Excel dans Access
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
2 réponses
Bonjour
Au préalable, il faut cocher la référence "Microsoft Excel X.y library" dans outils-références de l'éditeur VB
à partir d'une sub access
Dim appliXL As Excel.Application
Dim classeur As Excel.Workbook
' Par exemplr: On veut ouvrir le classeur concerné
Set appliXL = CreateObject("Excel.Application")
par exemple:
Set classeur= xlApp.Workbooks.Open("chemin+nom du classeur concerné")
ton code
set classeur=nothing
appliXL.Quit
set appliXL=nothing
nota: certains antivrus trouvent suspect l'instruction "Quit"... Passer outre
Au préalable, il faut cocher la référence "Microsoft Excel X.y library" dans outils-références de l'éditeur VB
à partir d'une sub access
Dim appliXL As Excel.Application
Dim classeur As Excel.Workbook
' Par exemplr: On veut ouvrir le classeur concerné
Set appliXL = CreateObject("Excel.Application")
par exemple:
Set classeur= xlApp.Workbooks.Open("chemin+nom du classeur concerné")
ton code
set classeur=nothing
appliXL.Quit
set appliXL=nothing
nota: certains antivrus trouvent suspect l'instruction "Quit"... Passer outre
merci michel,
La librairie est cochée par le programme en amont qui vérifie si la librairie est active et a défaut elle l'active.
voici mon code, il ne pose pas de probleme. il marche mal pour une raison indéterminée.
Private Sub Extraction_DEI_Projet_Click()
Call ReferenceActive("Excel")
'fonction de vérification de l'existence de la bibliotheque excel
If Not ReferenceActive("Excel") Then ActiverReference "Excel.exe"
Dim AccApp As Access.Application
Dim ref As Reference
Set ref = References!Access
Dim ref2 As Reference
Set ref2 = References!Excel
Dim DayJour As Integer
Dim MonthJour As Integer
Dim YearJour As Integer
Dim heureJour As Integer
Dim MinuteJour As Integer
Dim Dateinstant As Date
Dateinstant = Now()
HeureJour = Hour(Dateinstant)
MinuteJour = Minute(Dateinstant)
DayJour = Day(Dateinstant)
MonthJour = Month(Dateinstant)
Dim XlApp As Excel.Application
Dim XlSheet As Excel.Worksheet
Dim XlBook As Excel.Workbook
Set XlApp = CreateObject("Excel.Application")
XlApp.SheetsInNewWorkbook = 1
Dim tempo As Integer
tempo = heureJour & MinuteJour
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Extraction_Projet", "..\DeskTop\Extraction DEI" & DayJour & MonthJour & tempo & ".xls"
XlApp.Visible = True
Set XlBook = XlApp.Workbooks.Open("..\DeskTop\Extraction DEI" & DayJour & MonthJour & tempo & ".xls")
XlBook.Worksheets(1).Visible = True
XlBook.Worksheets(1).Select
XlBook.Worksheets(1).Cells.Select
XlBook.Worksheets(1).Columns.AutoFit
XlBook.Worksheets(1).Columns("B:B").Select
With Selection.Font
.Name = "arial"
End With
' attention cette partie fonctionne de maniere aléatoire. une fois il passe une fois il dit que la selection n'est pas définie...
Set XlSheet = XlBook.Worksheets(1)
XlSheet.Columns("B:B").Select
'Set Selection = XlSheet.Columns(0, 2).Select
Set test = XlSheet.Columns
With test.Width = 45
End With
XlSheet.Cells(1, 1).Select
XlSheet.Columns("C:C").Select
'Set Selection = XlSheet.Columns("C:C").Select
Selection.ColumnWidth = 50
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
' attention cette partie fonctionne de maniere aléatoire. une fois il passe une fois il dit que la selection n'est pas définie...
End Sub
La librairie est cochée par le programme en amont qui vérifie si la librairie est active et a défaut elle l'active.
voici mon code, il ne pose pas de probleme. il marche mal pour une raison indéterminée.
Private Sub Extraction_DEI_Projet_Click()
Call ReferenceActive("Excel")
'fonction de vérification de l'existence de la bibliotheque excel
If Not ReferenceActive("Excel") Then ActiverReference "Excel.exe"
Dim AccApp As Access.Application
Dim ref As Reference
Set ref = References!Access
Dim ref2 As Reference
Set ref2 = References!Excel
Dim DayJour As Integer
Dim MonthJour As Integer
Dim YearJour As Integer
Dim heureJour As Integer
Dim MinuteJour As Integer
Dim Dateinstant As Date
Dateinstant = Now()
HeureJour = Hour(Dateinstant)
MinuteJour = Minute(Dateinstant)
DayJour = Day(Dateinstant)
MonthJour = Month(Dateinstant)
Dim XlApp As Excel.Application
Dim XlSheet As Excel.Worksheet
Dim XlBook As Excel.Workbook
Set XlApp = CreateObject("Excel.Application")
XlApp.SheetsInNewWorkbook = 1
Dim tempo As Integer
tempo = heureJour & MinuteJour
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Extraction_Projet", "..\DeskTop\Extraction DEI" & DayJour & MonthJour & tempo & ".xls"
XlApp.Visible = True
Set XlBook = XlApp.Workbooks.Open("..\DeskTop\Extraction DEI" & DayJour & MonthJour & tempo & ".xls")
XlBook.Worksheets(1).Visible = True
XlBook.Worksheets(1).Select
XlBook.Worksheets(1).Cells.Select
XlBook.Worksheets(1).Columns.AutoFit
XlBook.Worksheets(1).Columns("B:B").Select
With Selection.Font
.Name = "arial"
End With
' attention cette partie fonctionne de maniere aléatoire. une fois il passe une fois il dit que la selection n'est pas définie...
Set XlSheet = XlBook.Worksheets(1)
XlSheet.Columns("B:B").Select
'Set Selection = XlSheet.Columns(0, 2).Select
Set test = XlSheet.Columns
With test.Width = 45
End With
XlSheet.Cells(1, 1).Select
XlSheet.Columns("C:C").Select
'Set Selection = XlSheet.Columns("C:C").Select
Selection.ColumnWidth = 50
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlBottom
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
' attention cette partie fonctionne de maniere aléatoire. une fois il passe une fois il dit que la selection n'est pas définie...
End Sub