Use an Add Data Column to add the new column with the datatype you want. Use a For Each or LINQ expression (still loops, by the way) to update the new column with the converted values based on the old column.
Remove Data Column to get rid of the old column.
And you don’t have to do all that cloning etc for this. You can just do it all directly in your datatable.
' Clone the DataTable and change the data type of the "Due Date" column
dt_TransactionsInfoResult = dt_TransactionsInfo.Clone()
dt_TransactionsInfoResult.Columns("Due Date").DataType = GetType(System.DateTime)
' Load data into the new DataTable
dt_TransactionsInfoResult = (
From row In dt_TransactionsInfo.AsEnumerable()
Select dt_TransactionsInfoResult.LoadDataRow(New Object(){
row.Field(Of Object)("Invoice Number"),
row.Field(Of Object)("Order Number"),
row.Field(Of Object)("Invoice Date"),
DateTime.ParseExact(row.Field(Of String)("Due Date"), "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture),
row.Field(Of Object)("Total Amount")
}, True)
).CopyToDataTable()
In invoke Vba create a argument of dt_TransactionsInfoResult as Out
dt_TransactionsInfo as In argument