Mit ADODB-Zugriff auf geöffnete xls-Datei

Obwohl ich gearbeitet habe mit VBA für Excel für eine Recht lange Zeit, ich habe ein problem was ich nicht lösen kann, von mir selbst. Ich habe es beschrieben unten, hoffe etwas Hilfe zu bekommen oder Ratschläge.
Ich verwende Excel 2007 und Windows XP, alle aktualisiert mit den neuesten patches.

Ich bin sehr oft mit dem folgenden code, um Daten aus einer anderen Arbeitsmappe:

Set conn = New ADODB.Connection
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=g:\source.xls;Extended Properties=Excel 8.0;"

Sql = "SELECT Field1, Field2 FROM [Sheet1$]"

Set rst = New ADODB.Recordset
rst.Open Sql, conn, adOpenForwardOnly

Worksheets("Results").Range("A2").CopyFromRecordset rst

rst.Close
Set rst = Nothing

conn.Close
Set conn = Nothing

Als einfach, wie sein kann - nur mit der Datei verbinden und erhalten Sie einige Daten aus. Es funktioniert perfekt, solange die source-Datei, die sich auf einem gemeinsamen Netzwerk-Laufwerk (g:\source.xls) ist nicht auf einem anderen computer geöffnet.
Wenn einige Benutzer auf einem anderen computer die Datei geöffnet hat und ich versuche, führen Sie den folgenden code, ich merke, eine Sache, die ich möchte, um loszuwerden off: der Quell-Excel-Datei wird geöffnet (im nur-Lesen-Modus) auf meinem computer und es ist nicht geschlossen, wenn die Verbindung zu dieser Datei wurde geschlossen. Was ist schlimmer, auch wenn ich in der Nähe dieser Quelle-Datei manuell, verlässt es einige Müll in meiner Datei, wie es war nie geschlossen: siehe Bild nach paar code-Ausführung (die source-Dateien, die geschlossen wurde, bevor):
Mit ADODB-Zugriff auf geöffnete xls-Datei

Begann ich zu glauben, dass es einen bug, der nicht behoben werden kann - hoffe, ich Irre mich 🙂

InformationsquelleAutor mj82 | 2012-01-24

Schreibe einen Kommentar