Fournisseur OLEDB Jet de travail partout, sauf Excel 2010 sur Windows 7 64-bit
Je suis à l'aide de la "de Microsoft.Jet.OLEDB.4.0" fournisseur pour une connexion de base dans le code VBA, et le code fonctionne partout sauf sur windows 7 64 bits des systèmes d'exploitation 64 bits installation de Microsoft Office Excel 2010.
Littéralement toute autre combinaison de XP 32 ou 64, Vista 32 ou 64, et 7 32, avec Excel 2003, 2007, ou 2010 des installations n'a pas de problème l'exécution de ce code, mais sur le système décrit ci-dessus, il en résulte une erreur à propos d'un "Manque Fournisseur" et je ne peux pas créer la chaîne de connexion.
With Conn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeRead
.ConnectionString = "Data Source=" & path & ";Extended Properties='text;HDR=YES;FMT=Delimited'"
.Open
End With
J'ai fait une tonne de recherches, mais de ce que je peux dire, le système d'exploitation est censé venir avec un ensemble complet de fournisseurs, y compris la version 32 bits du Fournisseur Jet (pas de version 64 bits existe), et Excel devrait avoir aucun problème à l'utiliser pour la connexion. Des idées?
- Connexes: stackoverflow.com/questions/1972015/...
Vous devez vous connecter pour publier un commentaire.
ce lien peut donner la solution à votre problème:
http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/
Je ne sais pas si ce sera utile aux personnes en dehors de mon exemple précis. J'ai été en utilisant le fournisseur pour effectuer une requête sur un fichier CSV. Par exemple:
Ici, le fichier source a été modifié, de sorte que toutes les colonnes sont nommées Cn par leurs en-têtes:
Donc dans mon cas, j'ai un fichier qui ressemble à ça:
Normalement, en utilisant le fournisseur OLEDB Jet, au-dessus de la chaîne de requête peut être utilisé pour lire le contenu du fichier dans une cellule:
Mais dans le code ci-dessus "ProviderError" va se déclencher sur 64 bits machines car il n'y a pas de Jet fournisseur. Ma solution a été comme suit. J'ai fait charger le fichier dans excel, et d'analyser la chaîne de requête de moi-même. Je casse la chaîne de requête par des virgules, de sorte que chaque section de la chaîne de requête devient la formule pour une nouvelle cellule. Pour créer la formule, j'ai simplement ajouter un
=
de signer et de remplacer la chaîne "Cn" avec une référence à la colonne source. De cette façon, les requêtes complexes, comme(C2+C4*10000000)
encore évaluée. J'ai ensuite recopier la formule en fonction de la longueur de la source de données, puis de remplacer les formules avec des valeurs codées en dur. Le résultat final est identique pour faire un complexe Jet OLEDB requête, quoique légèrement plus lent. Le Code est ci-dessous.La solution ci-dessus suppose une requête avec 3 colonnes, mais pourrait facilement être ajustée afin de prendre une toute requête, l'utilisation de split pour obtenir autant de colonnes qu'il y a, et de façon dynamique redim (pos) et le col() des tableaux.