Usuário com melhor resposta
Tirar Print Screen e colar no e-mail

Pergunta
-
Bom dia galera, estou com uma grande dúvida... Preciso de uma ajuda, estou desenvolvendo um controle de viagens por caminhões. O cliente faz a solicitação e eu tenho que confirmar se tenho um caminhão disponivel ou não. O que eu preciso é quando eu clicar no Botão de Comando, ele tire um printScreen da tela, abra o e-mail e cole, depois arrumo manual o e-mail do solicitante e envio mostrando a solicitação...
Desde já agradeço a ajuda. Obrigado!
domingo, 20 de outubro de 2013 11:36
Respostas
-
Associe o código abaixo à um botão do seu formulário:
Private Sub CommandButton1_Click() Dim cob As Excel.ChartObject Dim wks As Excel.Worksheet Dim shp As Excel.Shape Dim cht As Excel.Chart Dim objOutlook As Object 'Outlook.Application Dim objMailItem As Object 'Outlook.MailItem Dim strImagePath As String strImagePath = Environ("temp") & "\benzatemp.png" Application.SendKeys "(%{1068})", True DoEvents Application.Wait Now + TimeSerial(0, 0, 1) Application.ScreenUpdating = False Unload Me Set wks = Workbooks.Add(xlWBATWorksheet).Worksheets(1) wks.Paste Set shp = wks.Shapes(1) Set cht = wks.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart cht.Paste cht.Export strImagePath, "png" wks.Parent.Close SaveChanges:=False Application.ScreenUpdating = True Set objOutlook = CreateObject("Outlook.Application") Set objMailItem = objOutlook.CreateItem(0) With objMailItem .HTMLBody = "<img src='" & strImagePath & "' />" .To = "benzadeus@ambienteoffice.com.br" .Subject = "Assunto" .CC = "" .Display End With Kill strImagePath End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Durval Ramos sexta-feira, 25 de outubro de 2013 15:18
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 19:12
sexta-feira, 25 de outubro de 2013 02:42Moderador -
Olá, como creio que sua pergunta não está relacionada com a pergunta original, seria melhor criar um novo tópico com outra pergunta. Dessa forma, o fórum fica mais organizado e mais pessoas podem te ajudar. Mas tudo bem, na próxima vez você lembra disso.
Voltando à sua pergunta, para não inverter uma data, grave ela (por VBA) dessa forma numa célula, supondo que o valor que quer gravar esteja num formulário na caixa de texto TextBox1:
Cells(linha, coluna) = CLng(CDate(TextBox1))
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 19:13
terça-feira, 5 de novembro de 2013 23:20Moderador
Todas as Respostas
-
Você está utilizando formulários ou o próprio Excel mesmo?
Considere usar um suplemento para envio de e-mails: http://www.ambienteoffice.com.br/suplementos/emailxl/
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
domingo, 20 de outubro de 2013 19:53Moderador -
Estou usando formularios.
Tenho o UserForm, e alguns TextBox onde contex valores. Em baixo tenho os botões de comando, "Ok" e "e-mail", preciso que quando eu clicar em e-mail ele faça um AltPrintScreen do UserForm e abra o Outlook e cole, eu arrumo o e-mail do solicitante e envio...
segunda-feira, 21 de outubro de 2013 12:43 -
Você pode tirar um print do formulário utilizando o comando abaixo:
Application.SendKeys "(^%{1068})"
E então ler a área de transferência, em que a imagem será salva.
Alternativamente, pode usar chamadas APIs para gravar um formulário como imagem: http://www.ambienteoffice.com.br/officevba/salvar_imagem_de_formulario_numa_pasta/
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
terça-feira, 22 de outubro de 2013 01:10Moderador -
Cara, eu sou muito amador nisso... Ja tentei e não consegui, poderia me dar uma mão no codigo a ser digitado?
terça-feira, 22 de outubro de 2013 13:35 -
Você está usando o Outlook para enviar e-mail?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Editado Felipe Costa GualbertoMVP, Moderator quinta-feira, 24 de outubro de 2013 01:44
quinta-feira, 24 de outubro de 2013 01:39Moderador -
Sim Outlook,quinta-feira, 24 de outubro de 2013 10:40
-
Associe o código abaixo à um botão do seu formulário:
Private Sub CommandButton1_Click() Dim cob As Excel.ChartObject Dim wks As Excel.Worksheet Dim shp As Excel.Shape Dim cht As Excel.Chart Dim objOutlook As Object 'Outlook.Application Dim objMailItem As Object 'Outlook.MailItem Dim strImagePath As String strImagePath = Environ("temp") & "\benzatemp.png" Application.SendKeys "(%{1068})", True DoEvents Application.Wait Now + TimeSerial(0, 0, 1) Application.ScreenUpdating = False Unload Me Set wks = Workbooks.Add(xlWBATWorksheet).Worksheets(1) wks.Paste Set shp = wks.Shapes(1) Set cht = wks.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart cht.Paste cht.Export strImagePath, "png" wks.Parent.Close SaveChanges:=False Application.ScreenUpdating = True Set objOutlook = CreateObject("Outlook.Application") Set objMailItem = objOutlook.CreateItem(0) With objMailItem .HTMLBody = "<img src='" & strImagePath & "' />" .To = "benzadeus@ambienteoffice.com.br" .Subject = "Assunto" .CC = "" .Display End With Kill strImagePath End Sub
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Sugerido como Resposta Durval Ramos sexta-feira, 25 de outubro de 2013 15:18
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 19:12
sexta-feira, 25 de outubro de 2013 02:42Moderador -
Cara, show de bola! Funcionou direitinho, muito obrigado.
Só deu um pequeno probleminha, talvez você saiba me responder... Quando vou preencher as caixa de textos como a de data, ele lê os dois primeiros digitos e pula para outra caixa de desabilita o Num Lock.
Abraço
sexta-feira, 25 de outubro de 2013 10:29 -
Não entendi muito bem sua duvida.
Sua dúvida é referente ao código que forneci? Se não, poate o código que tem utilizado atualmente.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
sexta-feira, 25 de outubro de 2013 14:58Moderador -
Felipe, consegui!
Estava dando um problema de SandKeys, dae apaguei das outras caixa de texto e fiz uma nova aplicação para habilitar o NUMLOCK.
Private Sub MultiPage0_Change()
Application.SendKeys "({NumLock})"
End Sub
Mudei aqui tambem,
strImagePath = Environ("Save") & "C:\Users\fcvelho\Desktop\Paraná\Print\fcvelho.png" 'Local onde vai ser salvo
i = "C:\Users\fcvelho\Desktop\Paraná\Print\fcvelho.png"
Application.SendKeys "(%{1068})"
DoEvents
Application.Wait Now + TimeSerial(0, 0, 1)
Application.ScreenUpdating = False
Set wks = Workbooks.Add(xlWBATWorksheet).Worksheets(1)
wks.Paste
Set shp = wks.Shapes(1)
Set cht = wks.ChartObjects.Add(0, 0, shp.Width, shp.Height).Chart
cht.Paste
cht.Export strImagePath, "png"
wks.Parent.Close SaveChanges:=False
Application.ScreenUpdating = True
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.To = "e-mail"
.cc = ""
.BCC = ""
.Subject = "Solicitação de pranchas"
.Attachments.Add "C:\Users\fcvelho\Desktop\Paraná\Print\fcvelho.png"
.HTMLBody = "Segue em anexo agendamento"
.Send 'or use .DisplayEnd With
Ficava como temporario e não enviava para os outrs a imagem... dae mudei e ficou show!
Muito obrigado, você me ajudou muito cara!
segunda-feira, 28 de outubro de 2013 12:40 -
Que bom que resolveu seu problema.
Atenção: Eu utilizava a função Environ("temp") para salvar o arquivo anexado numa pasta temporária, e depois a apagava. Environ("Save") não significa nada, e você pode simplesmente remover do seu código.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
segunda-feira, 28 de outubro de 2013 23:29Moderador -
Certo, ja vou altera lá. Obrigado
Estou com um grande problema agora... finalizei todos os procedimentos, quando vou abrir a planilha, da um monte de erro, quando fecho o UserForm a planilha fica aberta :S, ta complicado rsrs to apanhando aqui.
terça-feira, 29 de outubro de 2013 09:37 -
Não estou conseguindo reproduzir seu problema.
Poderia ser mais específicos em relação aos erros?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
quarta-feira, 30 de outubro de 2013 00:14Moderador -
Boa tarde Bezadeus, tudo bem?
Consegui fazer mais algumas coisas no meu projeto, mas agora estou fazendos os testes e encontrei um grande problema...
Data, esta invertendo e consigo fazer filtro avançado por que não encontra as datas.
terça-feira, 5 de novembro de 2013 16:11 -
Olá, como creio que sua pergunta não está relacionada com a pergunta original, seria melhor criar um novo tópico com outra pergunta. Dessa forma, o fórum fica mais organizado e mais pessoas podem te ajudar. Mas tudo bem, na próxima vez você lembra disso.
Voltando à sua pergunta, para não inverter uma data, grave ela (por VBA) dessa forma numa célula, supondo que o valor que quer gravar esteja num formulário na caixa de texto TextBox1:
Cells(linha, coluna) = CLng(CDate(TextBox1))
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sábado, 7 de junho de 2014 19:13
terça-feira, 5 de novembro de 2013 23:20Moderador