PDA

View Full Version : Executing macro on each subsequent page/table



yann.shukor
07-21-2023, 07:31 AM
Hi

I have the following label template in Windows (v11) Word (v2021) : https://bit.ly/3K8IrKS

The objective is to print a list of mac addresses on individual labels

When merging data into this template, Word naturally fills the cells in from left to right and then from top to bottom

I would like to modify the resulting order of the merged cell entries in the table so as to sort them from top to bottom, and then from left to right

I came across this VBA script, generously shared by Greg Maxey : https://gregmaxey.com/word_tip_pages/table_sorter.html

It produces exactly the sought result; but for one page/table only. Which is totally fine.
Except that I need to execute this sort procedure on the subsequent pages/tables also present in this document

I therefore added some lines of code around the line that calls the "TableSort_Re_Sort" procedure as follows :



Dim Pages As Long, PageNb As Long Pages=Selection.Information(wdNumberOfPagesInDocument)
For PageNb = 1 to Pages
Selection.GoTo What:=wdGoToPage, Name:=PageNb
TableSort_Re_Sort
Next


To test this out, I place the cursor at the top left cell of page/table #1 and then run the macro

The added lines correctly position the cursor on the top left cell of each subsequent page/table through each iteration
But unfortunately, the "TableSort_Re_Sort" procedure only gets executed on page/table #1

If can obtain the desired (global) result (without my added code) if I position the cursor
in the top left cell of each page/table and manually execute the macro

There is obviously something that I don't understand in the VBA mechanism/process and hope that someone can point me in the right direction

Thank you

regards
yann

gmayor
07-21-2023, 11:53 PM
See https://www.msofficeforums.com/word-vba/51132-executing-macro-each-subsequent-page-table.html
Please crosspost correctly


Sub SortTable() 'Set the table object = the table with the selection
On Error GoTo Err_Handler:
For Each m_Otbl In ActiveDocument.Tables
'Table must be uniform (not split or merged cells)
If Not m_Otbl.Uniform Then
MsgBox "The selected table has split or merge cells and cannot be sorted with this procedure", vbInformation + vbOKOnly, "Non-Uniform Table"
Exit Sub
End If
TableSort_Re_Sort
Next m_Otbl
Exit Sub
Err_Handler:
End Sub

yann.shukor
07-22-2023, 01:19 AM
This wouldn't have been necessary had I been allowed to delete this post

Aussiebear
07-22-2023, 03:40 AM
Yann.shukor, Firstly welcome to the VBAX forum. We don't remove posts lightly. All we ask is that if you post the issue on another forum, please let us know. In this case all you had to say was that was posted on msofficeforum.com and that would have been that. I also note that you posted on another forum immediately after post your thread here, so there was plenty of time in which to let us know.

yann.shukor
07-22-2023, 04:13 AM
Yann.shukor, Firstly welcome to the VBAX forum. We don't remove posts lightly. All we ask is that if you post the issue on another forum, please let us know. In this case all you had to say was that was posted on msofficeforum.com and that would have been that. I also note that you posted on another forum immediately after post your thread here, so there was plenty of time in which to let us know.
understood, thanks and sorry

Aussiebear
07-22-2023, 04:25 AM
That's okay.