Comment corriger l'erreur 3441 dans MS-Access avec DoCmd.TransferText pour Windows Vista et Seven ?
Voici l'intitulé de l'erreur en question :
Erreur 3441 : "Le séparateur du champ de spécification du fichier texte est identique au séparateur décimal ou au délimiteur de texte"
La page MSDN qui fait référence à cette erreur est ici :
Text file specification field separator matches decimal separator or text delimiter. (Error 3441)
Two or more of the following delimiters settings used by the Text ISAM are the same: TxtDelimiter NumberDecimalSymbol CurrencyDecimalSymbol Format
Mais elle n'apporte aucune solution !
En fait, le problème vient de l'absence de configuration par défaut du pilote ODBC de source de données de texte pour les applications MS-Office, dans les systèmes d'exploitation à partir de Vista, lesquels requièrent maintenant l'utilisation d'un fichier de configuration Schema.ini.
La documentation est ici : Initialisation du pilote de source de données de texte.
Et la solution au problème est ici (ACC : Comment faire pour créer un fichier Schema.ini par programme), on y trouve comment générer un fichier Schema.ini à partir d'une table :
Si le problème concerne une requête et non pas une table, alors il faut créer cette table, au moins de façon temporaire, pour pouvoir générer le fichier Schema.ini qui va bien. Pour cela, il faut transformer la requête sélection en requête création de table, et ensuite utiliser la procédure indiquée CreateSchemaFile sur la table ainsi générée.
Il faut placer le fichier Schema.ini dans le même dossier que celui de l'export généré via DoCmd.TransferText
Eventuellement, il faut ajouter des guillemets aux champs contenant des espaces.
S'il y a plusieurs tables, on peut indiquer une configuration pour chacune de ces tables via des rubriques entre crochets (voir la première ligne du fichier Schema.ini)