我可以在编辑时自动运行宏,而不必重新打开应用程序吗?

我可以在编辑时自动运行宏,而不必重新打开应用程序吗?

我有两个电子表格,我希望一旦有人更改第一个电子表格,第二个电子表格就会更新。我可以用一个简单的 if 语句来实现这一点,但它不会更新,直到处理第一个表格的人关闭并重新打开它。

可以自动完成这个吗?

答案1

我从已删除答案的评论中看到,要更新的电子表格位于其他计算机上。在我看来,除非有人为远程电子表格编写宏,定期检查源电子表格上的修改日期并在需要时自行更新,否则这种更新是不可能的。在这种情况下,文档必须位于公共网络共享上,这项工作绝非易事。

如果所有用户都可以访问互联网,您的另一个选择是使用在线电子表格来协作电子表格。有各种在线产品,甚至免费的,都可以满足这一目的。

您应该向我们提供有关您的环境以及其中所需或可能的内容的更多详细信息。

答案2

您可以在第一个电子表格上设置一个 worksheet_change 宏,它将更新第二个电子表格。代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim wbk2 As Workbook, wbk1 As Workbook, sht1 As Worksheet, sht2 As Worksheet

Set wbk1 = ActiveWorkbook
Set sht1 = ActiveSheet

on error resume next 
set wkb2=workbooks("myfile.xlsx")
if err<>0 then
    err.clear
    Set wbk2 = Workbooks.Open("\\remotecomputer\folder\myfile.xlsx")
end if
on error goto 0

Set sht2 = wbk2.Sheets("mySheet2")

sht2.Cells(1, 1) = "I have updated range " & Target.Address & " in sheet " & sht1.Name & " to value " & Target.Value

wbk2.Close True

End Sub

相关内容