将访问数据库链接到excel(不导入整个表)

时间:2017-06-28 13:56:19

标签: excel excel-vba ms-access vba

有没有办法将Access数据库中的表链接到Excel而不导入整个表?我需要在Access表中引用/查找单元格,但不想将整个表导入到excel工作簿中(表格太大)。

我的第二个选择是将Access表导出到单独的excel工作簿中,然后只引用这个新工作簿而不是Access数据库本身。当我尝试这样做时,任何Access表中只有大约65,000行数据实际导出到Excel,因为其余的数据无法复制到剪贴板中。有一个简单的方法吗? (我想在excel / access文件之间实际连接,因此可以刷新数据,而不仅仅是复制和粘贴行)

3 个答案:

答案 0 :(得分:1)

请参阅这篇古老的文章,它可以帮助您获得实际需要的数据,而不是一切:

http://dailydoseofexcel.com/archives/2004/12/13/parameters-in-excel-external-data-queries/

答案 1 :(得分:0)

您可以从Excel使用Access数据库表,而无需将表导入Excel工作表中:

Dim cnn As ADODB.Connection  ' Needs a reference to the Microsoft ActiveX                         
Dim rs  As ADODB.Recordset   ' Data Objects Library

Set cnn = CreateObject("ADODB.Connection") 
cnn.Open "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=database-path\Data.accdb;"
Set rs = cnn.Execute("SELECT * FROM MyTable")
While Not rs.EOF
  Debug.Print rs(1)
  rs.MoveNext
Wend

如果在x64操作系统上使用x86 Access版本,则可能需要安装 Microsoft Access Database Engine 2010 Redistributable,并应使用 / passive 选项进行安装。

答案 2 :(得分:-1)

尝试以下脚本。这应该给你你想要的东西。

Option Compare Database

Private Sub Command0_Click()

Dim InputFile As String
Dim InputPath As String

InputPath = "C:\your_path_here\Desktop\"
InputFile = Dir(InputPath & "*.xlsx")

Do While InputFile <> ""

    DoCmd.TransferSpreadsheet acLink, , InputFile, InputPath & InputFile, True '< The true is for column headers
    InputFile = Dir
Loop


End Sub