With the help from an old post, I worked it out. I ended up having to pre-select the sketch block via select set for it to work. Code below is working example on how to copy a sketch block from a template part file and insert it into the active part.
Final Code:
Public Sub InsertBlockFromTemplate()
Dim oNVM As NameValueMap
Set oNVM = ThisApplication.TransientObjects.CreateNameValueMap
Dim oTemplate As PartDocument
Set oTemplate = ThisApplication.Documents.OpenWithOptions("C:\btemplate.ipt", oNVM, False)
Dim oTempCompDef As PartComponentDefinition
Set oTempCompDef = oTemplate.ComponentDefinition
Dim oTempSB As SketchBlockDefinition
Set oTempSB = oTempCompDef.SketchBlockDefinitions.Item("Block Name")
Dim oDoc As PartDocument
Set oDoc = ThisApplication.ActiveEditDocument ' This makes the code work if in assembly edit environment
If oDoc.DocumentType <> kPartDocumentObject Then
MsgBox ("Active Edit Document Is Not A Part File")
End If
Dim oCompDef As PartComponentDefinition
Set oCompDef = oDoc.ComponentDefinition
' Copy sketch block definition to current part document & close template
Call oTempSB.CopyTo(oDoc, True)
Call oTemplate.Close
' Expand Block Browser Node
oDoc.BrowserPanes.ActivePane.TopNode.BrowserNodes.Item(1).Expanded = True
' Define local sketch block definition
Dim oSB As SketchBlockDefinition
Set oSB = oCompDef.SketchBlockDefinitions.Item("Block Name")
' Need to preselect the block definition
Call ThisApplication.activeDocument.SelectSet.Clear
Call ThisApplication.activeDocument.SelectSet.Select(oSB)
' Define & Execute command
Dim oCtrlDef As ControlDefinition
Set oCtrlDef = ThisApplication.CommandManager.ControlDefinitions.Item("SketchRigidSetPlaceInstanceCmd")
Call oCtrlDef.Execute
End Sub
Referenced Post with solution / code
http://forums.autodesk.com/t5/inventor-customization/inventor-vba-insert-sketched-block-into-part/m-...
Regards, Matt.