我正在尝试创建一个可以应用于我的工作表的宏。
方案: 我有一个工作簿,就像一个摘要页面。它链接到其他工作簿中的硬编码数字。在许多情况下,文件夹已被移动或者表单可能被重命名/删除等。链接最终失败并导致许多#REF错误。这是因为多人可以操纵共享网络驱动器上的电子表格。
我想通过创建故障安全来解决这个问题。本质上,一个“更新”按钮,可以将所有已更新的引用的副本保存到名为“更新数据”的新工作表中,并在执行上次更新时添加时间戳。仅当参考文献发生更改时,此数据才会更改。 例如,如果在星期一,单元格A1引用工作簿的单元格A1并返回值$ 1234.56,它将把引用存储在单独的工作表中。现在,在星期二我单击更新,并且已移动或删除了引用A1工作簿。我仍然会返回$ 1234.56而不是#REF。最后,有一些通知表明更新失败了,可能很棒,可能会突出显示单元格。
感谢您阅读并提供您的见解。
答案 0 :(得分:0)
如果您想沿着验证路径前进,那么我建议您:
不影响合并数据表
用于识别缺失链接的代码
'查找以确定源文件与摘要文件不在同一目录中的位置
Dim vLinkArr()
Dim lngLink As Long
Dim strMsg As String
Dim strGoodMsg As String
On Error Resume Next
vLinkArr = ThisWorkbook.LinkSources
On Error GoTo 0
If IsEmpty(vLinkArr) Then Exit Sub
For lngLink = 1 To UBound(vLinkArr)
If Left$(vLinkArr(lngLink), InStrRev(vLinkArr(lngLink), "\") - 1) <> ThisWorkbook.Path Then
If InStr(Left$(vLinkArr(lngLink), InStrRev(vLinkArr(lngLink), "\") - 1), ThisWorkbook.Path) = 0 Then
strMsg = strMsg & vLinkArr(lngLink) & vbCrLf
Else
strGoodMsg = strGoodMsg & vLinkArr(lngLink) & Chr(10)
End If
Else
strGoodMsg = strGoodMsg & vLinkArr(lngLink) & Chr(10)
End If
Next
If strMsg <> vbNullString Then MsgBox strMsg