Salvando a Imagem d...
 
Notifications
Clear all

Salvando a Imagem do Userform na Planilha excel

15 Posts
2 Usuários
0 Reactions
3,217 Visualizações
(@phefo)
Posts: 0
New Member
Topic starter
 

Olá, bom dia ! :D

Estou Fazendo um programa de cadastro de motoristas, onde eu cadastro e busco pelo nome do motorista, fiz um botão impressão no qual ele grava os dados do motorista selecionado em uma aba no excel chamada impressão , cada motorista tem sua respectiva foto, porém essa foto gostaria que ela aparecesse junto a ficha na aba impressão.

Conto muito com a Ajuda de vocês, pesqueisei muito, porem somente encontrei como salvar o caminho da imagem no excel e não a imagem em si.

Segue a planilha em anexo, as imagens não serão carregadas, pq a pasta que está pesquisando as imagens está no meu servidor.

para habilitar a visualização,ao executar no excel na tela de login ("usuario/senha") clica no userform, vai pedir a senha do administrador : 23042013

para visualização do codigo no ALT+F11 a senha é a mesma :23042013

para efeitos de busca

Usuario: PHELIPE (tudo maiusculo)
Senha: 102030
conto muito com a ajuda de vocês nessa caso!!!

 
Postado : 24/05/2016 5:29 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!!

Eu não baixei seu modelo ainda, mas veja se ajuda.

Tente adaptar.

Private Sub CopiarImagem()
Sheets(1).Image1.Visible = True
    With Sheets(1).Image1
        .Picture = UserForm1.Image1.Picture
        .AutoSize = False
        .CopyPicture
    End With
End Sub

Att

 
Postado : 24/05/2016 6:19 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Na dica do Alexandre, você tem de adicionar antes em sua planilha Impressão o Controle ActiveX "Imagem", vá na aba "Desenvolvedor" clique em Inserir e selecione Imagem e desenhe no local da foto.

[]s

 
Postado : 24/05/2016 8:00 am
(@phefo)
Posts: 0
New Member
Topic starter
 

Bem meu campo da imagem no userform chama: campo_foto
Meu userform chama : cadastro_fresh

Fui na aba desenvelvedor , coloquei o controle activex

Selecionei o local da imagem

No meu userform fiz da seguinte maneira:

Private Sub BOTAO_IMPRIME_Click()
'DA PLANILHA BD CADASTRO COMECA A CONTAR DA PROXIMA LINHA A SER GRAVADA

Worksheets("IMPRESSAO").Select 'SELECIONA PLANILHA A SER GRAVADA

Sheets(1).CAMPO_FOTO.Visible = True
    With Sheets(1).CAMPO_FOTO
        .Picture = CADASTRO_FRESH.CAMPO_FOTO.Picture
        .AutoSize = False
        .CopyPicture
    End With

O que está dando errado?

 
Postado : 24/05/2016 10:00 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O erro é simples :
Acontece que você quando copiou a rotina que o Alexandre passou, fez os ajustes dos nomes dos controles "IMAGE", mas deixou a mesma referência quanto a aba.

Explicando, na rotina temos a instrução "Sheets(1)", estamos nos baseando pelo Indice das abas, ou seja o "1" indica a primeira aba, e não a terceira que é a "IMPRESSAO", por isto que prefiro me referir sempre pelo nome da aba, assim evitamos erros, se por um acaso mudar a aba de lugar.

Então, no seu modelo:
Worksheets("IMPRESSAO").Select, seria a mesma coisa se colocássemos :
Sheets(3).Select

Tem o mesmo efeito, desde que não mude a aba de lugar
Sheets(3).CAMPO_FOTO.Visible = True
eu prefiro assim:
Worksheets("IMPRESSAO").CAMPO_FOTO.Visible = True

Troque pela rotina abaixo e teste.

'DA PLANILHA BD CADASTRO COMECA A CONTAR DA PROXIMA LINHA A SER GRAVADA

    Worksheets("IMPRESSAO").Select 'SELECIONA PLANILHA A SER GRAVADA
    
    Sheets(3).CAMPO_FOTO.Visible = True
    
    With Sheets(3).CAMPO_FOTO
        .Picture = CADASTRO_FRESH.CAMPO_FOTO.Picture
        .AutoSize = False
        .CopyPicture
    End With

End Sub

[]s

 
Postado : 24/05/2016 10:48 am
(@phefo)
Posts: 0
New Member
Topic starter
 

Vim empolgado hoje , mas acabou não dando certo :'/

abri o userform, fui no botão imprimir e coloquei o codigo abaixo:

Worksheets("IMPRESSAO").Select 'SELECIONA PLANILHA A SER GRAVADA

Sheets(3).CAMPO_FOTO.Visible = True O erro esta ocorrendo nessa linha

With Sheets(3).CAMPO_FOTO
.Picture = CADASTRO_FRESH.CAMPO_FOTO.Picture
.AutoSize = False
.CopyPicture
End With

Pelo que pude entender Sheets (3) - seleciona a 3º aba da planilha no meu caso a aba impressão, tentei FAZER tbm sheets("IMPRESSAO"), mas sem sucesso .

agradeço desde já a atenção de vocês.

 
Postado : 25/05/2016 5:26 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Se o modelo que anexou está igual ao que adicionou a rotina, não era para dar erro, alterei aqui e correu sem erros.

Possíveis possibilidades :
Sheets(3) - não é a terceira aba ("IMPRESSAO")
CAMPO_FOTO - o campo imagem não está com este nome

