Notifications
Clear all

Ler nome do arquivo picture de um commandbutton

7 Posts
2 Usuários
0 Reactions
1,318 Visualizações
(@depoisteconto)
Posts: 183
Reputable Member
Topic starter
 

Galera, bom dia!

Eu tenho duas perguntas cruciais e relativamente difíceis, preciso de ajuda. Vamos lá:

1ª e mais difícil: tenho um botão que é carregado com imagens de um diretório. Tem como eu capturar o nome da imagem que aparece no botão?

2ª - Como poderia alterar o name do botão inserido em um userform, via código vba? Depois como faria para ler esse nome via vba?

Valeu.

At

 
Postado : 15/09/2013 7:28 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Quando você fala botão, seria um botão de comando de um Userform?

Tem como eu capturar o nome da imagem que aparece no botão?

:?

Caso apareça a imagem de nome AAAA no botão você quer capturar esse nome?

Att

 
Postado : 15/09/2013 7:59 am
(@depoisteconto)
Posts: 183
Reputable Member
Topic starter
 

Bom dia!!

Quando você fala botão, seria um botão de comando de um Userform?

Tem como eu capturar o nome da imagem que aparece no botão?

:?

Caso apareça a imagem de nome AAAA no botão você quer capturar esse nome?

Att

Exatamente. É um commandbutton dentro de um userform.

Toda vez que inicializado o userform, esse commandbutton aparece com uma picture diferente. Gostaria de ler o nome de origem dessa picture.

Ex: A picture do commandbutton é um arquivo que se chama "laranja.bmp", então, quero armazenar o nome laranja em uma string.

Será que tem jeito?

At

 
Postado : 15/09/2013 8:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se a imagem é definida diretamente na Janela Propriedade, não tem como capturar o caminho nem o nome, desta forma a imagem fica como se estivesse anexada permanentemente, por isso que quando abrimos o arquivo em outro PC não temos erro de não ter localizado a imagem.

Sendo definida atraves de Rotina, precisamos saber :
"Toda vez que inicializado o userform, esse commandbutton aparece com uma picture diferente"
Qual a Instrução utilizada para carregar a Imagem ?

Na Rotina Abaixo é definido a Imagem do CommandButton1, ou seja, temos na mesma o Caminho e o nome, ao final temos a instrução que armazena em uma Variável somente o Nome da Imagem.

Private Sub UserForm_Initialize()
    Dim str As String
    Dim sSplitBarras() As String
    Dim total As Integer
    Dim sNomeArquivo As String 'Nome do Arquivo de Imagem
 

    With Me.CommandButton1
        'Localiza a Imagem no diretorio e associa ao CommandButton
        .Picture = LoadPicture("C:Documents and SettingsMauroMeus documentosMinhas imagensIMAGEM1.JPG")
        .PicturePosition = fmPicturePositionAboveCenter
        
        'Variavel do Caminho da Figura
        str = ("C:Documents and SettingsMauroMeus documentosMinhas imagensIMAGEM1.JPG")
        
        'Remove as "" do caminho
        sSplitBarras = Split(str, "")
        
        'Total das ""
        total = UBound(sSplitBarras)
        
        'VARIAVEL (sNomeArquivo) - somente com o Nome do arquivo da Imagem
        sNomeArquivo = sSplitBarras(total)
    
        MsgBox "O nome da Imagem do Botão é : " & sNomeArquivo
        
    End With
    
End Sub

Como poderia alterar o name do botão inserido em um userform, via código vba? Depois como faria para ler esse nome via vba?
Você está se referindo ao NAME ou CAPTION ?
Veja na Rotina abaixo a diferença :

Private Sub CommandButton3_Click()

    Dim MyControl As Control

    For Each MyControl In Controls
        'Propriedada Name - Nome que deu ao CONTROLE, ou seja, trocou:
        'CommandButton2 por um cmbMeuBotao por exemplo
        MsgBox "MyControl.Name = " & MyControl.Name
        
        'Propriedade Caption - Nome que deu ao Botão
        MsgBox "MyControl.Name = " & MyControl.Caption
    Next
    
End Sub

Lembrando, que quando definimos um NAME a um CommandButton temos algumas instruções associadas ao mesmo, então se tenho no meu Formulário um Botão com o NAME CommandButton1 , se der dois cliques no mesmo teremos :
Private Sub CommandButton1_Click()
'Instruções.....
'Instruções........

End Sub

Desta forma se eu alterar o NAME do CommandButton1 para cmbMeuBotão no formulário terá de alterar o NAME na Rotina tambem.

[]s

 
Postado : 15/09/2013 4:44 pm
(@depoisteconto)
Posts: 183
Reputable Member
Topic starter
 

E ae Mauro blz!

Então a pergunta é simples.

Eu carreguei a imagem para o commandbutton via código. Feito isso, como faço pra ler o nome da picture desse commnadbutton?

Eu entendi sua idéia de armazená-la enquanto está sendo carregada, mas se for possível, quero saber como ler o nome dessa picture, por exemplo clicando no próprio commandbutton. ex:

Private Sub CommandButton1_Click()

Variavel = Me.Commandbutton.Picture.Name

End Sub

At

 
Postado : 15/09/2013 5:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Então a pergunta é simples.

A pergunta eu entendi, talvez minha explanação não tenha sido tão simples, mas se reler atentamente o que postei acima, estas questões foram respondidas, o que não foi respondido foram as que perguntei.

Veja que na rotina acima foi associada ao CommandButton1 a Imagem "IMAGEM1.JPG" a qual ficará armazenada na memória na Variavel :
'VARIAVEL (sNomeArquivo) - somente com o Nome do arquivo da Imagem
sNomeArquivo = sSplitBarras(total)

Ou seja você só conseguirá saber posteriormente qual a imagem está associada a este CommandButton1 se não limpar esta Variável, deixando-a na memoria.

Resumindo, se for ter mais de um Botão, terá de ter uma variavel para cada um.

Segue um exemplo, acredito que ficará mais facil de compreender.
Nome da Imagem nos CommandButtons

Fonte : Determine which user form command button was clicked (VBA)
http://www.ozgrid.com/forum/showthread.php?t=148517

Uma outra alternativa, é deixar os nomes dos Botões e as figuras assocciadas aos mesmos em uma aba, e depois carrega-las ao clicar nos botões.

Um porem nas duas provaveis soluções, é, que como diz que:
Toda vez que inicializado o userform, esse commandbutton aparece com uma picture diferente.
Terá de ter uma lista com os nomes e ir associando a cada carregamento, mas como não respondeu como as mesmas são carregadas, fica dificil ter de ficar montando exemplos só em suposições.

 
Postado : 15/09/2013 8:27 pm
(@depoisteconto)
Posts: 183
Reputable Member
Topic starter
 

Bom dia Mauro.

Tinha entendido desde o início rsrs, pretendo usar a variável e trabalhar por associação caso não consiga ler a picture do commandbutton.

Acho que não tem como ler a picture de um controle depois que foi inserida. Até porque, se porventura lá estivesse o caminho (diretório), quando tentasse usar em outro computador falharia.

Obrigado pelas sugestões Mauro.

At

 
Postado : 16/09/2013 6:34 am