betobarreiro escreveu:
Como "chamar" a rotina VBA para ser executada em qualquer planilha ?
Veja se este caminho pode te ajudar.
É possível criar um arquivo Excel, de nome
PERSONAL.XLSB, específico para receber macros que podem ser "chamadas" a partir de qualquer outro arquivo Excel.
O arquivo PERSONAL abre/fecha automaticamente ao abrir/fechar o Excel (ele só aparece no editor de VBA).
Então você colocaria nesse arquivo o seu atual código
Emite_Etiquetas, e em seguida mudaria o vínculo dos botões existentes nas 6 planilhas de cada arquivo, que atualmente estão vinculados ao código existente em cada arquivo, para o código colocado no
PERSONAL.XLSB. Após, o código
Emite_Etiquetas existente em cada arquivo ficaria sem uso pois todas as etiquetas seriam emitidas via código colocado no
PERSONAL.
Se você quiser testar este caminho:
Abra qualquer um dos arquivos Excel (por exemplo
Dietas do dia 01_SPA.xlsm), caso ainda não exista o arquivo
PERSONAL.XLSB no seu Excel (se já existe ele aparece à esquerda na janela do editor de VBA), para inseri-lo basta iniciar uma gravação de macro e na caixa de diálogo
Armazenar macro em: escolher
Pasta de trabalho pessoal de macros / OK, em seguida finalize a gravação. Assim o arquivo terá sido criado, aparecerá à esquerda na janela do editor de VBA e o Módulo1 conterá uma macro vazia. Basta então copiar o código
Emite_Etiquetas do arquivo
SPA e colar em substituição à macro vazia. O código
Emite_Etiquetas do arquivo
SPA pode então ser deletado.
Em seguida será necessário vincular os botões "Emitir Etiquetas" das planilhas à macro agora instalada no PERSONAL.
Se fiz a conta certa são (6 botões por arquivo) x (31 arquivos) x (12 setores) = 2.232 botões para serem vinculados, é isso?
Para facilitar preparei um código que faz a vinculação. Se quiser testar insira um novo módulo no arquivo
PERSONAL (duplo clique em PERSONAL / menu Inserir / Módulo) e cole nesse novo módulo o código abaixo. Substitua no código os números 123 pela senha da planilha. Considerei que a senha é igual para as 6 planilhas (a propósito, no futuro, se for necessário disponibilizar planilhas protegidas informe a senha).
Código: Selecionar todosSub VinculaMacro()
Dim f As Shape, ws As Worksheet
For Each ws In Worksheets(Array("DESJEJUM", "09 HORAS", "ALMOÇO ", "15 HORAS", "JANTAR", "21 HORAS"))
ws.Protect "123", UserInterfaceOnly:=True
For Each f In ws.Shapes
If f.Type = 1 Then f.OnAction = "PERSONAL.XLSB!Emite_Etiquetas"
Next f
Next ws
End Sub
Salve e feche o Excel, salve também o
PERSONAL. Reabra o arquivo
SPA, aperte
Alt + F8, escolha
VinculaMacro /
Executar, em seguida faça o teste com a macro
Emite_Etiquetas clicando no botão "Emitir Etiquetas" em cada uma das 6 planilhas.
Se o resultado for o esperado aí é só rodar o código
VinculaMacro nos demais trocentos arquivos. Se os nomes dos trocentos arquivos seguem alguma máscara então é possível incrementar o código
VinculaMacro para que ele abra cada um dos arquivos e faça a vinculação.
Osvaldo
Quatro coisas que odeio: preguiçosos, políticos, Google planilhas e Outlook

Anexe arquivos diretamente no fórum:
+ Resposta / Adicionar um anexo / Selecione o arquivo
CÉLULAS MESCLADAS PODEM AFETAR FÓRMULAS E MACROS.