Notifications
Clear all

Erro em macro que envia emails

13 Posts
2 Usuários
0 Reactions
2,022 Visualizações
(@romulolima)
Posts: 0
New Member
Topic starter
 

Olá!
Tenho uma planilha de apresentação de produtos que envio para varias pessoas da empresa. A planilha contém idéias de novos produtos para o catálogo da empresa, e as pessoas que a recebem devem dizer se gostaram ou não dos produtos. Criei uma planilha com um botão enviar para que quando as pessoas clicarem neste botão a planilha seja enviada de volta para mim. Consegui fazer isso de forma simples utilizando o código abaixo:
Sub EnviarEmail()
ActiveWorkbook.SendMail “[email protected]”, “Feedback Produtos”
End Sub
Ela funciona perfeitamente nos computadores com Windows XP, mas não roda nos computadores com Windows 7. Todos os emails da empresa funcionam com o IBM Lotus Notes
Como eu poderia resolver este problema?
Muito obrigado

 
Postado : 16/03/2015 12:24 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Uma questão complicada de responder, pois ha vários fatores que podem (como FM20.DLL referências Microsoft Forms 2.0 ), impactar nisso.

Quando você diz que funciona com XP, é no mesmo ambiente de REDE?

Esse é todo seu código fonte?

Att

 
Postado : 16/03/2015 1:00 pm
(@romulolima)
Posts: 0
New Member
Topic starter
 

Olá Alexandre!

Sim, todos os PCs estão no mesmo ambiente de rede. Não entendo quase nada de programação, sou apenas MUITO curioso e acabo conseguindo fazer umas coisas mais elabiradas no excel pesquisando na internet, por isso não faço ideia doque seja (como FM20.DLL referências Microsoft Forms 2.0 ). Encontrei este código, fiz um teste e ele funcionou perfeitamente para oque eu queria (e sim, este é todo o código), porém tive problemas quando tentava rodar em outras maquinas. Encontrei um outro código que faz a mesma coisa porém pelo que consegui entender ele cria um arquivo apenas para envia-lo e depois o deleta, mas o resultado é exatamente o mesmo. Ai vai este outro codigo que talvez seja mais fácil de se "mexer":

Sub EnviarEmailPlanilhaEspecifica()
02
Dim NovoArquivoXLS As Workbook
03
Dim sPlanAEnviar As String
04
Dim sExcluirAnexoTemporario As String
05

06
'Define a planilha que será enviada por email. Ex.: Plan1, Balancete, Lista De Nomes, etc
07
sPlanAEnviar = "Plan2"
08

09
'Cria um novo arquivo excel
10
Set NovoArquivoXLS = Application.Workbooks.Add
11

12
'Copia a planilha para o novo arquivo criado
13
ThisWorkbook.Sheets(sPlanAEnviar).Copy Before:=NovoArquivoXLS.Sheets(1)
14

15
'Salva o arquivo
16
NovoArquivoXLS.SaveAs ThisWorkbook.Path & "" & sPlanAEnviar & ".xls"
17
sExcluirAnexoTemporario = NovoArquivoXLS.FullName
18

19
'Envia o email
20
NovoArquivoXLS.SendMail "email_do_destinatá[email protected]", "Título do Email"
21

22
'Fecha o arquivo novo
23
NovoArquivoXLS.Close
24

25
'Exclui o arquivo criado apenas para ser enviado.
26
Kill sExcluirAnexoTemporario
27

28
End Sub

Muito obrigado pela atenção e pelo tempo dispensado em me ajudar, gostaria muito de fazer a apresentação dos produtos com essa planilha funcionando.

 
Postado : 17/03/2015 7:47 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Bom sendo que você está usando o Lotus Notes, e sendo que eu tinha feito um teste, estou usando uma forma talvez, mais eficaz, mas tudo que precisa está aqui:
http://www.rondebruin.nl/win/section1.htm

Como enviar email (com anexo, no corpo do email), do tipo (CDO, SMTP server etc)

Tente adaptar!!

Att

 
Postado : 17/03/2015 8:07 am
(@romulolima)
Posts: 0
New Member
Topic starter
 

Boa tarde Alexandre!

Veja em negrito aonde está dando erro. Não sei oque pode ser isso, mas acho que esse código é o que deve funcionar

Option Explicit

Const EMBED_ATTACHMENT As Long = 1454

Const stPath As String = "c:Attachments"

Const stSubject As String = "Weekly report"

Const vaMsg As Variant = "The weekly report as per agreement." & vbCrLf & _
"Kind regards," & vbCrLf & _
"Dennis"

