Jet OLEDB Provider funktioniert überall, außer Excel 2010 auf einem Windows 7 64-bit
Ich bin mit den "Microsoft.Jet.OLEDB.4.0" - provider für eine einfache Verbindung im VBA-code, und der code funktioniert überall, außer auf windows 7 64-bit-Betriebssysteme mit einem 64-bit-installation von Microsoft Office Excel 2010.
Buchstäblich jede andere Kombination von XP 32 oder 64, Vista 32 oder 64 und 7, 32, mit Excel 2003, 2007 oder 2010-Installationen hat kein problem diesen code ausführen, aber auf das oben beschriebene system, es führt zu einer Fehlermeldung über einen "Missing Provider" und ich kann Sie nicht erstellen Sie die Verbindungszeichenfolge.
With Conn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Mode = adModeRead
.ConnectionString = "Data Source=" & path & ";Extended Properties='text;HDR=YES;FMT=Delimited'"
.Open
End With
Ich habe eine Tonne der Forschung, aber was ich sagen kann, das Betriebssystem soll mit einem kompletten Satz von Anbietern, einschließlich der 32-bit-version des Jet-Anbieters (keine 64-bit-version existiert), und Excel sollte kein problem haben, verwenden Sie für die Verbindung ein. Irgendwelche Ideen?
InformationsquelleAutor Alain | 2011-06-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
dieser link könnte die Lösung für dein problem:
http://ellisweb.net/2010/01/connecting-to-excel-and-access-files-using-net-on-a-64-bit-server/
aber ohne die Installation von diesem Paket ist es nicht möglich so weit...
Gut, nicht möglich, verwenden Sie die Jet-Anbieter, aber vielleicht gibt es eine Möglichkeit zu erkennen, das 64bit-system und ersetzen einige andere Anbieter, die standardmäßig installiert auf Windows 7 64 bit?
Der link ist speziell für .Net-Anwendungen, ich bin auf der Suche nach dem VBA-Variante, die sollte viel einfacher sein, da ich keine Kontrolle über Einstellungen wie, ob die Anwendung kompiliert als 32-bit-oder 64-bit.
InformationsquelleAutor Ovais Khatri
Ich weiß nicht, ob dies hilfreich sein, um Menschen außerhalb meines konkreten Beispiel. Ich war mit dem Anbieter verwendet werden, um eine Abfrage in eine CSV-Datei. Zum Beispiel:
Hier, die Quell-Datei wurde so verändert, dass alle Spalten mit dem Namen " Cn durch Ihre Header:
So, in meinem Fall, ich habe eine Datei, die wie folgt aussieht:
Normalerweise über den Jet OLEDB-Anbieter, die über query-string kann verwendet werden, um Lesen Sie den Inhalt der Datei in einer Zelle:
Aber im obigen code "ProviderError" wird ausgelöst, die auf 64-bit-Maschinen, denn es gibt keine Jet-provider zur Verfügung. Mein workaround war wie folgt. Ich tatsächlich laden Sie die Datei in excel, und parse den query-string selbst. Ich breche den query-string durch Komma als Trennzeichen, so dass jeder Abschnitt der query-string wird die Formel für eine neue Zelle. Zum erstellen der Formel, die ich einfach voran, ein
=
Zeichen und ersetzen Sie die Zeichenfolge "Cn" mit einem Verweis auf die Spalte Quelle. Auf diese Weise, komplexe Abfragen wie(C2+C4*10000000)
bekommen noch ausgewertet. Ich dann nach unten kopieren Sie die Formel nach der Länge der Quelldaten, und überschreiben Sie dann die Formeln mit hart kodierten Werten. Das Ergebnis ist identisch zu tun, eine komplexe Jet-OLEDB-Abfrage, wenn auch etwas langsamer. Code ist unten.Die oben genannte Lösung geht von einer Abfrage mit 3 Spalten, aber könnte leicht angepasst werden, nehmen Sie eine beliebige query, verwenden Sie split zu bekommen, wie viele Spalten es gibt und dynamisch redim pos() und col() arrays.
InformationsquelleAutor Alain