2015-10-17 52 views
0

關係數據存儲在Excel中的表格中。 Access作爲「BI層」查詢鏈接的Excel表格。分析是在同一個Excel中完成的,該Excel使用Excel查詢作爲源來存儲已存儲的表,從而導致「往返」Excel-> Access-> Excel。從Excel管理Excel-Access-linked-tables(推送更新)

我希望在Excel中的Connections上刷新刷新也會提供一個觸發Access來刷新鏈接表的選項(「傳遞刷新」),但最終我總是必須打開Access才能觸發刷新。

處理來自Excel的鏈接表將允許觸發刷新,並且還可以使多個用戶共享BI邏輯。因此,鏈接不存儲在具有本地路徑的Access中,而是存儲在具有Access的遠程路徑的Excel中。

Office 2013中是否存在內置功能?

如果沒有,除了任何其他建議:

1)VBA和SELECT * INTO?這意味着另外需要在Access中維護表結構,但提供更多類型的安全性

2)使用VBA TransferSpreadsheet acLink而不是acImport,可能甚至存在TransferTable-Method,但不斷創建新鏈接似乎比使用方法1:

3)第三個選項是更新excel中訪問vba的鏈接表(首選解決方案)。

Public Sub UpdateLinkedTables() 
    Dim accApp As Access.Application 
    Set accApp = CreateObject("Access.Application") 
    Call accApp.OpenCurrentDatabase(Config.msaDbPath) 
    Call IterateLinkedTables(accApp) 
    Call accApp.CloseCurrentDatabase 
    Call accApp.Quit 
    Set accApp = Nothing 
End Sub 

Private Sub IterateLinkedTables(accApp As Access.Application) 
    Dim tdf As TableDef 
    'Debug.Print accApp.CurrentDb.TableDefs.Count 
    For Each tdf In accApp.CurrentDb.TableDefs 
    If Left(tdf.Connect, 10) = "Excel 12.0" Then 
     'Debug.Print tdf.Name & " " & tdf.Connect 
     tdf.RefreshLink 
    End If 
    Next tdf 
'Set tdf = db.TableDefs 
End Sub 

我能夠在第一次運行上面的代碼沒有任何錯誤。但第二次和正在進行我收到運行時錯誤'3027':無法更新。數據庫或對象是隻讀的。 表似乎無論如何得到更新,但我想修復錯誤,任何建議?

回答

0

對不起,顯然往返作品的設計。 當我在Excel中進行全部刷新時,相關的訪問查詢將刷新,包括訪問linked-excel-table,不需要執行發佈的vba腳本。 我處理了很多數據,顯然在單行中有錯誤值可能導致首先不傳遞更新。

全部最好