Notifications
Clear all

Copiar Controles Activex

6 Posts
2 Usuários
0 Reactions
1,175 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Colegas, Boa tarde.
Numa pasta trabalho na planilha (Plan1) tenho um botão "Controle Activex"que cria outra planilha (Plan2).
Preciso que o botão da plan1 seja copiado automaticamente para plan 2 e assim sucessivamente.

Obrigado.

 
Postado : 03/03/2017 10:54 am
(@pfarias)
Posts: 0
New Member
 

Vê se estes códigos te ajuda.
No anexo tem o arquivo.

Private Sub CommandButton1_Click()
Call CopiarMc
End Sub


Sub CopiarMc()
    Worksheets.Add
    ActiveSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1", Width:=144, Height:=45
    
    Dim x
    Set x = Worksheets.Application.VBE.ActiveVBProject.VBComponents.Item(ActiveSheet.CodeName).CodeModule
    
    x.DeleteLines 1
    x.InsertLines 1, "Private Sub CommandButton1_Click()"
    x.InsertLines 2, "Call CopiarMc"
    x.InsertLines 3, "End Sub"
End Sub
 
Postado : 03/03/2017 3:34 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia.
Atende sim, mas esta dando um erro.

Set x = Worksheets.Application.VBE.ActiveVBProject.VBComponents.Item(ActiveSheet.CodeName).CodeModule

 
Postado : 04/03/2017 5:23 am
(@pfarias)
Posts: 0
New Member
 

Você tem que alterar as configurações da centra de confiabilidade. Vá em Opções do Excel >> Central de Confiabilidade >> Configurações da Central de Confiabilidade >> COnfiguações de Macro e então selecione o check box "Confiar no acesso ao modelo de objeto de projeto VBA".

Fiz uma alteração no CODE. Utiliza o arquivo em anexo.

Sub CopiarMc()
    Dim y As OLEObject
    Set y = ActiveSheet.OLEObjects("CommandButton1")
    
    Worksheets.Add
    ActiveSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1", Width:=y.Width, Height:=y.Height, Top:=y.Top, Left:=y.Left
    
    Dim x
    Set x = Worksheets.Application.VBE.ActiveVBProject.VBComponents.Item(ActiveSheet.CodeName).CodeModule
    
    On Error Resume Next
        x.DeleteLines 1
    On Error GoTo 0
    
    x.InsertLines 1, "Private Sub CommandButton1_Click()"
    x.InsertLines 2, "Call CopiarMc"
    x.InsertLines 3, "End Sub"
End Sub

 
Postado : 04/03/2017 5:48 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Perfeito, ficou show de bola.
Muito obrigado.

 
Postado : 04/03/2017 6:18 am
(@pfarias)
Posts: 0
New Member
 

Blz. Qualquer coisa é só falar.

 
Postado : 04/03/2017 6:30 am