将Access DB连接到Excel和Vlookup

时间:2015-11-13 09:51:40

标签: excel ms-access odbc vlookup

我有一个超过3百万条记录的访问文件。我希望excel能够在访问表中执行vlookup serach并在excel上给我结果。有什么简单的方法吗?

感谢的!

2 个答案:

答案 0 :(得分:0)

这将是一种非常低效的方式。

在数据库中,您可以使用JOIN查询来执行此操作。如果您告诉我们,表格是什么样的以及您想要实现的目标,我们可以为您提供更多信息。

答案 1 :(得分:0)

正如Andre451所说 - 你需要SQL而不是Excel函数来从数据库中获取数据。

此代码会将查询结果转储到即时窗口中。它应该向您展示如何从Access中提取数据 注意 - 如果我计划大量查询数据库,我通常会将oDB变量设为全局变量。在不知道数据库或表格结构名称的情况下,我刚刚展示了所使用查询的示例 - 您必须添加代码以从用户那里获取员工编号和年份。
提示 - 使用查询编辑器在Access中编写查询,将其视为SQL,然后复制到Excel。

Sub ReturnValues()

    Dim oDB As Object
    Dim rst As Object

    Set oDB = GetDatabaseReference
    Set rst = CreateObject("ADODB.RecordSet")
    With rst
        .CursorType = 2
        .Open "SELECT Salary FROM tbl_SomeTable WHERE Emp=1 AND Year=2015", oDB

        If Not rst Is Nothing Then
            If Not .BOF And Not .EOF Then
                .MoveFirst
                Do
                    Debug.Print rst.Fields("Salary")
                    .MoveNext
                Loop While Not .EOF
            End If
        End If
    End With

End Sub


Public Function GetDatabaseReference() As Object

    Dim cn As Object

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Only set a reference to the database if it doesn't already exist. '
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    If oDB Is Nothing Then
        Set cn = CreateObject("ADODB.Connection")
        Select Case Val(Application.Version)
            Case 11
                'Access 2003
                cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                    "Data Source =C:<Full Path To Database>.mdb;"

                    'Could use:
                    '"Data Source=" & ThisWorkbook.Path & "\Database\Database.mdb"
            Case 14
                'Access 2010
                cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                    "Data Source =C:<Full Path To Database>.mdb;" & _
                    "Persist Security Info=False;"

                    ''Could use:
                    '"Data Source=" & ThisWorkbook.Path & "\Database\Database.mdb;" & _
                    '"Persist Security Info=False;"
        End Select
        If Not cn Is Nothing Then
            Set GetDatabaseReference = cn
        End If
    Else
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        'oDB already has a reference, so ensure it's maintained. '
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Set GetDatabaseReference = oDB
    End If

End Function