Const vaCopyTo As Variant = "[email protected]"

Sub Send_Active_Sheet()

Dim stFileName As String
Dim vaRecipients As Variant

Dim noSession As Object
Dim noDatabase As Object
Dim noDocument As Object
Dim noEmbedObject As Object
Dim noAttachment As Object
Dim stAttachment As String

'Copy the active sheet to a new temporarily workbook.
With ActiveSheet
.Copy
stFileName = .Range("A1").value
End With

stAttachment = stPath & "" & stFileName & ".xls"

'Save and close the temporarily workbook.
With ActiveWorkbook
.SaveAs stAttachment
.Close
End With

'Create the list of recipients.
vaRecipients = VBA.Array("[email protected]")

'Instantiate the Lotus Notes COM's Objects.
Set noSession = CreateObject("Notes.NotesSession")
Set noDatabase = noSession.GETDATABASE("", "")

'If Lotus Notes is not open then open the mail-part of it.
If noDatabase.IsOpen = False Then noDatabase.OPENMAIL

'Create the e-mail and the attachment.
Set noDocument = noDatabase.CreateDocument
Set noAttachment = noDocument.CreateRichTextItem("stAttachment")
Set noEmbedObject = noAttachment.EmbedObject(EMBED_ATTACHMENT, "", stAttachment)

'Add values to the created e-mail main properties.
With noDocument
.Form = "Memo"
.SendTo = vaRecipients
.CopyTo = vaCopyTo
.Subject = stSubject
.Body = vaMsg
.SaveMessageOnSend = True
.PostedDate = Now()
.Send 0, vaRecipients
End With

'Delete the temporarily workbook.
Kill stAttachment

'Release objects from memory.
Set noEmbedObject = Nothing
Set noAttachment = Nothing
Set noDocument = Nothing
Set noDatabase = Nothing
Set noSession = Nothing

MsgBox "The e-mail has successfully been created and distributed", vbInformation

End Sub

 
Postado : 17/03/2015 11:11 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu testei o código não tive problema!!!

Verifique se o arquivo está salvo no local correto.

Att

 
Postado : 17/03/2015 1:03 pm
(@romulolima)
Posts: 0
New Member
Topic starter
 

Bom dia Alexandre!

Recebi o seu email de teste. Como já te disse, sou quase um analfabeto quando tento ler os códigos. Você consegue me indicar aonde consigo verificar o local aonde o arquivo deve ser salvo no código?

Obrigado mais uma vez!

 
Postado : 18/03/2015 8:12 am
(@romulolima)
Posts: 0
New Member
Topic starter
 

Aparece uma mensagem dizendo que o erro é no comando .SaveAs

 
Postado : 18/03/2015 9:58 am
(@romulolima)
Posts: 0
New Member
Topic starter
 

Olá Alexandre!

Acho que sei oque está errado. O código cria o arquivo no disco c: porém a criação de psatas nesse disco não é permitida aqui na empresa. Eu tentei mudar o lugar de criação da pasta para o disco H (ele é compartilhado na rede) mas não deu certo.

A alteração que fiz foi nessa linha

 
Postado : 18/03/2015 12:20 pm
(@romulolima)
Posts: 0
New Member
Topic starter
 

Olá Alexandre!

Acho que sei oque está errado. O código cria o arquivo no disco c: porém a criação de psatas nesse disco não é permitida aqui na empresa. Eu tentei mudar o lugar de criação da pasta para o disco H (ele é compartilhado na rede) mas não deu certo.

A alteração que fiz foi na terceira linha do código original

Const stPath As String = "c:Attachment"
por
Const stPath As String = "h:Attachment"

 
Postado : 18/03/2015 12:39 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Tá, essa parte (permissão), você deverá usar um diretório ou caminho que tenha permissão para manipular o arquivo em questão, agora, no código nesta parte:...
Troque essa linha....

Const stPath As String = "c:Attachments"

Pela linha abaixo....

Const stPath As String = "H:UsersRomuloDownloads"

Deverá ser o caminho o caminho onde se encontra seu arquivo, certifique se de de o caminho (além das permissões), esteja correto!!!

Att

 
Postado : 19/03/2015 6:08 am
(@romulolima)
Posts: 0
New Member
Topic starter
 

Bom dia Alexandre!

Enfim funcionou. Muito obrigado de verdade por sua ajuda e paciência, e principalmente por compartilhar seus conhecimentos.

Grande abraço!

 
Postado : 19/03/2015 7:49 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Eu fico feliz por ajudar, obrigado pelo retorno!!!!!!!!!! :D

Att

 
Postado : 19/03/2015 7:53 am