Q:

Create, fill and resize WordTable before inserting it to instance

I am currently working on an application that gets data out of a database and puts it into an open word instance.  
Currently it's doing the following steps:

Find open Word Instance (if multiple opened user can select)

Dim oDocs As Word. Document =
WordApplication. Application. Documents(filepath)

Create a table on a bookmark in the Word Instance

Try
    WordTable = oDocs. Tables. Add(oDocs. Bookmarks. Item("NameOfBookmark").Range, DataTable. Rows. Count + 1, DataTable. Columns. Count)
Catch ex As Exception
    WordTable = oDocs. Tables. Add(oDocs. Application. Selection. Range, DataTable. Rows. Count + 1, DataTable. Columns. Count)
End Try

Fill the table, when it's already in the word instance

Looping for each row and cell -> In this loop is happening a lot, but it's working and doesn't matter for the question so I will not put the code inside here

I know the speed can be so slow because of the stuff happening in the part where it fills the table, but i do not think it's too much.  
My Problem is the speed of that.  While this all is working fine, it takes years to execute.  You can see every Cell being filled in the opened Word-Document.  My thoughts for a solution is to find a way to create that WordTable in my VB application and only insert the finished Word-Table into the Word instance, but I can't find a way to do so.  
Is there a way to do that?  If yes, please tell me how! 
TL:DR
Can I completly create and fill and resize a WordTable in my VB application before inserting it into an opened WordInstance?  If yes, how?  
EDIT
Bibadia just gave the perfect Answer! 
I will give you my full working Code now - It only creates a table in the word-instance.  You have to format it later in your application. 
  Dim oDocs As Word. Document = WordApplication. Application. Documents(filepath)

    Dim strTable As String = ""
    Dim isFirst As Boolean = True
    Dim intColumns As Integer = DataTable. Columns. Count
    Dim intRows As Integer = DataTable. Rows. Count
    For Each column As DataColumn In DataTable. Columns
        If Not isFirst Then
            strTable &= ";"
        End If
        strTable &= column. ColumnName
        isFirst = False
    Next

    For Each row As DataRow In DataTable. Rows
        For Each column As DataColumn In DataTable. Columns
            strTable &= ";" & row. Item(column)
        Next
    Next

    Dim rng As Word. Range
    rng = oDocs. Application. Selection. Range
    rng. Text = strTable
    Dim WordTable As Word. Table = rng. ConvertToTable(NumRows:=intRows + 1, NumColumns:=intColumns, Separator:=Word. WdSeparatorType.wdSeparatorColon)

A:

Three things you could try:

Insert the data as plain text using delimiters that do not appear in your data (e.g. vbTab and vbCr), then use the ConvertToTable method of the range object.  You will need to apply formatting after that.  
Build the table using WordProcessingML and insert it using the InsertXML method of a Range object.  It is up to you how much formatting you attempt to describe using the XML - personally, I would start by inserting the simplest possible table pre-filled with data, then apply formatting using the object model if that is not also too slow. 
Use the InsertDatabase method of the Range.  But you will need to be able to access your database using a method Word can work with (e.g. OLE DB or ODBC), so you will probably need a .odc file (or DSN) to make it work, which typically makes distribution of a solution harder.  It may also be difficult to prevent security information from being stored in the .docx or .odc/DSN. 

THere is an article here that provides some code for method (1) and more information about applying formatting.