VBA script to convert emails via markdown
    Jared Martin 
    martin.jared at gmail.com
       
    Thu Sep 12 12:48:15 EDT 2013
    
    
  
I hate Microsoft's GUI interface, and I love Markdown (I am an active
stackoverflow user). But for work, I have to use Outlook. So I thought,
well, maybe I can write emails in Markdown, and use VBA to convert them.
This almost works, actually. The problem is that markdown doesn't create
paragraphs the way Office wants them, when encoding the raw body text.
Below is the VBA script I wrote... feel free to adapt and use, if you can
figure out how to fix the paragraphing problem... but if you do, let me
know! Note also that you should add a reference to the "Microsoft Scripting
Runtime" in Tools -> References.
Thanks in advance,
Jared
Option Explicit
Public Declare PtrSafe Sub Sleep Lib "kernel32" ( _
        ByVal dwMilliseconds As LongLong)
' DON'T FORGET TO CHANGE THESE
Private Const pathToPerl = "C:\your\path\to\perl.exe"
Private Const pathToScript = "C:\your\path\to\Markdown.pl"
Private Const tempFileName = "\markdown.text"
Sub Markdown()
    Dim myItem As MailItem
    Dim tempAbsolutePath As String
    Dim position As Long, endPosition As Long
    Dim prefix As String, converted As String
    'get currently active email
    If (Not Application.activeInspector.IsWordMail) Then Exit Sub
    Set myItem = Application.activeInspector.CurrentItem
    If (Not myItem.BodyFormat = olFormatHTML) Then
        myItem.BodyFormat = olFormatHTML
    End If
    position = InStr(1, myItem.HTMLBody, "<BODY", vbTextCompare)
    endPosition = InStr(position, myItem.HTMLBody, ">", vbTextCompare)
    prefix = Left$(myItem.HTMLBody, endPosition)
    ' Store the in progress email in a temp file
    tempFileAbsolutePath = IIf(Environ$("tmp") <> "", Environ$("tmp"),
Environ$("temp")) & tempFileName
    Open tempAbsolutePath For Output As #1
    Print #1, myItem.Body
    Close #1
    converted = ConvertFile(tempAbsolutePath)
    myItem.HTMLBody = prefix & converted & "</body></html>"
End Sub
Private Function ConvertFile(emailFile As String)
    Dim oWsc As Object
    Set oWsc = CreateObject("WScript.Shell")
    Dim oExec As Object
    Dim execCommand As String
    execCommand = pathToPerl & " " & pathToScript & " " & emailFile
    Set oExec = oWsc.Exec(execCommand)
    While oExec.Status <> 1 ' Wait for process
        Sleep 100
    Wend
    ConvertFile = oExec.StdOut.ReadAll()
    Set oWsc = Nothing
    Set oExec = Nothing
End Function
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://six.pairlist.net/pipermail/markdown-discuss/attachments/20130912/81c7f44d/attachment.html>
    
    
More information about the Markdown-Discuss
mailing list