Posso executar uma macro automaticamente em uma edição, em vez de precisar reabrir um aplicativo?

Posso executar uma macro automaticamente em uma edição, em vez de precisar reabrir um aplicativo?

Tenho duas planilhas, quero que a segunda planilha seja atualizada assim que uma pessoa alterar a primeira planilha. Posso fazer isso com uma instrução if simples, mas ela não será atualizada até que a pessoa que trabalha na primeira planilha a feche e reabra.

É possível fazer isso automaticamente?

Responder1

Vejo pelo comentário de uma resposta excluída que as planilhas a serem atualizadas estão em outros computadores. Esta atualização não é possível, na minha opinião, a menos que alguém escreva uma macro para as planilhas remotas que verifique regularmente a data de modificação na planilha de origem e se atualize, se necessário. O documento, neste caso, deve estar em um compartilhamento de rede pública e o trabalho está longe de ser fácil.

Sua outra opção, se todos os usuários tiverem acesso à Internet, é usar uma planilha on-line para colaborar apenasumplanilha. Existem vários produtos online, mesmo gratuitos, que podem servir para esse propósito.

Você deve nos fornecer mais detalhes sobre seu ambiente e o que é desejado ou possível nele.

Responder2

Você pode definir uma macro worksheet_change na primeira planilha que atualizará a segunda planilha. O código seria mais ou menos assim:

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

informação relacionada