Dynamically create ordered list in outlook from Excel
There is no reason to convert arr to a collection.  Join() can quickly build a tag list from a 1 Dimensional array.  The trick is to have Join()  insert a closing tag + open tag between each element.


"&lt;li&gt;" &amp; Join(arr, "&lt;/li&gt;&lt;li&gt;") &amp; "&lt;/li&gt;"



Join Demo

Dim arr As Variant
Dim n As Long
ReDim arr(6)
For n = 1 To 7
    arr(n - 1) = WeekdayName(n)
Next

Debug.Print "&lt;li&gt;" &amp; Join(arr, "&lt;/li&gt;&lt;li&gt;") &amp; "&lt;/li&gt;"
Debug.Print "&lt;li&gt;" &amp; Join(arr, "&lt;/li&gt;" &amp; vbNewLine &amp; "&lt;li&gt;") &amp; "&lt;/li&gt;"




You could also avoid creating the array in the first using the same tring to replace the commas with a close tag + an open tag:



Your code is building a hyperlink, filling an ordered list, and creating the message htmlBody and will probably do several other tasks before it is complete.  There is no way to test any single process without running the entire code.  The fewer tasks that a method performs the easier it is to modify and debug.



Notice how easy it was to test my Refactored Code in the immediate window.

Refactored Code

Note: I find that using an ArrayList is the easiest way to create and modify dynamic html.

Function getCheckListItems() As String
    getCheckListItems = "&lt;li&gt;" &amp; Replace(SheetData.Range("Notes_For_Doc_Reviewer").Value, ",", "&lt;/li&gt;" &amp; vbNewLine &amp; "&lt;li&gt;") &amp; "&lt;/li&gt;"
End Function

Function getChecklistHTML(HyperlinkTag As String, CheckListItems As String) As String
    Const Delimiter As String = vbNewLine
    Dim list As Object
    Set list = CreateObject("System.Collections.ArrayList")
    list.Add "&lt;html&gt;"
    list.Add "&lt;body style=font-size:11pt;font-family:Calibri&gt;"
    list.Add "Hello Zack"
    list.Add "&lt;p&gt;Please complete the closing document review for the following file:"
    list.Add "&amp;nbsp&amp;nbsp"
    list.Add HyperlinkTag
    list.Add "&lt;br&gt;&lt;br&gt;"
    list.Add "Items to make note of in the file."
    list.Add "&lt;ol&gt;"
    list.Add CheckListItems
    list.Add "&lt;/ol&gt;"
    list.Add "&lt;/body&gt;"
    list.Add "&lt;/html&gt;"

    getChecklistHTML = Join(list.ToArray, Delimiter)

End Function

Function getCurrentPathHyperlink(Wb As Workbook)
    Const DefaultLink As String = "&lt;a href='@currDir'&gt;@currDir&lt;/a&gt;"

    Dim currDir As String
    currDir = Replace(Wb.Path, " ", "%20")

    getCurrentPathHyperlink = Replace(DefaultLink, "@currDir", currDir)
End Function


Edit:

My original post was using an open tag instead of a closing tag in getCheckListItems().  Many thanks to Ryan Wildry!