1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
| Option Compare Database
Public Function ouvreExcel(xlsapp As Excel.Application) As Boolean
Dim xlOpen As Boolean
'Ouverture d'Excel si pas ouvert
On Error Resume Next
Err.Clear
Set xlsapp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
'Debug.Print ERR.Number
xlOpen = False
Else
xlOpen = True
End If
Resume
Err.Clear
If Not xlOpen Then
Set xlsapp = CreateObject("Excel.Application")
End If
ouvreExcel = xlOpen
End Function
'Je stocke le résultat dans une variable. Ceci permet de détecter l'existence d'un process excel
'et donc de n'utiliser qu'une seule instance.
'En fin de code je vérifie l'existence antérieure du code et selon je ferme mon classeur,
'quitte excel et désalloue ou je laisse excel ouvert.
Public Sub Check(xlCheck As Excel.Application)
Dim ouvert As Boolean
' vérifie qu'une seule instance est ouverte, sinon, ferme l'instance ouverte
ouvert = ouvreExcel(xlCheck)
Select Case ouvert
Case True
xlCheck.Quit
Set xlCheck = Nothing
Case False
End Select
End Sub
Private Sub XLSAMR_Click(title as string, plant as string)
'-------------------------------------------------------------
'Output xls de l'AMR (structure courante)
'-------------------------------------------------------------
'
'
'
'
'
' Définition des variables
Dim sql, uniquepath, uniquename, uniquesheet, path, workdate As String
Dim idS As Long
Dim rst As DAO.Recordset
Dim odb As DAO.Database
Set odb = CurrentDb
'définit le chemin de création
path = remotepath & "\"
'définit le nom du fichier
workdate = Replace(CurrentDate, "/", "-")
uniquename = "AMR_" & plant & "_" & title & "_" & workdate & ".xls"
'défini le chemin complet
uniquepath = path & uniquename
'défini la feuille que l'on souhaite formater
uniquesheet = "OUTPUTAMR"
'export excel en "background" ==> false
DoCmd.OutputTo acOutputForm, "OUTPUTAMR", acFormatXLS, uniquepath, False
Dim xlApp As Excel.Application
Dim xlCheck As Excel.Application
Dim wbk As Excel.Workbook
' Créer un objet Excel (ce qui équivaut à démarrer Excel à distance)
Set xlApp = CreateObject("Excel.Application")
' Ouvrir Classeur en background
Set wbk = xlApp.Workbooks.Open(uniquepath)
' appeler le module pour formater la sortie excel
Call Format_AMR(wbk.Sheets(uniquesheet), xlApp)
' Quitter excel
xlApp.DisplayAlerts = False
wbk.SaveAs FileName:=uniquepath, FileFormat:=xlExcel8
xlApp.DisplayAlerts = True
wbk.Close
xlApp.Quit
' reset des variables
Set xlApp = Nothing
Set wbk = Nothing
' vérification des instances ouvertes et femrture si ouverte
Call Check(xlCheck)
End Sub |
Partager