I looks like a Inventor doesn't like the same column names when you are using the API to create tables. When you manualy create a table you can use the same column names. So i made a small work around. so I firts create a table with the unique titles, then rename all coumns after creation. 🙂
below the visual representation, but when you run the code you won't even notice that this is happend.

here is the new code.
Sub main
Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.ActiveDocument
Dim oSheet As Sheet
'ophalen template path definitie
'oExcel = "D:\SUPERHEATERS\SUPERHEATER_Template1.xlsx"
oExcel = "D:\01 Data\Workingfolder Vault\Designs\Projects\P900 - Support\SUPERHEATER_Template1.xlsx"
i=1
For Each oSheet In oDrawDoc.Sheets
CreateTable(oExcel, oSheet, i, "A2", "A3", 10, 5)
i=i+1
Next
End Sub
Sub CreateTable(ByVal oExcel As String, oSheet As Sheet,i As Integer, SC_Titles As String,SC_Content As String, oColumns As Integer,oRows As Integer)
Dim oSheetName, oCell As String
oSheetName = "Element" & i
'calculate number of columns cells
oCells = oColumns * oRows
'get the column character and row number
SC_Titles_Column = Left(SC_Titles,1)
SC_Titles_row = Right(SC_Titles,Len(SC_Titles)-1)
SC_Content_Column = Left(SC_Content,1)
SC_Content_Row = Right(SC_Content, Len(SC_Content) -1)
SC_Content_LastColumn = Chr(Asc(SC_Content_Column) + oColumns)
SC_Content_LastRow = SC_Content_Row+oRows
oCell = ""
Dim oTitles(oColumns - 1) As String
Dim oOrgTitles(oColumns - 1) As String
Dim k As Integer
k=0
Do Until k = oColumns
oCell = SC_Titles_Column & SC_Titles_row
'Get value from Excel
oOrgTitles(k) = GetExcelValue(oExcel, oSheetName, oCell)
Logger.Info(oTitles(k))
If oTitles.Contains(oOrgTitles(k))Then
oTitles(k)=""
Else
oTitles(k)=oOrgTitles(k)
End If
'Set the next Column
SC_Titles_Column = Chr(Asc(SC_Titles_Column) + 1)
k=k+1
Loop
Dim oContents(oCells - 1) As String
Logger.Info(oCells - 1)
Dim j As Integer
j=0
Do Until j = oCells
'check if last cell in row is reached
If SC_Content_Column = SC_Content_LastColumn Then
SC_Content_Column = Left(SC_Content, 1)
SC_Content_Row = SC_Content_Row+1
End If
oCell = SC_Content_Column & SC_Content_Row
'Get value from Excel
oContents(j) = GetExcelValue(oExcel, oSheetName, oCell)
'Set the next Column
SC_Content_Column = Chr(Asc(SC_Content_Column) + 1)
j=j+1
Loop
Dim InsP As Point2d
InsP = ThisApplication.TransientGeometry.CreatePoint2d(15, 15)
Dim oCustomTable As CustomTable
oCustomTable = oSheet.CustomTables.Add("CHURCH WINDOWS EXISTING WELDS", InsP, oColumns, oRows, oTitles,oContents)
i=0
For Each oTableColumn In oCustomTable.Columns
oTableColumn.Title = oOrgTitles(i)
i=i++1
Next
End Sub
Function GetExcelValue(ByVal oExcel As String, oSheetName As String, oCell As String) As String
If GoExcel.CellValue(oExcel, oSheetName, oCell) Is Nothing Then
GetExcelValue = ""
Else
GetExcelValue = GoExcel.CellValue(oExcel, oSheetName, oCell)
End If
End Function