J'ai un 2010 Excel file
avec une feuille qui couvre 34864 rows
et 1387 columns
. J'essaie de l'importer dans Access 2010
avec l'assistant d'importation, mais lorsque je sélectionne cette feuille, Access ne répond plus et, après quelques secondes, me donne
"Erreur inattendue du pilote de base de données externe (1)"
Est-ce dû à la taille de la feuille ou y a-t-il quelque chose dans les cellules qui l'empêche de fonctionner? D'autres feuilles du même fichier importent sans problème.
Vous pouvez rencontrer cette erreur après l'installation du correctif de sécurité KB4041681. Voir ceci MSDN entry . Dans mon cas, le remplacement de Microsoft.Jet.OLEDB.4.0
fournisseur par Microsoft.ACE.OLEDB.12.0
m'a aidé.
Découvrez cette spécification pour Access 2010: http://office.Microsoft.com/en-us/access-help/access-2010-specifications-HA010341462.aspx .
Dans votre cas, il peut s'agir du nombre de colonnes, essayez donc d'abord d'en importer moins de 255. En outre, il peut s'agir de la taille des données dans les colonnes ou des types de données (importation de texte sous forme numérique, etc.)
Je viens d’expérimenter ce problème aussi et j’ai trouvé une solution très simple et facile. J'ai remarqué que mon tableur avait un nom personnalisé, j'ai donc décidé de voir si cela posait problème. Je l'ai changé pour le nom par défaut de "Sheet1" et, bien sûr, cela a fonctionné !!
Téléchargez et installez le Redistributable Microsoft Access Database Engine 2010, puis modifiez les chaînes de connexion à la base de données dans Microsoft Excel pour utiliser ACE en tant que fournisseur.
Changer (exemple):
Provider=Microsoft.Jet.OLEDB.4.0
à:
Provider=Microsoft.ACE.OLEDB.12.0.
Microsoft travaille sur une résolution et fournira une mise à jour dans une prochaine version.
Utilisez ceci
OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")
au lieu de cela
OleDbConnection conObj = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\a.XLS;Extended Properties=Excel 8.0;")
Enregistrez votre feuille Excel dans un fichier .CSV 'Délimité par des virgules', puis envoyez-la sous forme de fichier texte. Pour moi, cela fonctionne bien.
Le problème est que, dans .xls (x), toutes sortes de problèmes de mise en page sont présents. La convertir en .CSV supprime toute annotation liée à la mise en page et la convertit en données «brutes».
bonne chance!
Sur le modèle de RHiggins répondent:
Dans mon cas, Jet OleDb.4.0 a renvoyé cette erreur (oledbconnection.open ()) car le nom d'une feuille de calcul dans un classeur (.xls) était trop long.
Un autre problème qui est découvert est que si le fichier Excel est enregistré en tant que feuille de calcul Excel binaire, il suffit de le réenregistrer en tant que classeur Excel et le chargement est correct.
J'ai eu le même problème, après avoir obtenu une mise à jour de sécurité dans Windows7, cette erreur s'est produite. Nous avons trop de fichiers Excel pour effectuer une opération d'ouverture/fermeture, j'ai donc décidé d'essayer d'autres méthodes.
1- Retournez un point de restauration quand Access fonctionnait bien: Cela ne fonctionnait pas dans mon cas. La seule modification apportée à la configuration logicielle est une mise à jour de sécurité et il semble que cette mise à jour pose toujours problème.
2- Réduire les lignes, les colonnes, etc.: Cela n’a pas fonctionné pour moi; Le premier fichier que l'accès essayait d'atteindre avait 10 000 lignes, réduire ce nombre à 3 n'était pas la solution.
3- Essayer de modifier la chaîne de connexion: Cela n’a pas fonctionné pour moi, ce n’est pas très raisonnable non plus; la connexion fonctionne depuis des années, pourquoi tout à coup s’arrêterait-elle? Dans certains cas, c'est le cas mais pas cette fois.
4- La désinstallation de la dernière mise à jour de sécurité a fonctionné dans mon cas. Voici la mise à jour de sécurité désinstallée.
Capture d'écran de la mise à jour de sécurité désinstallée
Bonne chance pour résoudre.
Résolu pour Windows 7:
Désinstallez les mises à jour de sécurité KB4041681 et KB4041678 les deux (en rapport avec les fournisseurs Excel et Jet/ACE)
Dans mon cas, la feuille de calcul était liée à une autre feuille de calcul. J'importais un sous-ensemble de la feuille d'origine. J'ai créé une nouvelle feuille et copié les données colonne par colonne dans le bloc-notes, puis dans la nouvelle feuille en supprimant les liens . Il y avait quelque chose dans les liens qui posait problème.
BTW: il s’agissait de cet ensemble de données depuis que j’ai effectué plus de 50 fois cette séquence d’importation à partir de cette feuille de calcul vers cette base de données. Réduire de moitié les données a fonctionné pour la première moitié (plus grande) des données, mais pas pour la seconde.
Une solution qui a fonctionné pour moi pour résoudre ce problème consiste à ouvrir le fichier Excel où l'importation/exportation est en cours d'exécution au moment de l'importation et de l'exportation.
Le problème semble être dû au fait que le correctif empêche la transaction de données de se produire entre les fichiers .xls FERMÉS et d'autres applications de base de données externes. L'ouverture du fichier Excel résout ce problème.
Quelques exemples de code ci-dessous pour mettre en évidence ce qui fonctionne et ce qui ne fonctionne pas avec VBA:
ÉCHOUE
wbTarget.SaveAs strFilename, xlExcel8
wbTarget.Close
ExportSheetToDB strFilename, strSheetName, "tblTemp"
TRAVAUX
wbTarget.SaveAs strFilename, xlExcel8
ExportSheetToDB strFilename, strSheetName, "tblTemp"
wbTarget.Close
Dans mon cas (j'ai la même erreur) le problème était que j'avais la base de données Access stockée sur un lecteur réseau qui manquait d'espace (pas assez d'espace libre pour que l'importation se termine). J'ai libéré de l'espace et compacté la base de données; l'erreur ne s'est pas reproduite.
J'ai eu exactement la même erreur. La feuille de calcul a été créée à partir d’un autre logiciel (SAP). Comme il n’a pas été créé par Office, Excel n’a pas pu le lire (!?!). Je dois les ouvrir dans Excel, le sauvegarder, puis le charger dans Access et ça marche! Dans le pire des cas, supposons que vous avez des dizaines de fichiers, vous pouvez simplement les ouvrir et les fermer avec du code VBA avant l'importation.
Je recevais cette erreur lors de l'importation à partir d'un fichier XLSB, sauvegardez le fichier au format XLSX puis importez, devrait fonctionner
salut je suis également confronté à cette erreur lors de l'importation du fichier .xlsb. Après cela, j'ai copié le contenu dans un autre fichier xlsx puis importez ce fichier xlsx.