Macro envío mail formato pdf

Hola, tengo en excel unas macros hechas por un ex compañero de trabajo, la cuales convertían una selección de celdas de una hoja excel a formato pdf, creando un nuevo archivo pdf con el nombre de la hoja excel, imprimiendolo o enviándolo por fax dependiendo de la macro, pues bien yo quería una macro ídem a la que tengo pero que me envíe el pdf como adjunto en un correo electrónico. Os envío las macro que tengo para ver si me podéis ayudar.
Para vuestra información no tengo ni idea de esto, así que os agradecería en la mediada de lo posible que me lo pusierais lo más fácil posible, gracias.
Todas las hojas y sus nombres las genera mediante otra macro, tienen el mismo formato pero distinto nombre.
Necesito que los pdf mantengan la misma apariencia que la selección de celdas de exel igual que ocurre ahora
Sub imprimir()
'
' imprimir Macro
'
'
ExecuteExcel4Macro _
"PRINT(1,,,1,,FALSE,,,,,,2,""RICOH Aficio MP C2500 RPCS en Ne00:"",,TRUE,,FALSE)"
Range("C2:D5").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("B12").Select
End Sub
Sub fax()
'
' fax Macro
'
'
ExecuteExcel4Macro _
"PRINT(1,,,1,,FALSE,,,,,,2,""LAN-Fax M8 en Ne02:"",,,,FALSE)"
Range("C2:D5").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("B12").Select
End Sub

1 Respuesta

Respuesta
-1
Si ya tienes una macro que lo hace, ¿para qué volver a solicitar una?. Sería bueno que estudiaras el código de la actual y la modifiques a tus necesidades.
Hola, como te comenté en la anterior pregunta no tengo ni idea de hacer o modificar una macro y las que tengo me lo imprimen o me lo envían por fax y no por correo electrónico como yo necesito, espero tu solución gracias.
Aquí tienes un ejemplo para que lo adaptes.
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Sub SendEMail()
Dim Email As String, Subj As String
Dim Msg As String, URL As String
Dim r As Integer, x As Double
For r = 2 To 4 'data in rows 2-4
' Get the email address
Email = Cells(r, 2)
' Message subject
Subj = "Your Annual Bonus"
' Compose the message
Msg = ""
Msg = Msg & "Dear " & Cells(r, 1) & "," & vbCrLf & vbCrLf
Msg = Msg & "I am pleased to inform you that your annual bonus is "
Msg = Msg & Cells(r, 3).Text & "." & vbCrLf & vbCrLf
Msg = Msg & "William Rose" & vbCrLf
Msg = Msg & "President"
' Replace spaces with %20 (hex)
Subj = Application.WorksheetFunction.Substitute(Subj, " ", "%20")
Msg = Application.WorksheetFunction.Substitute(Msg, " ", "%20")
' Replace carriage returns with %0D%0A (hex)
Msg = Application.WorksheetFunction.Substitute(Msg, vbCrLf, "%0D%0A")
' Create the URL
URL = "mailto:" & Email & "?subject=" & Subj & "&body=" & Msg
' Execute the URL (start the email client)
ShellExecute 0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus
' Wait two seconds before sending keystrokes
Application.Wait (Now + TimeValue("0:00:02"))
Application.SendKeys "%s"
Next r
End Sub
Hola de nuevo, la macro que me enviaste no ajdunta automáticamente en el correo el archivo de pdf, tal y como te comenté en la primera pregunta, también desconozco donde poner la dirección de correo electrónico ni el asunto en la macro, te envío otras macro que tengo para que veas como genera el pdf y lo manda a una carpeta determinada de un servidor "z" y a unas carpetas determinadas, pues yo quiero que haga lo mismo pero a una o varias direcciones de correo determinadas, espero tu respuesta.
Tengo muy poca idea de exel y te agradecería que en la medida de lo posible me simplifiques la respuesta, lo que para ti es evidente para alguien que no sabe puede ser un gran problema, gracias .
Sub oscar()
'
' oscar Macro
'
Dim Impdf As String, ImpdfC As String
ImpdfC = Cells(2, 19)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\ODIAZ\" & ImpdfC, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
'
End Sub
Sub Garcia()
'
' GARCIA Macro
'
Dim Impdf As String, ImpdfC As String
ImpdfC = Cells(2, 19)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\(xxxxxx)\" & ImpdfC, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
'
End Sub
Sub DARES()
'
' DARES Macro
'
Dim Impdf As String, ImpdfC As String
ImpdfC = Cells(2, 19)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\DARES\" & ImpdfC, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
'
End Sub
Sub PAVIMENTOS()
'
' PAVIMENTOS Macro
'
Dim Impdf As String, ImpdfC As String
ImpdfC = Cells(2, 19)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\PAVIMENTOS\" & ImpdfC, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
'
End Sub
Sub EDUARDO()
'
' EDUARDO Macro
'
Dim Impdf As String, ImpdfC As String
ImpdfC = Cells(2, 19)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\EDUARDO\" & ImpdfC, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
'
End Sub
Sub TALLER()
'
' TALLER Macro
'
Dim Impdf As String, ImpdfC As String
ImpdfC = Cells(2, 19)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\SSEOANE\" & ImpdfC, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
'
End Sub
Sub almacen()
'
' almacen Macro
'
Dim Impdf As String, ImpdfC As String
ImpdfC = Cells(2, 19)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="Z:\pedidosalmacen\" & ImpdfC, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
'
End Sub
Si no sabes algo sobre VBA no te puedo ayudar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas