管理Excel访问链接表从Excel(推送更新)



关系数据存储在Excel中的表格中。Access作为"双层"查询链接的Excel表。分析是在使用Excel查询作为源保存存储表的同一个Excel中使用数据透视完成的,导致"往返"Excel->Access->Excel。

我希望在Excel中单击连接上的刷新也会提供一个触发Access来刷新链接表的选项("传递刷新"),但最后我总是必须打开Access来触发刷新。

处理来自Excel的链接表将允许触发刷新,并且还允许多个用户共享BI逻辑。因此,链接不是以本地路径存储在Access中,而是以远程路径存储在Excel中。

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

如果没有,还有其他建议吗?

1) VBA和SELECT * INTO?这意味着在Access中需要额外维护结构化的表,但要提供更多的类型安全性

2)使用VBA TransferSpreadsheet acLink而不是acImport,也许甚至存在一个TransferTable-Method,但不断创建新的链接似乎比使用方法1更错误。

3)第三个选择是从excel中使用vba更新access中的链接表(首选解决方案)。

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':无法更新。数据库或对象是只读的。表格似乎得到更新,无论如何,但我想修复错误,有什么建议吗?

抱歉,显然往返工作按设计。当我在Excel中点击刷新时,相关的访问查询被刷新,包括访问链接的Excel表,不需要执行发布的vba脚本。我处理了很多数据,显然在单行中有错误值,可能首先导致不可传递更新。

祝一切顺利

相关内容

  • 没有找到相关文章

最新更新