Я пытаюсь написать некоторый код VBA в Excel для запроса таблицы в Access.Я пробовал несколько примеров кода для этого, таких как добавленные ссылки, и они все, кажется, терпят неудачу в части "Открытого соединения".Я пробовал использовать разные ссылки, но я не уверен, какие из них следует использовать, в чем различия между некоторыми из разных версий (например, объекты данных Microsoft ActiveX 2.0,2.1, ..., 6.0) или какова информация о поставщикедолжно быть.Для информации о провайдере я обычно вижу что-то вроде
"Provider = Microsoft.Jet.OLEDB.4.0; Источник данных ="
Но яЯ не уверен, что это то, что мне нужно использовать, или почему / какие условия что-либо в строке поставщика, показанной выше, должно измениться.Может ли кто-нибудь рассказать мне, как правильно делать подобные вещи?
Примечание: Если это вообще возможно, я бы хотел, чтобы решение работало без загрузки какого-либо другого приложения и работало бы как на 2007, так и на 2010 год.версии Access и Excel, так как для этого потребуется запуск на разных компьютерах с, возможно, разными версиями office.
Ссылки на похожие вопросы: Сбой запроса VBA к Excel http://www.mrexcel.com/forum/showthread.php?t=527490
Код:
Sub asdf()
strFile = "C:\Users\bwall\Desktop\Excel Query Access Testing"
Dim cn As Object
Dim rs As Object
Dim strSql As String
Dim strConnection As String
Dim AppPath As String
Set cn = CreateObject("ADODB.Connection")
AppPath = Application.ActiveWorkbook.Path
strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & AppPath & "\Masterlist_Current_copy.accdb;"
Debug.Print strConnection
strSql = "SELECT [Neptune Number],[Description],[Manufacturer],[Manufacturer P/N] FROM [All Components];"
cn.Open strConnection
Set rs = cn.Execute(strSql)
MsgBox rs.Fields(0) & " rows in MyTable"
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
Значение strConnection =
Поставщик = Microsoft.Jet.OLEDB.4.0; Источник данных = C: \ Users\ bwall \ Desktop \ Тестирование доступа к Excel-запросам \ Masterlist_Current_copy.accdb;