アプリケーションを再度開かなくても、編集時にマクロを自動的に実行できますか?

アプリケーションを再度開かなくても、編集時にマクロを自動的に実行できますか?

スプレッドシートが 2 つあり、最初のスプレッドシートが変更されたら 2 番目のスプレッドシートも更新されるようにしたいです。これは簡単な if ステートメントで実行できますが、最初のシートで作業しているユーザーがそれを閉じて再度開くまで更新されません。

これを自動的に行うことは可能ですか?

答え1

削除された回答のコメントから、更新するスプレッドシートが他のコンピュータにあることがわかります。私の意見では、ソース スプレッドシートの変更日を定期的にチェックし、必要に応じて更新するリモート スプレッドシートのマクロを作成しない限り、この更新は不可能です。この場合、ドキュメントはパブリック ネットワーク共有上にある必要があり、作業は決して簡単ではありません。

他の選択肢としては、すべてのユーザーがインターネットにアクセスできる場合、オンラインスプレッドシートを使用して共同作業を行うことです。1つスプレッドシート。この目的に使用できるさまざまなオンライン製品があり、無料のものも存在します。

お客様の環境と、その中で何が求められているか、何が可能であるかについて、より詳しい情報をお知らせください。

答え2

最初のスプレッドシートに worksheet_change マクロを設定すると、2 番目のスプレッドシートが更新されます。コードは次のようになります。

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

関連情報