Notifications
Clear all

Exportar macro auto executável (Criada em "ThisWorkbook"

5 Posts
2 Usuários
0 Reactions
711 Visualizações
(@etambori)
Posts: 0
New Member
Topic starter
 

Pessoal, boa tarde!

Tenho uma necessidade de colocar um alerta em uma planilha sempre que o usuário for salvá-la. O código está prontinho e funcionando. Acontece que eu preciso replicar este mesmo código para 31 planilhas identicas (cada vendedor possui uma planilha com os seus respectivos clientes).

Logo, essa versão que criei seria uma "matriz" a partir de onde eu geraria uma cópia idêntica "por vendedor".

Acontece que como esse meu código é uma macro "autoexecutável" que está no módulo "ThisWorkbook" (EstaPasta_De_Trabalho do Excel em Portugues), eu não sei como "levá-la junto" a cada um desses 31 arquivos através de código. Ai vem minha dúvida:

É possível exportar o código do "ThisWorkbook" de uma planilha para o "ThisWorkbook" de outra através de códigos? E, claro, caso esse não seja o melhor jeito de fazer o que pretendo e possuirem outras sugestoes, são muito bem vindas!

Agradeço muito desde já pela ajuda!!

Obs: Só pra detalhar mais, esse é o código que preciso que se replique para cada uma das 31 planilhas:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim percentuais, referencia, checagem As Variant
Dim contador, ultima_linha_base As Long
Dim mensagem As String


'Seleciona aba e encontra ultima linha
Sheets("Input Vendas").Select
ultima_linha_base = 25 'Range("d5000").End(xlUp).Row

'Carrega Arrays
percentuais = Range("n9:n" & ultima_linha_base).Value
checagem = Range("o9:o" & ultima_linha_base).Value


'Laço de verificação

For contador = 1 To UBound(percentuais)


    If checagem(contador, 1) <> "a" Then

        If mensagem = "" Then

            mensagem = "Foi(ram) identificado(s) percentual(is) que não totaliza(m) os 100% nas células do Excel:" & Chr(13) & Chr(13) & "N" & contador + 8

        Else

            mensagem = mensagem & Chr(13) & "N" & contador + 8

        End If


    End If

Next

If mensagem <> "" Then

    MsgBox mensagem & Chr(13) & Chr(13) & "O arquivo será salvo, porém é importante verificar estes percentuais", vbInformation, "Verificação"

End If


End Sub
 
Postado : 11/06/2015 2:39 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

É um saco, mas é possível.

Primeiro vc precisa ir na segurança do excel, e habilitar o acesso confiável ao projeto. Ou seja, vc estará liberando acesso ao próprio VBA, pelo VBA.
Siga o caminho abaixo e deixe a caixinha selecionada:
Central de Confiabilidade / Configurações de Macro / Configurações da Macro do Desenvolvedor:
Confiar no aceso ao modelo de objeto do projeto do VBA

Daí vc brinca com a coleção VbComponents. Lá vc consegue escrever, editar, apagar módulos e muito mais.

É o único jeito. A alternativa é deixa o código preparado no Ctrl+V, e fazer todos os arquivos manualmente um a um.

 
Postado : 11/06/2015 2:43 pm
(@etambori)
Posts: 0
New Member
Topic starter
 

Fernando, muito obrigado pela dica. Estava tentando por aqui, mas tenho um problema: Por eu estar em um ambiente corporativo, algumas opções da Central de Confiabilidade ficam "desabilitadas" pra mim. Eu não consigo mudar essa configuração ... :shock: :o

Consegue lembrar de alguma outra possibilidade amigo? Se for o caso, faço "na raça" mesmo... hehehe... é que to com uma preguiça de abrir uma a uma as 31 planilhas... kkkkkkkkkkkkkk...

Valeu mesmo!!

 
Postado : 11/06/2015 2:59 pm
(@etambori)
Posts: 0
New Member
Topic starter
 

Fernando, me ocorreu agora uma solução simples e que acredito poderá resolver meu problema: Eu vou fazer a macro que "gera" os arquivos por vendedor a partir de um outro arquivo com um código que:

1- Abre o arquivo Matriz;
2- Personaliza o que tiver que personalizar (deixando somente os clientes daquele vendedor, por exemplo)
3 - Faz um SAVEAS do arquivo com o nome do respectivo vendedor.
4 - Fecha o arquivo do vendedor
5 - Abre o arquivo matriz novamente
6 - loop

Pronto, como o comando necessário do "ThisWorkbook" ja estará no meu arquivo Matriz, ele será salvo junto com a versão do vendedor quando eu fizer o "SaveAs".

Quis compartilhar essa solução que achei pq apesar de não ter o código exato, vai cumprir o que preciso, e alguem pode ter a mesma dúvida um dia.

MUUUITO OBRIGADO pela ajuda!!

Abs!

 
Postado : 11/06/2015 3:10 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

bom, vc nao tinha dito que havia a possibilidade de gerar novos arquivos para as pessoas. vc tinha dito que queria colocar um código em arquivos já existentes.

Por isso nao sugeri essa alternativa, que eu uso sempre no trabalho.

Mas enfim, que bom que deu certo ...

Abs,

FF

 
Postado : 11/06/2015 3:24 pm