#1
|
|||
|
|||
Multiple tables in Word, converting working Excel macro
Hi, I have multiple tables within a Word document. Below is my working Excel VBA code. How do I convert it to Word for a table name "Table_Implemented"? Also, since I use the Power Automate "Populate a Word Document", is there a way to run the macro automatically once the document is created?
Thanks for any insight!!! Code:
Sub deleteRow() Application.Calculation = xlCalculationManual Application.EnableEvents = False Application.ScreenUpdating = False 'declare variables Dim deleteRow As Long Dim ws As Worksheet 'set objects Set ws = ActiveSheet For deleteRow = ws.Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1 If ws.Range("A" & deleteRow).Value = "Not Implemented" Then Rows(deleteRow).EntireRow.Delete End If Next deleteRow Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True Application.ScreenUpdating = True Last edited by macropod; 04-13-2021 at 09:37 PM. Reason: Added code tags |
#2
|
||||
|
||||
Processing tables in Word is entirely different from processing ranges (however described) in Excel. For basic table row deletion in Word see, for example:
https://www.msofficeforums.com/150021-post2.html See also: https://www.msofficeforums.com/word-...ell-first.html
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#3
|
|||
|
|||
Thanks!
Using the second link example, where/how would I specify a specific table name versus all tables? Using an example of Table_NotImplemented. Thanks again! Code:
Sub ScratchMacro() 'A basic Word macro coded by Greg Maxey, http://gregmaxey.com/word_tips.html, 2/12/2018 Dim oTbl As Table Dim lngIndex As Long For Each oTbl In ActiveDocument.Tables For lngIndex = oTbl.Rows.Count To 1 Step -1 If Left(oTbl.Cell(lngIndex, 1).Range.Text, Len(oTbl.Cell(lngIndex, 1).Range.Text) - 2) = "$" Then oTbl.Rows(lngIndex).Delete End If Next Next lbl_Exit: Exit Sub End Sub Last edited by macropod; 04-13-2021 at 09:38 PM. Reason: Added code tags |
#4
|
||||
|
||||
Word tables don't have a 'name' property. They do, however, have a 'title' property which you can access via 'Alt Text' on the tables properties dialogue box. They can also be titled via VBA.
If you want to refer to a particular table, you'd ordinarily identify it by its index number, a bookmark that has been applied to it, or by using Find to identifying content unique to that table.
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
#5
|
|||
|
|||
Makes sense. I did add the title in the 'Alt Text' area for each table. Using the code from your original post, second example, how/where would I enter the table name (alt text)? Thanks again!
Code:
Sub ScratchMacro() 'A basic Word macro coded by Greg Maxey, Microsoft Word Help, Tips and Tutorials @ The Anchorage, 2/12/2018 Dim oTbl As Table Dim lngIndex As Long For Each oTbl In ActiveDocument.Tables For lngIndex = oTbl.Rows.Count To 1 Step -1 If Left(oTbl.Cell(lngIndex, 1).Range.Text, Len(oTbl.Cell(lngIndex, 1).Range.Text) - 2) = "$" Then oTbl.Rows(lngIndex).Delete End If Next Next lbl_Exit: Exit Sub End Sub Last edited by macropod; 04-14-2021 at 04:34 AM. Reason: Added code tags |
#6
|
||||
|
||||
See:
https://www.msofficeforums.com/word-...es-tables.html Bookmarked tables are easier to work with: https://www.msofficeforums.com/word-...ame-table.html
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
Tags |
vba |
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Macro to insert multiple photos into separate tables | Photoinserts | Word VBA | 0 | 11-12-2018 08:30 PM |
replacing multiple ranges in excel with tables in word from top to bottom | modiria50989 | Word VBA | 5 | 09-13-2017 04:01 PM |
Creating multiple tables VBA from Excel to Word | francesco | Word VBA | 1 | 01-07-2016 04:08 AM |
Copying Multiple tables from excel into a single word document | dineshtgs | Word Tables | 1 | 04-07-2011 01:27 AM |
working with excel tables in MS word | radman154 | Word Tables | 1 | 03-25-2011 12:04 AM |