Public Sub DAOOpenISAMDatabase()
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim wbBook As Workbook
Dim intChamp As Integer
Dim intN As Integer
Dim strSQL As String
On Error GoTo Err_
' création du classeur qui va recevoir le contenu du recordset
Set wbBook = Workbooks.Add
Windows.Arrange xlArrangeStyleHorizontal
' ouverture de la base Excel en lecture seule
Set db = DBEngine.OpenDatabase("C:\Document\Mon Fichier.xls", True, True, "Excel 8.0;")
'***************************************************************************************************************
'***************************************************************************************************************
' création du recordset
' la requête doit bien sûr être adaptée à ta base et à tes besoins
strSQL = "SELECT RiskFactorName FROM Base WHERE Activity='GAS' AND RiskFactorThreshold IS NOT NULL"
' ATTENTION ! ce type de RecordSet ne permet que la lecture
Set rst = db.OpenRecordset(strSQL, dbOpenForwardOnly, dbReadOnly)
'***************************************************************************************************************
'***************************************************************************************************************
' écrire la requête dans la feuille Excel
Range("A1").Value = strSQL
Range("A1").Font.ColorIndex = 5
' écrire le nom des champs du RS
intChamp = rst.Fields.Count
For intN = 0 To intChamp - 1
Cells(3, 1 + intN).Value = rst.Fields(intN).Name
Next
With Rows(3)
.Font.Bold = True
.Cells.HorizontalAlignment = xlHAlignCenter
End With
Range("A4").Select
ActiveWindow.FreezePanes = True
' écrire les valeurs du RS
Do Until rst.EOF
For intN = 0 To intChamp - 1
Cells(ActiveCell.Row, 1 + intN).Value = rst.Fields(intN).Value
Next
ActiveCell.Offset(1, 0).Select
rst.MoveNext
Loop
' fermer le RS
rst.Close
' fermer la base
db.Close
'wbBook.Close savechanges:=False
'wbBook.Saved = True
Set db = Nothing: Set rst = Nothing: Set wbBook = Nothing
Exit Sub
Err_:
Debug.Print Err.Number, Err.Description
Stop
Resume
End Sub