I want to transfer a table of Data from Excel to Word but i’m facing a problem.
I want the following architecture for my word document :
- A title
- The table containing some data
- For each row of the table, create a new page and insert pictures linked to the data
I can create all the objects but my table always end at the end of the document, no matter what I try.
I just want to have this table starting on my second page.
Thnk you in advance for your help.
Here is my code :
<code> ' ouvrir Word
Dim WdApp As Object
Set WdApp = CreateObject("Word.Application")
WdApp.Visible = True
' Créer un nouveau document
Set Doc = WdApp.Documents.Add
WdApp.Selection.typetext "Line of Sight" ' Ajouter un titre
' Insérer le tableau des coordonnées au début du document
WdApp.Selection.InsertNewPage
Set DataRange = Worksheets("Export DWG").Range("A4:M" & nbpoints + 3)
Set myRange = WdApp.Selection.Range
Set CoordsTable = WdApp.ActiveDocument.Tables.Add(Range:=myRange, NumRows:=3, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, Autofitbehavior:=WdAutoFitBehavior)
WdApp.Selection.MoveEnd
For i = 1 To nbpoints
Set DataRange = Worksheets("Data").Range("A4:H" & nbpoints + 3) ' Range de données de la feuille "Data"
LaserNumber = DataRange(i, 5)
pointName = DataRange(i, 1)
Debug.Print "---> " & i & " : " & pointName
WdApp.Selection.InsertNewPage
WdApp.Selection.typetext ("Some Text")
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
WdApp.Selection.typetext "Subtitle"
WdApp.Selection.TypeParagraph
' >>> Add a first image
WdApp.Selection.TypeParagraph
WdApp.Selection.typetext "Other Subtitle"
WdApp.Selection.TypeParagraph
' >>> Add a second image
Next i
Debug.Print ">>> Fin remplissage document ..."
MsgBox "Document has been filled, please select the Word window and choose a sensitivity label."
</code>
<code> ' ouvrir Word
Dim WdApp As Object
Set WdApp = CreateObject("Word.Application")
WdApp.Visible = True
' Créer un nouveau document
Set Doc = WdApp.Documents.Add
WdApp.Selection.typetext "Line of Sight" ' Ajouter un titre
' Insérer le tableau des coordonnées au début du document
WdApp.Selection.InsertNewPage
Set DataRange = Worksheets("Export DWG").Range("A4:M" & nbpoints + 3)
Set myRange = WdApp.Selection.Range
Set CoordsTable = WdApp.ActiveDocument.Tables.Add(Range:=myRange, NumRows:=3, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, Autofitbehavior:=WdAutoFitBehavior)
WdApp.Selection.MoveEnd
For i = 1 To nbpoints
Set DataRange = Worksheets("Data").Range("A4:H" & nbpoints + 3) ' Range de données de la feuille "Data"
LaserNumber = DataRange(i, 5)
pointName = DataRange(i, 1)
Debug.Print "---> " & i & " : " & pointName
WdApp.Selection.InsertNewPage
WdApp.Selection.typetext ("Some Text")
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
WdApp.Selection.typetext "Subtitle"
WdApp.Selection.TypeParagraph
' >>> Add a first image
WdApp.Selection.TypeParagraph
WdApp.Selection.typetext "Other Subtitle"
WdApp.Selection.TypeParagraph
' >>> Add a second image
Next i
Debug.Print ">>> Fin remplissage document ..."
MsgBox "Document has been filled, please select the Word window and choose a sensitivity label."
</code>
' ouvrir Word
Dim WdApp As Object
Set WdApp = CreateObject("Word.Application")
WdApp.Visible = True
' Créer un nouveau document
Set Doc = WdApp.Documents.Add
WdApp.Selection.typetext "Line of Sight" ' Ajouter un titre
' Insérer le tableau des coordonnées au début du document
WdApp.Selection.InsertNewPage
Set DataRange = Worksheets("Export DWG").Range("A4:M" & nbpoints + 3)
Set myRange = WdApp.Selection.Range
Set CoordsTable = WdApp.ActiveDocument.Tables.Add(Range:=myRange, NumRows:=3, NumColumns:=4, DefaultTableBehavior:=wdWord9TableBehavior, Autofitbehavior:=WdAutoFitBehavior)
WdApp.Selection.MoveEnd
For i = 1 To nbpoints
Set DataRange = Worksheets("Data").Range("A4:H" & nbpoints + 3) ' Range de données de la feuille "Data"
LaserNumber = DataRange(i, 5)
pointName = DataRange(i, 1)
Debug.Print "---> " & i & " : " & pointName
WdApp.Selection.InsertNewPage
WdApp.Selection.typetext ("Some Text")
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
WdApp.Selection.TypeParagraph
WdApp.Selection.typetext "Subtitle"
WdApp.Selection.TypeParagraph
' >>> Add a first image
WdApp.Selection.TypeParagraph
WdApp.Selection.typetext "Other Subtitle"
WdApp.Selection.TypeParagraph
' >>> Add a second image
Next i
Debug.Print ">>> Fin remplissage document ..."
MsgBox "Document has been filled, please select the Word window and choose a sensitivity label."
I used step-by-step debug mode and here is what I can conclude :
- The first page with title are OK
- Then the new page and the table are created without any issue
- Then, the next page is created and the table is moved to the end of the document.
I tried to use .InsertAfter to put some texte and try to move selection, the text was well displayed but the table still moved. I tried Selection.MoveEnd, but it didn’t change anything.