Erreur gestion excel via code VBA dans access pour importation
Bonjour,
Je souhaite importer des données d'un onglet excel dans access, pour ce faire je commence par nommer la plage de donnée excel via un code VBA dans access. Probleme: lorsque le nom de l'onglet comporte des espaces la macro plante.. si je change le nom de l'onglet à la main et relance mon code, ca marche! Comment éviter cette erreur sans avoir à préalablement renommer mon onglet?
Code:
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
|
Function NameRange_xls(range_name As String, filePath As String, wsSource As String) As Boolean
'------------------------------------------------------
'Déclarations
'------------------------------------------------------
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim lastLine As Long
Dim lastField As Long
Dim firstLine As Long
Dim rangeToName As range
'------------------------------------------------------
'initialiser les variables et ouvrir le fichier excel
'------------------------------------------------------
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(filePath)
Set xlSheet = xlBook.sheets(wsSource)
On Error GoTo NameRange_xls_Err
'------------------------------------------------------
'repérer la zone de données et la nommer
'------------------------------------------------------
xlSheet.Select
xlBook.sheets(wsSource).Unprotect ' s'assurer que l'onglet n'est pas protéger pr permettre de nommer le range
xlSheet.Select
Dim protection As Boolean
protection = xlSheet.ProtectionMode
lastLine = cells(rows.Count, 1).End(xlUp).Row
lastField = cells(lastLine, 1).End(xlToRight).Column
firstLine = cells(lastLine, 1).End(xlUp).Row
Set rangeToName = range(cells(firstLine, 1), cells(lastLine, lastField))
rangeToName.Name = range_name
'------------------------------------------------------
'Fermeture du fichier excel + libération de la mémoire
'------------------------------------------------------
NameRange_xls_Exit:
xlBook.Save ' sauver précédent
xlBook.Close (True)
xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
NameRange_xls = True
Exit Function
NameRange_xls_Err:
Resume NameRange_xls_Exit
End Function |