#1
|
|||
|
|||
How to determine the end of a block of text
I am working with blocks of text in a Word Document that start with
;PATH:2 - 5AX TRIM ;VIEW:9 - ORIENT - ANGLES: 0,90 ;TOOL:3 - DIAM:.25 CRAD:0 REF GL:0 ;DESC: 0.2500 DIA - 2 FLUTE - ENDMILL ;MATL: HSS M06 T3.3 (UIO,Z(-1*L370)) (TCP,5) X-2.1181 Y-1.3104 A0. C283.627 S18000 M03 A22.314 C233.775 Z1.749 G01 Z.749 F50. Then has multiple lines of some permutation of: X-1.8601 Y-1.5577 Z-.1887 A22.244 C233.883 Then ends with <Random Text> F50. G00 Z4. There are multiple blocks of text in this format. I want to do DO-WHILE for each iteration of blocks in this format. I'm not sure how to set the DO-WHILE parameters to take advantage of these consistent markers before and/or after these blocks of text. Can anyone help? |
#2
|
|||
|
|||
Code:
Sub ScratchMacro() 'A basic Word Macro coded by Gregory K. Maxey Dim oRng As Range Set oRng = ActiveDocument.Range With oRng.Find .Text = "PATH:2 - 5AX TRIM*\<*\>*G00 Z4" .MatchWildcards = True Do While .Execute oRng.Select 'or do what you wish with the range of text Loop End With lbl_Exit: Exit Sub End Sub |
#3
|
|||
|
|||
I don't understand why you use .Execute instead of .Find.Found. Why do you expect .Execute to mirror whatever .Find.Found ends up being? Intuitively it seems to me .Execute is a flag indicating whether or not the Find operation was done, and .Find.Found indicates whether the desired pattern was found. The Find operation could have been Executed without anything being Found. Then it seems their values should not match.
|
#4
|
|||
|
|||
Find.Executes returns True if a match is found. It is more reliable than Found and requires less code.
|
#5
|
|||
|
|||
Demo below is Microsoft example of the "Found" property. DemoII below is my code which to me proves that "Found" is utterly useless:
Code:
Sub Demo() With Selection.Find .ClearFormatting .Font.Bold = True .Execute FindText:="Hello", Format:=True, Forward:=True If .Found = True Then .Parent.Expand Unit:=wdParagraph .Parent.Copy End If End With End Sub Sub DemoII() With Selection.Find .ClearFormatting .Font.Bold = True If .Execute(FindText:="Hello", Format:=True, Forward:=True) Then .Parent.Expand Unit:=wdParagraph .Parent.Copy End If End With End Sub |
#6
|
|||
|
|||
To process blocks of text in a Word document using a DO-WHILE loop, you can use various techniques to determine the start and end of each block. In your case, since the blocks start with ";P ATH:2 - 5AX TRIM" and end with "<Random text> F50. G00 Z4.", you can use these lines as the start and end conditions for the loop.
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Building Block Text into a variable | tonse | Word VBA | 1 | 11-16-2023 06:10 AM |
how to create a block text and when click on the title of block hide and unhide the block | labasritas@free.fr | Word | 4 | 09-17-2017 01:17 PM |
What is this block of text? | nyempire | Word | 5 | 05-26-2016 06:08 AM |
how to make building block content control determine bb to display elsewhere | jamles12 | Word VBA | 5 | 11-16-2013 11:38 AM |
Anyway to determine time/date of text creation? | pureride | Word | 1 | 01-05-2010 02:09 PM |