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

1

Eu tenho duas planilhas, quero que a segunda planilha seja atualizada quando uma pessoa alterar a primeira planilha de sperad. Eu posso fazer isso com uma instrução if simples, mas ela não será atualizada até que a pessoa que está trabalhando na primeira planilha a feche e reabra.

É possível fazer isso automaticamente?

    
por user68062 27.09.2012 / 15:21

2 respostas

3

Eu vejo no comentário sobre 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 grave uma macro para as planilhas remotas que verifiquem regularmente a data de modificação na planilha de origem e atualizem-se, 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 em apenas uma uma planilha. Existem vários produtos on-line, até gratuitos, que podem servir a esse propósito.

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

    
por 01.10.2012 / 15:53
1

Você pode definir uma macro worksheet_change na primeira planilha que atualizará a segunda planilha. O código seria algo 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
    
por 02.10.2012 / 23:26