INSERIR CONTROLE CODIFICADO EM PLANILHA
Olá pessoal,
Tenho um botão inserido em uma planilha do excel que tem a função de adicionar um controle [Ô]Image[Ô] nela mesma. O controle adiciona com sucesso porém eu queria que esse controle já fosse inserido com um código nele, ou seja, preciso que ele seja funcional no momento da inserção.
Estou colocando um arquivo em anexo que é o exemplo do que eu preciso e na planilha está descrito o código que deveria estar inserido no controle no momento da inserção. Alguém pode me ajudar?
Desde já agradeço,
Tenho um botão inserido em uma planilha do excel que tem a função de adicionar um controle [Ô]Image[Ô] nela mesma. O controle adiciona com sucesso porém eu queria que esse controle já fosse inserido com um código nele, ou seja, preciso que ele seja funcional no momento da inserção.
Estou colocando um arquivo em anexo que é o exemplo do que eu preciso e na planilha está descrito o código que deveria estar inserido no controle no momento da inserção. Alguém pode me ajudar?
Desde já agradeço,
Cara, a solução é meio complexa.
Tu vai ter que adicionar uma classe ou criar funções em tempo de execução.
Tu REALMENTE precisa disso? Se sim, dá uma olhada:
http://stackoverflow.com/questions/3014421/how-to-add-events-to-controls-created-at-runtime-in-excel-with-vba
http://stackoverflow.com/questions/10592641/assign-event-handlers-to-controls-on-user-form-created-dynamically-in-vba
Tu vai ter que adicionar uma classe ou criar funções em tempo de execução.
Tu REALMENTE precisa disso? Se sim, dá uma olhada:
http://stackoverflow.com/questions/3014421/how-to-add-events-to-controls-created-at-runtime-in-excel-with-vba
http://stackoverflow.com/questions/10592641/assign-event-handlers-to-controls-on-user-form-created-dynamically-in-vba
Citação::
Cara, a solução é meio complexa.
Tu vai ter que adicionar uma classe ou criar funções em tempo de execução.
Tu REALMENTE precisa disso? Se sim, dá uma olhada:
http://stackoverflow.com/questions/3014421/how-to-add-events-to-controls-created-at-runtime-in-excel-with-vba
http://stackoverflow.com/questions/10592641/assign-event-handlers-to-controls-on-user-form-created-dynamically-in-vba
Na verdade é um pouco mais complexo. Dê uma olhada neste arquivo. Seria exatamente isso, só que preciso do componente Image esteja já com o código inserido nele. Mas se possÃvel, eu preciso do código ou de um arquivo exemplo, pois o meu conhecimento é limitado.
Obrigado
Boa tarde,
Acho que isso resolve.
Abraço
Acho que isso resolve.
Abraço
Citação::
Boa tarde,
Acho que isso resolve.
Abraço
Citação::
Boa tarde,
Acho que isso resolve.
Abraço
Citação::
Boa tarde,
Acho que isso resolve.
Abraço
Obrigado pelo retorno Fábio, seria exatamente isso mesmo. Mas, teria como implantar neste arquivo em anexo? Pois o componente é inserido em um novo arquivo do excel e não consegui.
Obrigado.... abs.
Consegui fazer funcionar. Na boa, isso me deu uma dor de cabeça.
O arquivo está em anexo, mas vou postar o código para facilitar consultas posteriores.
Obs.: se um erro acontecer, vá na Central de Confiabilidade, na aba [Ô]Configurações de Macro[Ô] e habilite a opção [Ô]Confiar no acesso ao modelo de objeto do projeto do VBA[Ô]
1º passo: cria um módulo e cole o seguinte código:
Option Explicit
Public Sub CriaEventoClick(ByRef objWorkbook As Workbook, objImagem As OLEObject)
Dim iIndice As Integer
Dim objCodeModule As Object
[ô]
For iIndice = 1 To objWorkbook.VBProject.VBComponents.Count
[ô]
If objWorkbook.VBProject.VBComponents(iIndice).Properties([Ô]Name[Ô]).Value = [Ô]Captura de Trajeto[Ô] Then
[ô]
Set objCodeModule = objWorkbook.VBProject.VBComponents(iIndice).CodeModule
[ô]
AdicionaCodigo objCodeModule, [Ô]Sub [Ô] & objImagem.Name & [Ô]_Click()[Ô]
AdicionaCodigo objCodeModule, [Ô]Set CaixaDialogo = Application.FileDialog(msoFileDialogFilePicker)[Ô]
AdicionaCodigo objCodeModule, [Ô]With CaixaDialogo[Ô]
AdicionaCodigo objCodeModule, [Ô].Title = [Ô][Ô]Relatório de Fotos - By Pablo Moreira[Ô][Ô][Ô]
AdicionaCodigo objCodeModule, [Ô].InitialView = msoFileDialogViewPreview[Ô]
AdicionaCodigo objCodeModule, [Ô].AllowMultiSelect = False[Ô]
AdicionaCodigo objCodeModule, [Ô]If .Show = -1 Then[Ô]
AdicionaCodigo objCodeModule, [Ô]EnderecoImagem = .SelectedItems(1)[Ô]
AdicionaCodigo objCodeModule, [Ô]Image1.Picture = LoadPicture(.SelectedItems(1))[Ô]
AdicionaCodigo objCodeModule, [Ô]Image1.PrintObject = True[Ô]
AdicionaCodigo objCodeModule, [Ô]End If[Ô]
AdicionaCodigo objCodeModule, [Ô]End With[Ô]
AdicionaCodigo objCodeModule, [Ô]End Sub[Ô]
[ô]
End If
[ô]
Next
[ô]
End Sub
Private Sub AdicionaCodigo(ByRef objCodigo As Object, sLinha As String)
Dim iLinhas As Integer
[ô]
iLinhas = objCodigo.CountOfLines + 1
objCodigo.InsertLines iLinhas, sLinha
[ô]
End Sub
2º passo: altere o código do botão (CommandButton1) para o seguinte:
Private Sub CommandButton1_Click()
Dim newWorkbook As Workbook
Dim newImage As Object
[ô]
Application.SendKeys [Ô](%{1068})[Ô]
DoEvents
[ô]
Set newWorkbook = Workbooks.Add
[ô]
ActiveSheet.Name = [Ô]Captura de Trajeto[Ô]
Worksheets([Ô]Captura de Trajeto[Ô]).Activate
Range([Ô]A1[Ô]).Select
ActiveSheet.Paste
Set newImage = ActiveSheet.OLEObjects.Add(ClassType:=[Ô]Forms.Image.1[Ô], Link:=False, _
DisplayAsIcon:=False, Left:=0, Top:=200, Width:=355.5, Height:=195)
newImage.Select
CriaEventoClick newWorkbook, newImage
Set newImage = Nothing
Set newWorkbook = Nothing
Me.Hide
Range([Ô]A1[Ô]).Select
End Sub
Bom dia,
Muito obrigado pelo retorno ASHKATCHUP, imagino que não deve ter sido fácil mesmo..rs.rs... mas, era isso mesmo que queria, está funcionando corretamente... estarei encerrando o tópico te pontuando.
abs,
Muito obrigado pelo retorno ASHKATCHUP, imagino que não deve ter sido fácil mesmo..rs.rs... mas, era isso mesmo que queria, está funcionando corretamente... estarei encerrando o tópico te pontuando.
abs,
Tópico encerrado , respostas não são mais permitidas