Altere as linhas que estão referenciando pelo indice pelo nome para ter certeza quanto a ABA :
Todas em que tiver:
Sheets(3)
Troque por :
Worksheets("IMPRESSAO")

[]s

 
Postado : 25/05/2016 7:02 am
(@phefo)
Posts: 0
New Member
Topic starter
 

Mauro Coutinho , tudo bem?

está do mesmo modo, fiz as alterações mas sem sucesso

uma duvida que surgiu, esse codigo é para colocar no:

objeto Imagem (Control ActiveX) - o local da imagem selecionado na planilha? pq se for o nome do local onde a imagem foi selecionado a imagem é Image1

ou no botão imprimir, do userform?

coloquei

 
Postado : 25/05/2016 7:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

O código é para ser colocado no botão imprimir, mas como você já tem um em seu form, ou tem de adicionar um novo só para a foto ou tem de ajustar a rotina nas instruções que já tem no Botão Imprimir.

por vias de duvida, segue com a implementação, mas sem alterar o seu botão que já tinha.

 
Postado : 25/05/2016 7:53 am
(@phefo)
Posts: 0
New Member
Topic starter
 

puts meu kkkkk agora foi

obrigado pela ajuda vi onde estava errando tbm kkkkkkk

Worksheets("IMPRESSAO").Select 'SELECIONA PLANILHA A SER GRAVADA
Worksheets("IMPRESSAO").CAMPO_FOTO.Visible = True justamente nessa linha pois eu nao mencionei a aba impressao da planilha
With Worksheets("IMPRESSAO").CAMPO_FOTO
.Picture = CADASTRO_FRESH.CAMPO_FOTO.Picture
.AutoSize = False
.CopyPicture

agora surgiu um pequeno problema há a possibilidade de ajustar a imagem ao tamanho do campo?

 
Postado : 25/05/2016 9:44 am
(@phefo)
Posts: 0
New Member
Topic starter
 

pois quando eu altero
.Height = 100
.Width = 200

ele corta o campo e nao a imagem

 
Postado : 25/05/2016 10:33 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Adicione a instrução abaixo :
Apos esta linha
.AutoSize = False

Coloque esta:
.PictureSizeMode = fmPictureSizeModeStretch

Veja na Ajuda do VBA (F1) a definição desta Propriedade :

Propriedade PictureSizeMode
Especifica como exibir a figura de segundo plano em um controle, formulário ou página.
Sintaxe

objeto.PictureSizeMode [= fmPictureSizeMode]

A sintaxe da propriedade PictureSizeMode possui as partes a seguir:
Parte Descrição
objeto Obrigatória. Um objeto válido.
fmPictureSizeMode Opcional. A medida a tomar se a figura e o formulário ou a página que a contém não tiverem o mesmo tamanho.

Definições
As definições para fmPictureSizeMode são:
Constante Valor Descrição
fmPictureSizeModeClip 0 Corta qualquer parte da figura que seja mais larga que o formulário ou página (padrão).
fmPictureSizeModeStretch 1 Estica a figura para preencher o formulário ou página. Esta definição distorce a figura tanto na direção horizontal quanto na vertical.
fmPictureSizeModeZoom 3 Amplia a figura, mas não a distorce, seja na direção horizontal ou na vertical.

Comentários

A definição fmPictureSizeModeClip indica que você deseja mostrar a figura em seu tamanho e escala originais. Se o formulário ou página for menor que a figura, esta definição mostrará apenas a parte da figura que se ajusta dentro do formulário ou página.

As definições fmPictureSizeModeStretch e fmPictureSizeModeZoom ampliam a imagem, mas fmPictureSizeModeStretch causa distorção. A definição fmPictureSizeModeStretch amplia a imagem no sentido horizontal e vertical até que atinja as bordas correspondentes do recipiente ou controle. A definição fmPictureSizeModeZoom amplia a imagem até que ela atinja as bordas horizontais ou verticais do recipiente ou controle. Se a imagem atingir primeiro as bordas horizontais, qualquer distância que reste até as bordas verticais permanecerá vazia. Se ela atingir antes as bordas verticais, qualquer distância que reste até as bordas horizontais permanecerá vazia.

 
Postado : 25/05/2016 10:54 am
(@phefo)
Posts: 0
New Member
Topic starter
 

SHOW DE BOLA MEU AMIGO !!!

DEU CERTO , MAS NÃO SEI O QUE DANADO TA ACONTECENDO !

MEU CODIGO TÁ EXATAMENTE IGUAL

DENTRO DO BOTÃO IMPRIMIR COLOQUEI O CODIGO,

Worksheets("IMPRESSAO").Select 'SELECIONA PLANILHA A SER GRAVADA
Worksheets("IMPRESSAO").CAMPO_FOTO.Visible = True <<<<< ERRO NESSA LINHA

A aba está com o nome de IMPRESSAO, o nome do campo é CAMPO_FOTO

Ela segue em anexo , não sei mais o que pode ser :/

 
Postado : 25/05/2016 11:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Você baixou o modelo que enviei ? Nele não tem erro.

Neste modelo que anexou agora, o controle ActveX "Imagem" que está na aba está com o nome "Image2" e não "CAMPO_FOTO", ou altere o nome do controle ou altere na rotina para "Image2"

 
Postado : 25/05/2016 11:49 am
(@phefo)
Posts: 0
New Member
Topic starter
 

Muito obrigado mesmo pela grande ajuda!

Muito obrigado mesmo Show de Bola.

 
Postado : 25/05/2016 12:36 pm