Fórum Excel Bácico, Avançado e Vba
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Fórum Excel Bácico, Avançado e Vba

Este fórum é destina a usuário de Excel, que queiram compartilhar informações a básicas, avançadas e programação em VBA...
 
InícioInício  Últimas imagensÚltimas imagens  ProcurarProcurar  RegistarRegistar  Entrar  

 

 Alteração do código de envio via e-mail

Ir para baixo 
2 participantes
AutorMensagem
celliusctba




Mensagens : 23
Data de inscrição : 17/10/2013

Alteração do código de envio via e-mail Empty
MensagemAssunto: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptySáb Ago 23, 2014 4:52 pm

Bom dia, como vocês sempre são atenciosos gostaria de mais uma ajudinha! Tenho esse código que adaptei do site de vocês, e funciona bem desde que seja noutro nome de planilha, ele dá erro pois a planilha está aberta quando tento enviar a que está em uso, mas o que gostaria e vão perceber pelo código facilmente, é:

Gostaria que salvasse a planilha em uso, e essa mesma fosse enviada! Creio que criando cópia com outro nome, de forma temporária, Envio e exclusão da cópia!!!

Então se puderem me ajudar, desde já agradeço muito mesmo. Abçs

Vai o código

Dim oMensagem As Object
   Dim oConfiguração As Object
   Dim sCorpo As String
   Dim vFields As Variant

   Set oMensagem = CreateObject("CDO.Message")
   Set oConfiguração = CreateObject("CDO.Configuration")

       oConfiguração.Load -1 'Padrões CDO
       Set vFields = oConfiguração.Fields
       With vFields
           .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
           
                       'GMail:
           .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"

           .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
           .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
           .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "true"
           .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "meuemail@gmail.com"
           .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "minha senha"
           .Update
       End With
   
   sCorpo = "Envio" & vbNewLine & _
     vbNewLine & _
     "Planilha atualizada." & vbNewLine
   
     
   With oMensagem
       Set .Configuration = oConfiguração
       .To = "meuemail@gmail.com" 'mude aqui para alterar o destinatário
       .CC = "" 'com cópia
       .BCC = "" 'com cópia oculta
       .From = """Celio"" <meuemail@gmail.com>"
       .Subject = "Planilha Atualizada"
       .TextBody = sCorpo
       .AddAttachment "C:\MinhaPlanilha.xlsm" '<- local e nome do arquivo
       '.TextBody = strbody
       .Send
   End With
End Sub
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptySeg Ago 25, 2014 2:18 pm

Bom dia!!

Tente algo como
Código:
ActiveWorkbook.SendMail Recipients:="john@abc.com", Subject:="Test", ReturnReceipt:=False
?

Att
Ir para o topo Ir para baixo
celliusctba




Mensagens : 23
Data de inscrição : 17/10/2013

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptySeg Ago 25, 2014 2:37 pm

Obrigado pelo código, só tem um probleminha, oque apago e o que deixo pra ele rodar? Testei alguns recortes mas deu erro! Se puder apontar o caminho!!!

Smile


Desde já agredeço




alexandrevba escreveu:
Bom dia!!

Tente algo como
Código:
ActiveWorkbook.SendMail Recipients:="john@abc.com", Subject:="Test", ReturnReceipt:=False
?

Att
Ir para o topo Ir para baixo
celliusctba




Mensagens : 23
Data de inscrição : 17/10/2013

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptySeg Ago 25, 2014 2:52 pm


sCorpo = "Envio" & vbNewLine & _
vbNewLine & _
"Planilha atualizada." & vbNewLine


With oMensagem
Set .Configuration = oConfiguração

ActiveWorkbook.SendMail ReturnReceipt:=False
Recipients = "meuemail@gmail.com"

.Subject = "Planilha Atualizada"
.TextBody = sCorpo

'.TextBody = strbody

.Send
End With
End Sub



Tentei assim mas aparece a seguinte mensagem:

Erro de compilação:
O argumento não é opcional

exatamente nesta linh:
ActiveWorkbook.SendMail ReturnReceipt:=False
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptySeg Ago 25, 2014 4:41 pm

Bom dia!!

Eu mandei apenas o comando que talvez, possa ajudar....

lembre se que você está usando a estrutura With
http://msdn.microsoft.com/en-us/library/wc500chb.aspx

dentro da estrutura With, alguns membros necessitam de ponto ( . )!!!


Att
Ir para o topo Ir para baixo
celliusctba




Mensagens : 23
Data de inscrição : 17/10/2013

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptySeg Ago 25, 2014 4:52 pm

Pois é,

sou um tanto perdido nisto,

tentei .ActiveWorkbook.SendMail

mas dá referência inválida, sempre neste ponto!


.ActiveWorkbook.SendMail
.Recipients = "meuemail@gmail.com"
.Subject = "Planilha"
.ReturnReceipt = False

.Send
End With
End Sub


Se puder me "iluminar" com essa questão, é apenas um botão, mas tá enrolado!!!

Smile

Obrigado!
Ir para o topo Ir para baixo
celliusctba




Mensagens : 23
Data de inscrição : 17/10/2013

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptyTer Ago 26, 2014 6:45 pm

Olá, testei esse outro código, também funciona, só gostaria que você se possível colocar a função pra enviar a planilha ativa...

Pode ser? Smile Obrigado!

o código do botão:

Dim oSmtp As New EASendMailObjLib.Mail

Let oSmtp.LicenseCode = "TryIt"


' Set your Gmail email address
Let oSmtp.FromAddr = "meuemail@gmail.com"

' Add recipient email address
oSmtp.AddRecipientEx "meuemail@gmail.com", 0

' Set email subject
Let oSmtp.Subject = "Teste de envio de email através da conta do Gmail."

' Set email body
Let oSmtp.BodyText = "Este é um teste de envio de email através do Gmail."

' Gmail SMTP server address
Let oSmtp.ServerAddr = "smtp.gmail.com"

' If you want to use direct SSL 465 port,
' Please add this line, otherwise TLS will be used.
Let oSmtp.ServerPort = 465

' detect SSL/TLS automatically
oSmtp.SSL_init

' Gmail user authentication should use your
' Gmail email address as the user name.
' For example: your email is "meuemail@gmail.com", then the user should be "meuemail@gmail.com"
Let oSmtp.UserName = "meuemail@gmail.com"
Let oSmtp.Password = "senhadoemail"

MsgBox "Início do envio de e-mails"

If oSmtp.SendMail() = 0 Then
MsgBox "Email foi enviado com sucesso!"
Else
MsgBox "Falha ao enviar email, erro detectado. Erro nº: " & oSmtp.GetLastErrDescription()
End If

End Sub
Ir para o topo Ir para baixo
alexandrevba

alexandrevba


Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptyTer Ago 26, 2014 11:18 pm

Boa tarde!!

Eu não tenho como testar...por tanto não sei se vai dar certo!

Qual email você usar?
Código:
Sub teste()
Dim oSmtp As New EASendMailObjLib.Mail
Dim fsoFolder As Object
Dim fsoFile As Object
   
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsoFolder = fso.GetFolder(strFOLDER_PATH)
Const strFOLDER_PATH As String = "C:\Users\AleVBA\Desktop\x" 'Coloque seu diretório

Let oSmtp.LicenseCode = "TryIt"
' Set your Gmail email address
Let oSmtp.FromAddr = "meuemail@gmail.com"
' Add recipient email address
oSmtp.AddRecipientEx "meuemail@gmail.com", 0
' Set email subject
Let oSmtp.Subject = "Teste de envio de email através da conta do Gmail."
' Set email body
Let oSmtp.BodyText = "Este é um teste de envio de email através do Gmail."
' Gmail SMTP server address
Let oSmtp.ServerAddr = "smtp.gmail.com"
' If you want to use direct SSL 465 port,
' Please add this line, otherwise TLS will be used.
Let oSmtp.ServerPort = 465
' detect SSL/TLS automatically
oSmtp.SSL_init
' Gmail user authentication should use your
' Gmail email address as the user name.
' For example: your email is "meuemail@gmail.com", then the user should be "meuemail@gmail.com"
Let oSmtp.UserName = "meuemail@gmail.com"
Let oSmtp.Password = "senhadoemail"

MsgBox "Início do envio de e-mails"

If oSmtp.SendMail() = 0 Then
        For Each fsoFile In fsoFolder.Files
            .Attachments.Add fsoFile.Path, 1
        Next
MsgBox "Email foi enviado com sucesso!"
Else
MsgBox "Falha ao enviar email, erro detectado. Erro nº: " & oSmtp.GetLastErrDescription()
End If

Set fsoFolder = Nothing
Set fsoFile = Nothing

End Sub
Att
Ir para o topo Ir para baixo
celliusctba




Mensagens : 23
Data de inscrição : 17/10/2013

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptyQua Ago 27, 2014 2:56 pm

Bom dia, então teste daí assim ocorreu!

Smile

Sub teste()
Dim oSmtp As New EASendMailObjLib.Mail
Dim fsoFolder As Object
Dim fsoFile As Object
   
Set fso = CreateObject("Scripting.FileSystemObject")
Set fsoFolder = fso.GetFolder(strFOLDER_PATH)
Const strFOLDER_PATH As String = "C:\Users\AleVBA\Desktop\x" 'Coloque seu diretório


Ele dá erro nessa linha de cima

Escreve assim:

Erro de compilação:
Declaração duplicada no escopo atual




Esse é o errinho que ele diz ter.


Sobre sua pergunta o email que uso é gmail mesmo!


Obrigado pela ajuda!

Tá enroladinho esse código
Achei que mandar simplesmente a planilha em uso não seria tão difícil mas pelo jeito é,
rs

Ir para o topo Ir para baixo
alexandrevba

alexandrevba


Mensagens : 1820
Data de inscrição : 13/07/2011
Localização : Serra - ES

Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail EmptyQua Ago 27, 2014 4:20 pm

Bom dia!!

Então remova a declaração duplicada, se houver!!


Att
Ir para o topo Ir para baixo
Conteúdo patrocinado





Alteração do código de envio via e-mail Empty
MensagemAssunto: Re: Alteração do código de envio via e-mail   Alteração do código de envio via e-mail Empty

Ir para o topo Ir para baixo
 
Alteração do código de envio via e-mail
Ir para o topo 
Página 1 de 1
 Tópicos semelhantes
-
» Envio de e-mail conteúdo da Celula
» envio de e-mail utilizando recursos do VBA
» Planilha de pendências com envio de e-mail
» Interromper o envio de e-mail após um determinado valor na celula.
» Realçar alteração de valor referência

Permissões neste sub-fórumNão podes responder a tópicos
Fórum Excel Bácico, Avançado e Vba :: Avançado/VBA :: Excel Avançado/VBA-
Ir para: