在多个工作簿中定位一个特定的工作簿

时间:2015-04-08 00:02:32

标签: excel vba excel-vba

所以我有这段代码来更新我的Excel工作簿中的链接

Dim alertTime As Date

Public Sub Refresh()
'refresh
ActiveWorkbook.UpdateLink (ActiveWorkbook.LinkSources)
'Workbooks("Requests").UpdateLink (Workbooks("Requests").LinkSources)
alertTime = Now + TimeValue("00:00:05") 'hh:mm:ss
    Application.OnTime alertTime, "Refresh"
Debug.Print Now() & " - Links Updated"

'MsgBox "5 Seconds have passed, refreshing", vbInformation, "Debug"

End Sub
Sub StopRefresh()
    Application.OnTime alertTime, "Refresh", , False
End Sub

代码可以工作,但是只要我打开另一个工作簿并刷新触发器就会出错。我希望能够针对刷新命令定位该特定工作簿。

欢迎任何帮助。

2 个答案:

答案 0 :(得分:0)

您可能需要将表格放得像:

workbooks("Requests").Sheets("Sheetname").UpdateLink(Workbooks("Requests").Sheets("Sheetname").LinkSources)

答案 1 :(得分:0)

您的声明ActiveWorkbook.UpdateLink (ActiveWorkbook.LinkSources)更新“有效”工作簿中的链接。这是您目前正在处理的工作簿。当您打开新工作簿时,新工作簿将成为活动工作簿。

而不是ActiveWorkbook.UpdateLink (ActiveWorkbook.LinkSources)试试这个:

Workbooks("nameOfWorkbook").UpdateLink (Workbooks("nameOfWorkbook").LinkSources)

其中nameOfWorkbook是您要更新链接的工作簿(即文件名,扩展名和路径,如果需要)的文件名。例如,

Workbooks("Requests.xlsb").UpdateLink (Workbooks("Requests.xlsb").LinkSources)

如果活动目录与保存Requests.xlsb的目录不同,则必须包含完整路径,如下所示:

Workbooks("C:\Users\yourID\Documents\Requests.xlsb").UpdateLink _
   (Workbooks("C:\Users\yourID\Documents\Requests.xlsb").LinkSources)

或更简洁:

With Workbooks("C:\Users\yourID\Documents\Requests.xlsb")
    .UpdateLink .LinkSources
End with