2012-09-12 42 views
4

我有一個鏈接到Excel電子表格的數據庫。當手動添加鏈接表時,我沒有任何問題(我只是按照小嚮導創建完美的表)。我想自動執行使用VBA:在MS Access中附加鏈接表時的運行時錯誤

Dim db as DAO.Database 
Dim tdf as TableDef 

Set db = CurrentDB 
Set tdf = db.CreateTableDef("linked_table") 
tdf.Connect = "Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & Me.txtExcelFile ' references form field 
db.TableDefs.Append tdf ' Here's where I get a run time error 

不幸的是我得到運行時的最後一行錯誤3264和它說,「沒有定義字段 - 不能追加TableDefs或索引。」我甚至不知道爲什麼需要最後一行(從文檔中我發現它是將表添加到數據庫的TableDefs集合中)。任何關於解決錯誤的建議?

回答

4

你缺少:

tdf.SourceTableName = "Sheet1$" 

或者任何範圍或工作表的名稱,你想作爲表來使用。

所以,在所有的,這對我的作品:

Dim db as DAO.Database 
Dim tdf as TableDef 

Set db = CurrentDB 
Set tdf = db.CreateTableDef("linked_table") 
tdf.SourceTableName = "Sheet1$" 
tdf.Connect = "Excel 8.0;HDR=YES;IMEX=2;DATABASE=" & Me.txtExcelFile ' references form field 
db.TableDefs.Append tdf 

您也可以使用TransferSpreadsheet的

+0

@ Remou鏈接的Excel - 你已經做了一遍!我覺得我應該把你加入我的節日賀卡名單。 :) 我很感激。出於好奇,表格名稱末尾的「$」是什麼?我用它,它的工作 - 只是好奇。 – rryanp

+1

$表示使用整張表格來獲取表格,儘管它只選擇使用的範圍。替代方案將是一個命名範圍,或者說'Sheet1 $ a1:x24' – Fionnuala