关系数据存储在Excel中的表中。 Access用作查询链接的Excel表的“BI-Layer”。使用同一Excel中的枢轴进行分析,使用Excel查询作为源来保存存储的表,从而实现“往返”Excel-> Access-> Excel。
我希望单击Excel中的连接上的刷新也会提供一个选项来触发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 :(得分:0)
很抱歉,往返的设计工作正常。 当我在Excel中点击全部刷新时,刷新相关的访问查询,包括访问linked-excel-table,不需要执行发布的vba脚本。 我处理了大量数据,显然在单行中有错误值,这可能导致首先更新不传递。
一切顺利