Envio de conteúdo de células de diferentes colunas por e-mail - Microsoft Office - Forum do BABOO
Envio de conteúdo de células de diferentes colunas por e-mail
Criado por Maninho2010, Jul 13 2012 12:34 PM
EXCEL;VBA;E-MAIL;OUTLOOK.
Maninho2010
Publicado 13 July 2012 - 12:34 PM
Preciso de uma ajuda para formatar uma função em uma planilha de prazos de manutenção. Nesta planilha terei uma coluna de identificação de determinado produto (Coluna "B"), uma coluna para inserção da data em que iniciei a manutenção deste produto (Coluna "C"); uma coluna informando se a manutenção do produto já foi finalizada (Coluna "D"), e em caso de ter sido finalizada, na coluna "E" é inserido a data de finalização. Na coluna "F" estará o contador de dias em que o produto permaneceu em manutenção, ou nos casos em que a manutenção ainda não tiver sido finalizada, o tempo em que o produto esta em reparo (Manutenção). Para o cálculo deste período, utilizei a fórmula "=SE(D2="Sim"|E2-C2|(HOJE())-(C2))". Pois bem, vamos ao problema: Toda vez que acionado um botão (Na planilha denominei-o "Atualizar") é rodado uma macro que deverá verificar todos os produtos que permanecem em manutenção (Texto "Não" na coluna "D"), feito isto, deverá identificar dentre estes ainda em manutenção, quais os que estão a 25 dias ou mais em manutenção (Através da coluna "F"). Identificados os produtos nestas condições (em manutenção e a 25 dias ou mais), deverá disparar um e-mail contendo no texto a identificação deste(s) produto(s) - coluna "B"-, a(s) respectiva(s) data(s) de início da(s) manutenção - coluna "C" -, e o(s) respectivo(s) tempo(s) em que o(s) produto(s) permanece(m) em manutenção - Coluna "F".
Planilha exemplo (Figura em anexo)
Resultado por e-mail:
110001	25/3/2012	110
110002	26/3/2012	109
110004	28/3/2012	107
Tal e-mail deverá ser disparado para 3 destinatários fixos, por isso, podem estar inseridos na raiz da função da macro.
Espero a ajuda dos senhores, já fiz muitas pesquisas, mas não encontrei nenhuma que atendesse 100% a este humilde pedido. Se alguém puder ajudar e que precise de mais informações é só solicitar (Não anexei a planilha por que aqui na empresa o sistema bloqueia o upload deste tipo de arquivo, mas se for o caso posso mandar por e-mail. Deixei em anexo a imagem do modelo simples elaborado).
Mais uma vez agradeço a compreensão e auxílio de todos. Este fórum sempre traz as melhores soluções, mesmo para pessoas leigas e iniciantes em VBA, como eu.
Editado por Maninho2010, 13 July 2012 - 12:42 PM.
Publicado 19 July 2012 - 07:18 PM
Caros,novamente aqui para tentar um ajuda. Para solução do problema anterior, testei o código abaixo:Sub TesteMacroFiltro()'' TesteMacroFiltro Macro''	ActiveSheet.Range("$A$1:$G$23").AutoFilter Field:=4, Criteria1:="Não"	ActiveSheet.Range("$A$1:$G$23").AutoFilter Field:=6, Criteria1:=">=25", _	Operator:=xlAnd	Range("B:C,F:F").Select	Selection.Copy	ActiveSheet.Range("B:C,F:F").SelectDim rng As Range	Dim OutApp As Object	Dim OutMail As Object	Dim decisao As VbMsgBoxResult	decisao = MsgBox("Deseja enviar o email ? ", vbYesNo, "Controle de Liberações")	If decisao = vbYes Then	With Application	.EnableEvents = False	.ScreenUpdating = False	End With	Set rng = Nothing	Set rng = ActiveSheet.UsedRange	Set OutApp = CreateObject("Outlook.Application")	OutApp.Session.Logon	Set OutMail = OutApp.CreateItem(0)	On Error Resume Next	With OutMail	.To = "teste.teste@hotmail.com"	.CC = ""	.BCC = ""	.Subject = "Manutenção de equipamentos - Calculo diario de manutenção " & DateTime.Date	.HTMLBody = RangetoHTML(rng)	.Body = "Os equipamentos listados abaixo estão com respectiva manutenção acima do prazo definido em contrato:"	.Save	.send	End With	On Error GoTo 0	With Application	.EnableEvents = True	.ScreenUpdating = True	End With	Set OutMail = Nothing	Set OutApp = Nothing	Else	End IfEnd SubFunction RangetoHTML(rng As Range)	Dim fso As Object	Dim ts As Object	Dim TempFile As String	Dim TempWB As Workbook	TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"	'Copy the range and create a new workbook to past the data in	End FunctionInfelizmente, o código faz uma série de etapas do que preciso, porém, não consegui colar os dados das colunas selecionadas para dentro do corpo do e-mail. Tentei outros códigos que colavam todas as colunas da planilha no e-mail, entretanto, como a planilha em que vou utilizar a macro tem várias colunas, preciso que seja enviado somente as 03 colunas descritas no texto anterior (B, C e F). Em anexo segue a planilha modelo.Desde já agradeço o auxílio, como sou leigo no assunto VBA, estou levando um laço.
Modelo_Dias em Manutenção_5.zip 20.55K
Publicado 27 July 2012 - 02:57 PM
Caros,Estou quase conseguindo. Quero ser bem claro que o meu conhecimento em VBA é o basico, e por este motivo conto com ajuda de todos.Preciso de uma lógica para COLAR no corpo do e-mail o conteúdo de colunas copiadas do excel. Mais especificamente, preciso que cole no corpo do e-mail todo o conteúdo copiado das colunas "B", "C" e "F"..Na lógica já existente, o conteúdo já foi selecionado e a ordem de copiar também esta sendo executada, mas estou com dificuldades em encontrar o comando de colar no corpo do e-mail. Alguém poderia ajudar?Mais uma vez agradeço!