Vídeo recomendado
https://youtu.be/diWPPPhW-9E

[RESOLVIDO]Fazer imagem de um formulario

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

[RESOLVIDO]Fazer imagem de um formulario

Mensagem por Wagner.cwb »

Olá Pessoal!

preciso criar a imagem de um formulário.
Tenho uma rotina de gerar um relatório e copiar o resultado do formulário com a "ferramenta de captura" do win7 para o whatsapp.
Consegui uma maneira de interagir o excel com whats, mas preciso criar automaticamente uma imagem do Form e estou pensando como...

Poderiam me ajudar mais uma vez?

Obrigado!

Abs
Editado pela última vez por Wagner.cwb em Qua Jul 19, 2017 10:19 pm, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: Fazer imagem de um formulario

Mensagem por Wagner.cwb »

Encontrei neste post algo que quase chega lá

viewtopic.php?f=20&t=1375&p=7966&hilit= ... ario#p7966

Ele exporta a imagem que já esta no formulário, no caso eu preciso exportar todo o formulário para imagem, digo os dados de todos os campos, inclusive a imagem presente nele, exatamente como esta na imagem em anexo.
Anexos
rotina1.PNG
rotina1.PNG (205.71 KiB) Exibido 9526 vezes


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Fazer imagem de um formulario

Mensagem por PRMPOKER »

Bom dia Wagner, tudo bem?

Acho que posso te ajudar! É só fazer a captura da tela, via VBA, simulando o CTRL + ALT + PrintScreen, que vai capturar somente a janela ativa, no caso, teu formulário exatamente como ele estiver. No momento não tenho acesso ao meu notebook, mas posto o código para vocẽ à noite, se te ajudar.

Um abraço!


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: Fazer imagem de um formulario

Mensagem por Wagner.cwb »

Olá amigo!

tentei algo semelhante, mas saiu a tela toda, mas é uma opção.
Bom, pesquisei algumas outras alternativas, uma delas é o comando "PrintForm" ele imprime em formato pdf.
Mas não investi... vou ter que criar um outro passo para converter o pdf em imagem...

Então "clonei" o form para as células de uma planilha e transformei a seleção em imagem, porém agora estou apanhando para criar uma variável desta tal imagem.

Segue os passos:

download/file.php?mode=view&id=4096
1º. Aqui editei os dados em uma planilha - com a aparência de um form

2º. Com o script gerei a imagem da seleção - clone form.

Código: Selecionar todos

Dim rng As Range
    Dim ws As Worksheet
    Dim cht As ChartObject
    
  
    Set ws = ActiveSheet
  
  'Copia range como imagem para Área de Transferência
    With ws
    Set rng = .Range("S2:X31")
    rng.CopyPicture xlScreen, xlBitmap
    End With
    Range("Z2").Activate 'local imagem na planilha
    ActiveSheet.Paste
Até aqui perfeito...

Agora preciso selecionar esta imagem e fazer dela uma variável.

Estou tentando assim:

Código: Selecionar todos

For Each img In ActiveSheet.Shapes
 If Not Application.Intersect(img.TopLeftCell, ActiveSheet.Range("Z1:AF32")) Is Nothing Then 'onde esta a figura
        
        Debug.Print img.name
        img.CopyPicture xlScreen, xlBitmap
        
            End If
        
            Next img
Não consigo enviar a cópia desta imagem via variável...
Anexos
clone.PNG
clone.PNG (152.75 KiB) Exibido 9491 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Fazer imagem de um formulario

Mensagem por PRMPOKER »

Amigão, te mando o código abaixo:

Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12

Sub AltPrintScreen()
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
End Sub

Cola tudo num novo módulo.

Essa função captura somente a JANELA ativa, cria um botão no form pra chamar a Sub e depois é só colar (ctrl + v) onde tu quer.


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Fazer imagem de um formulario

Mensagem por PRMPOKER »

Grande Wagner.

Conseguiu seguir adiante?

Um abraço!


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: Fazer imagem de um formulario

Mensagem por Wagner.cwb »

Boa noite amigo!

Hoje consegui testar, funcionou perfeitamente!
Ele copia somente o form ativo.
Obrigado por compartilhar a função, bem enxuta e funcional.
Abraços!


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: [RESOLVIDO]Fazer imagem de um formulario

Mensagem por Wagner.cwb »

Só tem um detalhe...

quando eu executo ele isolado (Botão só com o seu código), copia apenas o form, mas quando associei ele com outro código, ele passa a printar toda a tela do excel... com certeza é questão de ajuste da minha parte, pois o código funciona.
Por exemplo:
Tentei copiar a imagem na planilha

Código: Selecionar todos

Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12

Sub AltPrintScreen()
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0
'termina seu código e exporta a imagem para planilha
Worksheets(5).Activate
   
   Range("Z2").Activate
   ActiveSheet.Paste



End Sub

Assim ele copia todo o fundo da planilha, não somente o form.
Eu tentei colar um temporizador "fazer (8000)", nada, mudeu para 3s e ficou tudo cinza rs
Mas estou que nem o Vitor Belford, levando porrada, mas não desisto kkk


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: [RESOLVIDO]Fazer imagem de um formulario

Mensagem por PRMPOKER »

É isso aí meu amigo!

O crescimento se dá quando nos interessamos em aprender e descobrir como as coisas funcionam.

O caminho está dado e atente a tua necessidade imediata. Caso tu não consigas resolver sozinho eu volto para tentar te ajudar.

Grande abraço!


Wagner.cwb
Manda bem
Manda bem
Mensagens: 168
Registrado em: Sáb Set 24, 2016 4:48 pm

Re: [RESOLVIDO]Fazer imagem de um formulario

Mensagem por Wagner.cwb »

Agora resolvido de vez

Inclui no código o comando

Call Application.OnTime(Now + TimeValue("00:00:03"), "Enviar_Whatsapp")

Passou a funcionar como eu esperava... 3 segundos entre as macros resolveu, não sei se é a solução padrão rs

ficou assim no final:

Código: Selecionar todos

Option Explicit
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal _
bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_SNAPSHOT = &H2C
Private Const VK_MENU = &H12

Sub AltPrintScreen()
keybd_event VK_MENU, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, 0, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0
keybd_event VK_MENU, 0, KEYEVENTF_KEYUP, 0

Call Application.OnTime(Now + TimeValue("00:00:03"), "Enviar_Whatsapp")
'
Deixo aqui caso alguém tenha a mesma dificuldade.

Obrigado pela solução amigo!

Abs


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder