Send mail from Excel
-
- StarLounger
- Posts: 92
- Joined: 10 Oct 2022, 02:52
Send mail from Excel
Dear All,
I am using two macros to send Emails using an attachment with Gmail.
separately using, 01 for setting a password (PDF Attachment) 02. for sending emails. they work correctly while used separately. but I tried to combine them as one macro & while running it is displaying runtime error ** -2147024894 The System can't find file Specified**
My combined Code: Attached
the first part of the code is used to set a password for PDF File & second part is used to send mail with attachments. my file path is correct. Finally I tried removing the below code,
Attach_01 = "C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips" & em.Cells(j, "B").Value & ".pdf"
then was run the code & ware send maile without attachment.
please help me to solve this issue.
Priyantha
I am using two macros to send Emails using an attachment with Gmail.
separately using, 01 for setting a password (PDF Attachment) 02. for sending emails. they work correctly while used separately. but I tried to combine them as one macro & while running it is displaying runtime error ** -2147024894 The System can't find file Specified**
My combined Code: Attached
the first part of the code is used to set a password for PDF File & second part is used to send mail with attachments. my file path is correct. Finally I tried removing the below code,
Attach_01 = "C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips" & em.Cells(j, "B").Value & ".pdf"
then was run the code & ware send maile without attachment.
please help me to solve this issue.
Priyantha
You do not have the required permissions to view the files attached to this post.
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
Re: Open Database From Excel - Only Local File Works - RESOLVED!
It would have been better to edit the subject and remove RESOLVED...
(This was before the posts were moved)
(This was before the posts were moved)
Best wishes,
Hans
Hans
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
Re: Open Database From Excel - Only Local File Works - RESOLVED!
The line
should be moved to just above the line
so that it is inside the loop.
Does that solve the problem?
Code: Select all
Kill ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" & em.Cells(j, 2).Value & "*N.pdf")
Code: Select all
Next j
Does that solve the problem?
Best wishes,
Hans
Hans
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
Re: Send mail from Excel
I have moved the above three posts to a new thread, since they have nothing to do with the thread they were posted in.
Best wishes,
Hans
Hans
-
- StarLounger
- Posts: 92
- Joined: 10 Oct 2022, 02:52
Re: Send mail from Excel
Dear Hans,
I moved to just above the line Below the code but same error.
Kill ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" & em.Cells(j, 2).Value & "*N.pdf")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''Status'''''''''
If em.Cells(j, 7).Value = "" Then
em.Cells(j, 9).Value = " No Sent"
ElseIf em.Cells(j, 7).Value = 0 Then
em.Cells(j, 9).Value = " No Sent"
ElseIf AttachExists = "" Then
em.Cells(j, 9).Value = " No Sent"
Else
em.Cells(j, 9).Value = "Sent"
End If
Kill ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" & em.Cells(j, 2).Value & "*N.pdf") ,,,, Now
Application.Wait (Now + TimeValue("0:00:01"))
Next j
With Application
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
.DisplayStatusBar = False
End With
''Kill ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" & em.Cells(j, 2).Value & "*N.pdf") ----- Before
MsgBox "All email has been sent", vbInformation
NextID:
Exit_Err:
'Release object memory
Set NewMail = Nothing
Set mailConfig = Nothing
End
Err:
Select Case Err.Number
Case -2147220973 'Could be because of Internet Connection
MsgBox "Check your internet connection." & vbNewLine & Err.Number & ": " & Err.Description
Case -2147220975 'Incorrect credentials User ID or password
MsgBox "Check your login credentials and try again." & vbNewLine & Err.Number & ": " & Err.Description
Case Else 'Report other errors
MsgBox "Error encountered while sending email." & vbNewLine & Err.Number & ": " & Err.Description
End Select
Resume Exit_Err
End Sub
I moved to just above the line Below the code but same error.
Kill ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" & em.Cells(j, 2).Value & "*N.pdf")
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''Status'''''''''
If em.Cells(j, 7).Value = "" Then
em.Cells(j, 9).Value = " No Sent"
ElseIf em.Cells(j, 7).Value = 0 Then
em.Cells(j, 9).Value = " No Sent"
ElseIf AttachExists = "" Then
em.Cells(j, 9).Value = " No Sent"
Else
em.Cells(j, 9).Value = "Sent"
End If
Kill ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" & em.Cells(j, 2).Value & "*N.pdf") ,,,, Now
Application.Wait (Now + TimeValue("0:00:01"))
Next j
With Application
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
.DisplayStatusBar = False
End With
''Kill ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" & em.Cells(j, 2).Value & "*N.pdf") ----- Before
MsgBox "All email has been sent", vbInformation
NextID:
Exit_Err:
'Release object memory
Set NewMail = Nothing
Set mailConfig = Nothing
End
Err:
Select Case Err.Number
Case -2147220973 'Could be because of Internet Connection
MsgBox "Check your internet connection." & vbNewLine & Err.Number & ": " & Err.Description
Case -2147220975 'Incorrect credentials User ID or password
MsgBox "Check your login credentials and try again." & vbNewLine & Err.Number & ": " & Err.Description
Case Else 'Report other errors
MsgBox "Error encountered while sending email." & vbNewLine & Err.Number & ": " & Err.Description
End Select
Resume Exit_Err
End Sub
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
Re: Send mail from Excel
1) Move the first instance of that line to just above
Next j
as I wrote in my first reply.
2) Delete the second instance of that line.
Next j
as I wrote in my first reply.
2) Delete the second instance of that line.
Best wishes,
Hans
Hans
-
- StarLounger
- Posts: 92
- Joined: 10 Oct 2022, 02:52
Re: Send mail from Excel
Dear Hans,
I Tried as you said. but the same error.
Modified code attached here with.
thanks
Priyantha
I Tried as you said. but the same error.
Modified code attached here with.
thanks
Priyantha
You do not have the required permissions to view the files attached to this post.
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
Re: Send mail from Excel
Does the error occur on the line highlighted in yellow in your screenshot? That is different than the line you reported earlier.
It would indicate that the file you're trying to attach does not exist.
It would indicate that the file you're trying to attach does not exist.
Best wishes,
Hans
Hans
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
Re: Send mail from Excel
Does this work?
Code: Select all
Sub SendEmailUsingGmail_Welser()
Const newPath = "C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\"
Dim NewMail As Object, mailConfig As Object, fields As Variant, msConfigURL As String, last_row As Long
Dim j As Long, Attach_01 As String, AttachExists_01 As String
Dim em As Worksheet
Dim Attach As String
Dim AttachExists As String
Dim filename_01 As String
Dim retval As String
Dim FileOrigine As String, FileDestinazione As String
Dim MyPwd As String, strParam As String
On Error GoTo Err:
With Application
.Calculation = xlCalculationManual
.DisplayAlerts = True
.DisplayStatusBar = True
End With
Set em = ThisWorkbook.Sheets("Email")
last_row = em.Range("B" & em.Rows.Count).End(xlUp).Row
For j = 4 To last_row
filename_01 = em.Cells(j, 2).Value
Attach = newPath & filename_01 & "*N.pdf"
AttachExists = Dir(Attach)
If AttachExists = "" Then
em.Cells(j, 9).Value = " No Attachment"
GoTo NextID
ElseIf em.Cells(j, 7).Value = "" Then
em.Cells(j, 9).Value = " No Email Address"
GoTo NextID
ElseIf em.Cells(j, 7).Value = 0 Then
em.Cells(j, 9).Value = " No Email Address"
GoTo NextID
End If
''''' Set Password to PDF Files '''''''
FileOrigine = newPath & filename_01 & "N.pdf"
MyPwd = em.Cells(j, "H").Value
FileDestinazione = newPath & filename_01 & ".pdf"
FileOrigine = """" & FileOrigine & """"
FileDestinazione = """" & FileDestinazione & """"
MyPwd = """" & MyPwd & """"
strParam = FileOrigine _
& " Output " & FileDestinazione _
& " User_pw " & MyPwd _
& " Allow AllFeatures"
retval = Shell("C:\Program Files (x86)\PDFtk\bin\pdftk.exe " & strParam, 0) '<<=== Percorso da adattare N.B. lo spazio dopo pdftk.exe
Attach_01 = newPath & filename_01 & ".pdf"
AttachExists_01 = Dir(Attach_01)
If AttachExists_01 = "" Then
em.Cells(j, 9).Value = " Could Not Create Protected PDF"
GoTo NextID
End If
Set NewMail = CreateObject("CDO.Message")
Set mailConfig = CreateObject("CDO.Configuration")
mailConfig.Load -1
Set fields = mailConfig.fields
'Set Email Properties
With NewMail
.From = "salary2.lvpp@gmail.com"
.To = em.Cells(j, 7).Value
.CC = ""
.BCC = ""
.Subject = "Salary Slip For the Month of " & em.Range("D1").Value
.TextBody = "Dear " & em.Cells(j, 3).Value & "," & vbNewLine & vbNewLine & _
"Please find your attached salary slip for the month of " & _
em.Range("D1").Value & "." & vbNewLine & vbNewLine & _
"To open it, you are supposed to type your birth year and month without spaces as the password." & _
vbNewLine & "(Ex: if your year of birth is 1985 and month is june, your password would be 198506)" & _
vbNewLine & vbNewLine & "For any assistance, please contact 070-6702525 - Payroll Unit" & _
vbNewLine & vbNewLine & "Best Regards," & vbNewLine & vbNewLine & "I.W. Karunarathna," & _
vbNewLine & "Accountant (Payment & Payroll)," & vbNewLine & "Lakvijaya Power Station."
.AddAttachment Attach_01
End With
msConfigURL = "http://schemas.microsoft.com/cdo/configuration"
With fields
.Item(msConfigURL & "/smtpusessl") = True 'Enable SSL Authentication
.Item(msConfigURL & "/smtpauthenticate") = 1 'SMTP authentication Enabled
.Item(msConfigURL & "/smtpserver") = "smtp.gmail.com" 'Set the SMTP server details
.Item(msConfigURL & "/smtpserverport") = 465 'Set the SMTP port Details
.Item(msConfigURL & "/sendusing") = 2 'Send using default setting
.Item(msConfigURL & "/sendusername") = "salary.lvpp@gmail.com" 'Your gmail address
.Item(msConfigURL & "/sendpassword") = "zolb xrkc cwko ones" 'Your password or App Password
.Update 'Update the configuration fields
End With
NewMail.Configuration = mailConfig
NewMail.Send
'''' Status Bar'''''''
Application.StatusBar = "Progress: " & "PF No. : " & filename_01 & " " & _
j - 3 & " of " & last_row - 3 & " : " & Format((j - 3) / (last_row - 3), "0%")
Application.Wait Now + TimeValue("0:00:01")
Kill newPath & em.Cells(j, 2).Value & "*N.pdf"
em.Cells(j, 9).Value = "Sent"
NextID:
Next j
MsgBox "All email has been sent", vbInformation
Exit_Err:
'Release object memory
Set NewMail = Nothing
Set mailConfig = Nothing
With Application
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
.DisplayStatusBar = False
End With
Exit Sub
Err:
Select Case Err.Number
Case -2147220973 'Could be because of Internet Connection
MsgBox "Check your internet connection." & vbNewLine & Err.Number & ": " & Err.Description
Case -2147220975 'Incorrect credentials User ID or password
MsgBox "Check your login credentials and try again." & vbNewLine & Err.Number & ": " & Err.Description
Case Else 'Report other errors
MsgBox "Error encountered while sending email." & vbNewLine & Err.Number & ": " & Err.Description
End Select
Resume Exit_Err
End Sub
Best wishes,
Hans
Hans
-
- StarLounger
- Posts: 92
- Joined: 10 Oct 2022, 02:52
Re: Send mail from Excel
Dear Hans,
Thanks, Your Code & try it. But I think, it is running up to below line only,
em.Cells(j, 9).Value = " Could Not Create Protected PDF"
All *.pdf files in "C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" have been protected with a password (without *.N.pdf files in that folder).
Thanks,
Priyantha
Thanks, Your Code & try it. But I think, it is running up to below line only,
em.Cells(j, 9).Value = " Could Not Create Protected PDF"
All *.pdf files in "C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" have been protected with a password (without *.N.pdf files in that folder).
Thanks,
Priyantha
You do not have the required permissions to view the files attached to this post.
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
Re: Send mail from Excel
Apparently the line
fails, but I cannot help you with that. I don't know anything about pdftk.exe.
Code: Select all
retval = Shell("C:\Program Files (x86)\PDFtk\bin\pdftk.exe " & strParam, 0)
Best wishes,
Hans
Hans
-
- StarLounger
- Posts: 92
- Joined: 10 Oct 2022, 02:52
Re: Send mail from Excel
Dear Hans,
Thanks for your Attention,
It's an app I found to protect pdf files with passwords. (Eg. Before Protect PW: 37224N.pdf, After protecting a password as 37224.pdf). All files are protected with a password, so I think it works correctly & protected files (eg. 37224.pdf) are in the folder ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\").
Something happened, When running the macro the first time, not sent any massage & in the folder ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\") appeared both types of files, with the protected files (Eg. 37224.pdf), and the initial case of files (eg. 37224N.pdf) appeared in the "C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" folder.
When running the macro the second time, all messages were sent correctly & Only protected files are found in the folder. what is happening?
Link For Protector With PW:
https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Priyantha
Thanks for your Attention,
It's an app I found to protect pdf files with passwords. (Eg. Before Protect PW: 37224N.pdf, After protecting a password as 37224.pdf). All files are protected with a password, so I think it works correctly & protected files (eg. 37224.pdf) are in the folder ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\").
Something happened, When running the macro the first time, not sent any massage & in the folder ("C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\") appeared both types of files, with the protected files (Eg. 37224.pdf), and the initial case of files (eg. 37224N.pdf) appeared in the "C:\Users\User\Desktop\Maling Payadvice\With Gmail 01\PaySlips\" folder.
When running the macro the second time, all messages were sent correctly & Only protected files are found in the folder. what is happening?
Link For Protector With PW:
https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/
Priyantha
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands
-
- StarLounger
- Posts: 92
- Joined: 10 Oct 2022, 02:52
Re: Send mail from Excel
Dear Hans,
OK Thanks
OK Thanks
-
- StarLounger
- Posts: 92
- Joined: 10 Oct 2022, 02:52
Re: Send mail from Excel
Dear Hans,
I edit your code as below, then it is working, thanks your help again.
retval = Shell("C:\Program Files (x86)\PDFtk\bin\pdftk.exe " & strParam, 0) '<<=== Percorso da adattare N.B. lo spazio dopo pdftk.exe
Application.Wait Now + TimeValue("0:00:02")
Attach_01 = newPath & filename_01 & ".pdf"
AttachExists_01 = Dir(Attach_01)
If AttachExists_01 = "" Then
em.Cells(j, 9).Value = " Could Not Create Protected
PDF"
GoTo NextID
End If
Priyantha
I edit your code as below, then it is working, thanks your help again.
retval = Shell("C:\Program Files (x86)\PDFtk\bin\pdftk.exe " & strParam, 0) '<<=== Percorso da adattare N.B. lo spazio dopo pdftk.exe
Application.Wait Now + TimeValue("0:00:02")
Attach_01 = newPath & filename_01 & ".pdf"
AttachExists_01 = Dir(Attach_01)
If AttachExists_01 = "" Then
em.Cells(j, 9).Value = " Could Not Create Protected
PDF"
GoTo NextID
End If
Priyantha
-
- Administrator
- Posts: 78531
- Joined: 16 Jan 2010, 00:14
- Status: Microsoft MVP
- Location: Wageningen, The Netherlands