Znalazłem w necie kod na automatyczne wysyłanie pliku excela w załączniku przez outlooka. Wszystko pięknie działa ale chciałbym żeby nazwa tego pliku pojawiała się w temacie wiadomości. Mam też makro do przeróbki excela na pdf i wysłąnie go mailem i tam nazwę wczytuje mi do tematu ale nie potrafię tego przenieś do pierwszego przypadku. Może ktoś podpowiedzieć co trzeba dopisać do kodu żeby tą nazwę wczytało?
Sub SendWorkSheet() ' Dim xFile As String Dim xFormat As Long Dim Wb As Workbook Dim Wb2 As Workbook Dim FilePath As String Dim FileName As String Dim OutlookApp As Object Dim OutlookMail As Object On Error Resume Next Application.ScreenUpdating = False Set Wb = Application.ActiveWorkbook ActiveSheet.Copy Set Wb2 = Application.ActiveWorkbook Select Case Wb.FileFormat Case xlOpenXMLWorkbook: xFile = ".xlsx" xFormat = xlOpenXMLWorkbook Case xlOpenXMLWorkbookMacroEnabled: If Wb2.HasVBProject Then xFile = ".xlsm" xFormat = xlOpenXMLWorkbookMacroEnabled Else xFile = ".xlsx" xFormat = xlOpenXMLWorkbook End If Case Excel8: xFile = ".xls" xFormat = Excel8 Case xlExcel12: xFile = ".xlsb" xFormat = xlExcel12 End Select FilePath = Environ$("temp") & "\" FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss") Set OutlookApp = CreateObject("Outlook.Application") Set OutlookMail = OutlookApp.CreateItem(0) Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat With OutlookMail .To = "biuro@xxx.pl" .CC = "" .BCC = "" .Subject = "" .Body = "" .Attachments.Add Wb2.FullName .Display End With Wb2.Close Kill FilePath & FileName & xFile Set OutlookMail = Nothing Set OutlookApp = Nothing Application.ScreenUpdating = True End Sub #vba
@rrobot: Nazwy plików mam różne. To ma być nazwa otwartego pliku w którym pracuje. Robię w nim ofertę i wciskam wyślij kopie do biura. Wysyła ale ma pusty temat.
Ten od wysyłania PDFa który podpisuje temat nazwą pliku.
Sub SaveAsPDFandSend() Dim xSht As Worksheet Dim xFileDlg As FileDialog Dim xFolder As String Dim xYesorNo As Integer Dim xOutlookObj As Object Dim xEmailObj As Object Dim xUsedRng As Range Dim xPath As String Set xSht = ActiveSheet xPath = "E:\Oferty\2022" 'here "workshet to pdf" is the destination folder to save the pdf files xFolder = xPath + "\" + ThisWorkbook.Name
Znalazłem w necie kod na automatyczne wysyłanie pliku excela w załączniku przez outlooka. Wszystko pięknie działa ale chciałbym żeby nazwa tego pliku pojawiała się w temacie wiadomości.
Mam też makro do przeróbki excela na pdf i wysłąnie go mailem i tam nazwę wczytuje mi do tematu ale nie potrafię tego przenieś do pierwszego przypadku.
Może ktoś podpowiedzieć co trzeba dopisać do kodu żeby tą nazwę wczytało?
Sub SendWorkSheet()
'
Dim xFile As String
Dim xFormat As Long
Dim Wb As Workbook
Dim Wb2 As Workbook
Dim FilePath As String
Dim FileName As String
Dim OutlookApp As Object
Dim OutlookMail As Object
On Error Resume Next
Application.ScreenUpdating = False
Set Wb = Application.ActiveWorkbook
ActiveSheet.Copy
Set Wb2 = Application.ActiveWorkbook
Select Case Wb.FileFormat
Case xlOpenXMLWorkbook:
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
Case xlOpenXMLWorkbookMacroEnabled:
If Wb2.HasVBProject Then
xFile = ".xlsm"
xFormat = xlOpenXMLWorkbookMacroEnabled
Else
xFile = ".xlsx"
xFormat = xlOpenXMLWorkbook
End If
Case Excel8:
xFile = ".xls"
xFormat = Excel8
Case xlExcel12:
xFile = ".xlsb"
xFormat = xlExcel12
End Select
FilePath = Environ$("temp") & "\"
FileName = Wb.Name & Format(Now, "dd-mmm-yy h-mm-ss")
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
Wb2.SaveAs FilePath & FileName & xFile, FileFormat:=xFormat
With OutlookMail
.To = "biuro@xxx.pl"
.CC = ""
.BCC = ""
.Subject = ""
.Body = ""
.Attachments.Add Wb2.FullName
.Display
End With
Wb2.Close
Kill FilePath & FileName & xFile
Set OutlookMail = Nothing
Set OutlookApp = Nothing
Application.ScreenUpdating = True
End Sub
#vba
Ten od wysyłania PDFa który podpisuje temat nazwą pliku.
Sub SaveAsPDFandSend()
Dim xSht As Worksheet
Dim xFileDlg As FileDialog
Dim xFolder As String
Dim xYesorNo As Integer
Dim xOutlookObj As Object
Dim xEmailObj As Object
Dim xUsedRng As Range
Dim xPath As String
Set xSht = ActiveSheet
xPath = "E:\Oferty\2022" 'here "workshet to pdf" is the destination folder to save the pdf files
xFolder = xPath + "\" + ThisWorkbook.Name
.Subject = FileName i se testnij
@rrobot: Takie to oczywiste i proste a jak człowiek głupi to i z tym sobie nie poradzi.
Dzięki wielkie. Działa!