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
| Option Explicit
Dim Xlapp As Excel.Application
Dim XlBook As Excel.Workbook
Dim XlSheet As Excel.Worksheet
Private Sub cmdimprimerexcel_Click()
Call ConnectDB
Dim Rs As Recordset
Dim NomFeuille As String
On Error GoTo Err_ExporteVersExcel
Set Xlapp = New Excel.Application
'Set Xlapp = GetObject(, "Excel.Application")
'On Error GoTo oups:
On Error GoTo 0
Xlapp.Visible = True
NomFeuille = "S07"
'NomFeuille = "S" & DatePart("ww", Date)
Set XlBook = Xlapp.Workbooks.Open("C:\facture.xls")
If FeuilleExiste(NomFeuille, XlBook.Name) Then
Set XlSheet = XlBook.Worksheets("S07")
' efface les données
XlSheet.Cells.Clear
Else
' Ajouter nouvelle feuille en dernière position
Set XlSheet = XlBook.Worksheets.Add(, XlBook.Worksheets(XlBook.Worksheets.Count))
XlSheet.Name = NomFeuille
End If
' Copie dans feuille (nouvelle ou effacée)
Set Rs = New Recordset
Rs.Open "select * from MFT_AR_FACTURE", Db, adOpenDynamic, adLockOptimistic
XlSheet.Range("A1").CopyFromRecordset Rs
Set XlSheet = Nothing
' remise au début car le 'CopyFromRecordset' ne le fait pas
Rs.MoveFirst
'??? une 2ième foiS ??? XlSheet.Range("A1").CopyFromRecordset Rs
' Ferme les Var
'Rs.Close '(lancer d'un form déjà aménagé pour moi)
Set Rs = Nothing
Set XlSheet = Nothing
' Sauve le fichier
XlBook.Save
'XlBook.Close
Set XlBook = Nothing
Set Xlapp = Nothing
Err_ExporteVersExcel:
'Err 429 : Un serveur OLE Automation ne peut pas créer d'objet
' -> Excel n'est PAS encore ouvert.
If Err = 429 Then
Set Xlapp = CreateObject("Excel.Application")
Resume Next
End If
oups:
MsgBox Err.Number & " - " & Err.Description
Resume Exit_ExporteVersExcel
End Sub |