XL 2016 impresssion .msg en pdf

pierre.g

XLDnaute Nouveau
Bonjour,
j'ai des .msg (sauvegardes outlook) que je souhaiterai transformer en pdf.
j'aimerai selectionne le .msg et que celui-ci s'enregistre en .pdf au même nom sans intervention autre que la selection du fichier.

j'ai tenté plusieurs solutions:
- passer de msg a mht puis pdf (je n'ai pas réussi).
- appeler et ouvrir le .msg puis appeler l'imprimante avec printout (non réussi sur l'appel de l'impression)
- appeler un power shell qui appel l'impression (OK, mais je n'arrive pas a le faire en processus d'arriere plan, et le l'anti-virus au boulot n'aime pas ca)

Quelq'un sait il faire ca ?
 

fanch55

XLDnaute Barbatruc
Bonjour à tous, ( et nonobstant le cross posting qui n'est pas adéquat en dehors d'une info !!! )
Une solution par macro
VB:
Public Sub ExportMSGasPdf()
    With Application.FileDialog(msoFileDialogFilePicker)
        .Filters.Clear
        .Filters.Add "To do", "*.msg"
        .InitialFileName = ThisWorkbook.Path & "\"
        .AllowMultiSelect = True
        .Title = "Sélectionner les Msg à exporter"
        If .Show Then
            For Each file In .SelectedItems
                Do_Export file
            Next
        End If
    End With
End Sub
Sub Do_Export(Msg)
    Dim ObjOutlook  As Object
    Const wdExportFormatPDF = 17
    
    On Error Resume Next
        Set ObjOutlook = CreateObject("Outlook.Application")
        If ObjOutlook Is Nothing Then Set ObjOutlook = GetObject(, "Outlook.Application")
    On Error GoTo 0
 
    With ObjOutlook.GetNamespace("MAPI").OpenSharedItem(Msg)
        .Display
        Msg = Left(Msg, Len(Msg) - Len("msg")) & "pdf"
        .GetInspector.WordEditor.ExportAsFixedFormat Msg, wdExportFormatPDF ', True
        .Close olDiscard
    End With

    On Error Resume Next
    Set ObjOutlook = Nothing

End Sub
 

Deadpool_CC

XLDnaute Accro
Bonjour,
pour ma part, j'aurais plutôt fait la demande dans le forum "autres applications" et demandé un code VBA Outlook pour automatiser ma sauvegarde d'un message en positionnant et le PDF et le .msg dans un répertoire.
comme cela pas besoin d'avoir à le gérer ensuite dans Excel :)

mais cela ne te donne pas de solution ... ok ... j'arrete.
 

pierre.g

XLDnaute Nouveau
Bonjour Pierre.g

Attention, le cross posting n'est pas bien perçu en général 🤔
pardon, le cross posting ? mis a part si je n'ai pas saisie le concept, je n'ai effectué qu'un seul post sur ce sujet, et seulement sur ce forum. 🤔
Merci de m'éclairer afin que cela ne se reproduise pas.

cela fait maintenant une bonne semaine que j'arpente le web et tente diverses solutions.
Bonjour,
pour ma part, j'aurais plutôt fait la demande dans le forum "autres applications" et demandé un code VBA Outlook pour automatiser ma sauvegarde d'un message en positionnant et le PDF et le .msg dans un répertoire.
comme cela pas besoin d'avoir à le gérer ensuite dans Excel :)

mais cela ne te donne pas de solution ... ok ... j'arrete.
je n'avais pas pensé a cette solution, je vais étudier ça.
Bonjour à tous, ( et nonobstant le cross posting qui n'est pas adéquat en dehors d'une info !!! )
Une solution par macro
VB:
Public Sub ExportMSGasPdf()
    With Application.FileDialog(msoFileDialogFilePicker)
        .Filters.Clear
        .Filters.Add "To do", "*.msg"
        .InitialFileName = ThisWorkbook.Path & "\"
        .AllowMultiSelect = True
        .Title = "Sélectionner les Msg à exporter"
        If .Show Then
            For Each file In .SelectedItems
                Do_Export file
            Next
        End If
    End With
End Sub
Sub Do_Export(Msg)
    Dim ObjOutlook  As Object
    Const wdExportFormatPDF = 17
   
    On Error Resume Next
        Set ObjOutlook = CreateObject("Outlook.Application")
        If ObjOutlook Is Nothing Then Set ObjOutlook = GetObject(, "Outlook.Application")
    On Error GoTo 0
 
    With ObjOutlook.GetNamespace("MAPI").OpenSharedItem(Msg)
        .Display
        Msg = Left(Msg, Len(Msg) - Len("msg")) & "pdf"
        .GetInspector.WordEditor.ExportAsFixedFormat Msg, wdExportFormatPDF ', True
        .Close olDiscard
    End With

    On Error Resume Next
    Set ObjOutlook = Nothing

End Sub
merci, je vais tenter. la partie
VB:
GetInspector.WordEditor.ExportAsFixedFormat Msg, wdExportFormatPDF ', True
semble être mon chaînon manquant
 

Phil69970

XLDnaute Barbatruc
Le fil

@pierre.g
Si j'étais méchant je dirais qu'il parait qu'un poisson rouge à une mémoire de 3 secondes

1655224068818.png
1655224160689.png


Ici c'est 26 minutes donc c'est bon tu n'es pas un poisson rouge !! 🤔
C'est rassurant, non ? 🤣

@Phil69970