Хотя я работаю с VBA для Excel довольно давно, у меня есть одна проблема, которую я не могу решить самостоятельно. Я описал это ниже, надеюсь получить помощь или совет.
Я использую Excel 2007 и Windows XP, все они обновлены с помощью новейших патчей.
Я очень часто использую следующий код для получения данных из другой книги:
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
Как можно проще - просто подключитесь к файлу и получите из него некоторые данные. Он отлично работает до тех пор, пока исходный файл, который находится на общем сетевом диске (g: \ source.xls), не открыт на другом компьютере.
Когда какой-то пользователь на другом компьютере открыл файл и я пытаюсь выполнить следующий код, я заметил одну вещь, от которой я хотел бы избавиться: исходный файл Excel открыт (в режиме только для чтения) на моем компьютере, и он не закрывается после того, как соединение с этим файлом было закрыто . Что еще хуже, даже если я закрою этот исходный файл вручную, он оставит некоторый мусор в моем файле, как будто он никогда не закрывался: см. Рисунок после нескольких выполнений кода (исходные файлы были закрыты ранее):
![enter image description here](https://i.stack.imgur.com/8cOPq.png)
Я начал верить, что это ошибка, которую нельзя устранить - надеюсь, я ошибаюсь:)