![]() |
|
|
|
#1
|
|||
|
|||
|
Hi,
I am trying to modify the following macro to skip all tables in a document. I tried to add "tables" with the rest of the text that is ignored, but it still puts a "(U) " in each cell. Our text gets dumped out of another program and everything is styled "Normal"... including the tables. If I style the table text, then all the dollar amounts become left justified, which is time-intensive to fix. Does anyone have any suggestions? Code:
With ActiveDocument.Content.Find
.ClearFormatting
.Style = wdStyleNormal
Do While .Execute(Forward:=True, Format:=True) = True
With .Parent
If Left(.Text, 1) = vbCr Or Left(.Text, 1) = " " Or Left(.Text, 1) = chr(12) Or (wdWithInTable) Then
'do nothing
Else
.InsertBefore "(U) "
End If
If .End = ActiveDocument.Content.End Then
Exit Do
Else
.Move unit:=wdParagraph, Count:=1
End If
End With
Loop
End With
End Sub
Last edited by macropod; 09-24-2018 at 05:17 PM. Reason: Added code tags & formatting |
|
#2
|
||||
|
||||
|
It's not exactly clear what you're trying to do, since nothing about your code has anything to do with justification vis-à-vis "all the dollar amounts become left justified". Try:
Code:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[!^13]@^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = False
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
If .Information(wdWithInTable) = False Then
Select Case .Characters.First
Case Chr(32), vbCr
Case Else: .InsertBefore "(U) "
End Select
Else
.End = .Tables(1).Range.End
End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#3
|
|||
|
|||
|
I apologize for not being clear. I added more description, but that seems to have made it more confusing. We have a separate macro that formats the tables, so I don't want this to format the tables.
The macro I posted adds a "(U) " to everything styled "normal" which includes every cell in every table. I was hoping for code that would skip anything in a table. I tried the macro you posted, and was patient for a while, but it seemed to just be locked up. So I ended the task and when I opened up the test file again, it had hundreds of "(U) "s in the table of contents. But nothing in the text. I can't send the Word file, but I attached one with a screen shot. |
|
#4
|
|||
|
|||
|
YES!! So, I kept trying things this morning and eventually got the macro working.
Thank you! I was able to find the piece I needed from within your code. I added: Or .Information(wdWithInTable) = True to the statement that ignores certain things in the document. Complete macro below: With ActiveDocument.Content.Find .ClearFormatting .Style = wdStyleNormal Do While .Execute(Forward:=True, Format:=True) = True With .Parent If Left(.Text, 1) = vbCr Or Left(.Text, 1) = " " Or Left(.Text, 1) = chr(12) Or .Information(wdWithInTable) = True Then 'do nothing Else .InsertBefore "(U) " End If If .End = ActiveDocument.Content.End Then Exit Do Else .Move unit:=wdParagraph, Count:=1 End If End With Loop End With End Sub |
|
#5
|
||||
|
||||
|
Quote:
Quote:
Try: Code:
Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
With .Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[!^13]@^13"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.Style = wdStyleNormal
.MatchWildcards = True
.Execute
End With
Do While .Find.Found
If .Information(wdWithInTable) = False Then
Select Case .Characters.First
Case Chr(32), vbCr
Case Else: .InsertBefore "(U) "
End Select
Else
.End = .Tables(1).Range.End
End If
.Collapse wdCollapseEnd
.Find.Execute
Loop
End With
Application.ScreenUpdating = True
End Sub
__________________
Cheers, Paul Edstein [Fmr MS MVP - Word] |
|
#6
|
|||
|
|||
|
I'm sorry. Building macros is a side thing for me and I'm just learning as I go. I didn't realize that any of that would affect it. My bad for not knowing.
The original code I posted works wonderfully with the one addition. So we've been using that...when I get a chance I will try your updated macro. I'm sure it's perfect now that you have more information. Thank you for your time. I learn something new every time I work on macros, but unfortunately it's not my main task. |
|
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Convert particular blocks of text within a word document to tables using macro
|
benbob | Word VBA | 5 | 07-15-2018 03:20 AM |
word macro To insert text at the beginning and at end of paragraph
|
ArieH | Word VBA | 20 | 09-10-2017 04:23 PM |
Can't insert space at the beginning of a line in Word
|
p89.schneider | Word | 6 | 03-24-2016 11:38 PM |
Macro to Insert text into the beginning on specific paragraphs unless the paragraph is blank
|
caboy | Word VBA | 2 | 04-01-2015 07:00 AM |
| Looping macros to add text to beginning and end of a paragraph | pachmarhi | Word VBA | 0 | 02-16-2009 06:57 AM |