需要以编程方式查找Visio外部数据的原始文件

时间:2014-12-02 21:12:05

标签: vb.net vba visio

我需要从Visio绘图上的形状中获取修改后的形状数据,然后将它们插回原始的外部数据文件中。在这种情况下,外部数据将是Excel电子表格。

我知道如何在VB中阅读Shape Data和Shapesheet信息。

但是,我需要帮助在VBA中查找外部数据源的原始文件和位置。这是我唯一坚持的事情。有什么想法吗?

编辑:

我发现DataConnection.ConnectionString接近但没有雪茄。它给了我完整的连接字符串,如果没有'Mode = Read;',我可以重复使用它来打开与Excel文件的连接。在字符串中。

除非有人有更好的解决方法,否则我想我可以删除'Mode = Read;'退出连接字符串,看看我是否可以从那里开始。

2 个答案:

答案 0 :(得分:0)

去看看,我花了几个小时在Google上寻找答案,在发布问题后10分钟我找到了DataConnection对象后想出来。

答案是使用DataConnection.FileName返回原始外部数据文件的路径和文件名。

For Each win In Visio.ActiveWindow.Windows
  ' The External Data window has ID = 2044
  If win.ID = 2044 Then
    win.Visible = True
    strDataSourceFileName = win.SelectedDataRecordset.DataConnection.FileName
    Exit For
  End If
Next win

答案 1 :(得分:0)

您可以尝试我最近发布的Visio插件(允许回写): http://visguy.com/vgforum/index.php?topic=6086

源代码可在github上找到: https://github.com/nbelyh/VisioBackSync