Accès / Excel: Méthode Fin de l'object La gamme a échoué?

J'ai un db Access qui traite et importe les classurs Excel. Il a toujours fonctionné bien, mais il me donne soudain cette erreur sur tous les classurs – même ceux qui travaillaient auparavant:

-2147417851: Method 'End' of object 'Range' failed 

La ligne qui cause le problème est:

 iLastCBRow = XlBook.Worksheets("4_CensusBlocks").Range("B16001").End(xlUp).Row 

Si je franchi cette ligne dans la window immédiate et entrez

 XlBook.Worksheets("4_CensusBlocks").Range("B16001").Value 

il renvoie la valeur de cette cellule correctement.

Je pensais que le db Access pourrait être corrompu, alors je l'ai recréé. Même problème. J'ai également forcé manuellement une réparation sur le classur Excel. J'ai même désinstallé et réinstallé Office.

Running Office 2016 64 bits maintenant sur Windows 7.

Est-ce que quelqu'un a une idée de ce que pourrait être le problème? Merci

Il semble que c'est parce que vous avez plus de 16001 lignes dans le file. La première command

 iLastCBRow = XlBook.Worksheets("4_CensusBlocks").Range("B16001").End(xlUp).Row) 

définit iLastCBRow sur la ligne de départ.

Essayez d'utiliser

 iLastCBRow = ActiveSheet.UsedRange.SpecialCells(xlLastCell).Row 

au lieu

Je ne comprends toujours pas pourquoi, mais le problème semble avoir été l'utilisation de la binding anticipée des variables d'object Excel. Une fois que j'ai mis en place

 dim xl as object dim xlbook as object set xl = createobject("Excel.Application") set xlbook = xl.workbooks.open(filename) 

Au lieu de simplement

 dim xlbook as excel.workbook set xlbook = getobject(filename) 

L'erreur est passée. Je n'ai eu que Office 2016 installé tout le time, donc peut-être qu'une mise à jour a-t-elle fait que le server OLE pense que j'ai eu plusieurs bureaux installés ou quelque chose? Aucune idée.