Olá Pessoal
Abaixo segue um exemplo pra quem sempre desejou um código de vba que possa inserir uma macro em outra planilha.
O uso serve para o mais diverso… conforme a criatividade você pode fazer uma atualização vba sem precisar alterar manualmente (veja o post Excluindo um modulo em outra planilha), quem sabe uma planilha que gera macros para clientes ou ainda fazer uma expiração de data que apague os dados.
Tentei deixar o mais simples possível e assim ficar fácil o entendimento, e portanto não coloquei para Salvar após inserir o módulo ou Paralisar a tela antes de executar.
* Para o código abaixo funcionar é necessário habilitar opção de confiança de objetos VBA
* Também é necessário adicionar na biblioteca a referencia Extensibility, dúvida ver o vídeo
_________________________________________________________________________
Sub INSERIR_MODULO_EXCELEVBA_COM_BR() Dim ObjVbProj As VBProject Dim ObjVbComp As VBComponent Dim ObjVbMod As CodeModule Dim txtMacroLinha2 As String Dim txtMacroLinha3 As String Dim txtMacroLinha4 As String 'abaixo segue o código que será inserido em outra planilha txtMacroLinha2 = "Sub NovoProcedimento()" txtMacroLinha3 = " Msgbox ""Olá BemVindo excelevba.com.br"" " txtMacroLinha4 = "End Sub" ''----------------opcao 1------------------------------- ''caso queira abrir uma nova macro 'Workbooks.Add 'Set ObjVbProj = ActiveWorkbook.VBProject ''----------------opcao 2------------------------------ ''abrir um arquivo antigo endereco = "c:\temp\codigoAntigo.xlsm" Workbooks.Open (endereco) Set ObjVbProj = ActiveWorkbook.VBProject ''---------------------------------------------- Set ObjVbComp = ObjVbProj.VBComponents.Add(vbext_ct_StdModule) ObjVbComp.Name = "Mod1" 'nome do módulo Set ObjVbMod = ObjVbComp.CodeModule ObjVbMod.InsertLines 2, txtMacroLinha2 ObjVbMod.InsertLines 3, txtMacroLinha3 ObjVbMod.InsertLines 4, txtMacroLinha4 'Retirar o objeto Set ObjVbMod = Nothing DoEvents End Sub
___________________________________________________
Segue vídeo demonstrativo