Microsoft Office Forums

Go Back   Microsoft Office Forums > >

Reply
 
Thread Tools Display Modes
  #1  
Old 12-09-2023, 06:29 AM
vivka vivka is offline Separate strings in a text file Windows 7 64bit Separate strings in a text file Office 2016
Expert
 
Join Date: Jul 2023
Posts: 305
vivka is on a distinguished road
Default

RobiNew, what do you mean by "extract": hilighting, msgboxing, adding to a collection, deleting...? For me your task is not quite clear.


If you need to hilight the found strings, you may use the followng code, which was once made by gmaxey and slightly modified by me:
Sub Hilite_Array_T()
'In selection, hilite all instances of 'width=' and 'height=' followed
'by three-digit numbers.

Application.ScreenUpdating = False
Dim vFindTxt As Variant
Dim oRng As range
Dim i As Long
vFindTxt = Array("width=", "height=")
For i = 0 To UBound(vFindTxt)
Set oRng = selection.range
With oRng.Find
.ClearFormatting
.Replacement.ClearFormatting
Do While .Execute(FindText:=vFindTxt(i), _
MatchWholeWord:=True, _
Forward:=True, _
Wrap:=wdFindStop) = True And _
oRng.End <= selection.range.End
oRng.MoveEnd unit:=wdCharacter, count:=3
oRng.HighlightColorIndex = wdYellow
oRng.Collapse wdCollapseEnd
Loop
End With
DoEvents
Next
lbl_Exit:
Set oRng = Nothing
Exit Sub
Application.ScreenUpdating = True
End Sub
Reply With Quote
  #2  
Old 12-09-2023, 07:54 AM
RobiNew RobiNew is offline Separate strings in a text file Windows 10 Separate strings in a text file Office 2016
Competent Performer
Separate strings in a text file
 
Join Date: Sep 2023
Posts: 231
RobiNew is on a distinguished road
Default

Thank you, Vivka! Your code leaves everything unchanged. But what I need is not to highlight all instances of 'width=' and 'height=' followed by three-digit numbers.
As I suggested in the original post, I have a text file with several sequences of this type:

<p class=NonNrPar align=center style='text-align:center;line-height:
normal'><img width=453 height=255 id="Immagine 1"
src="E_DIME_ORIG_file/image001.jpg"></p>

I'm trying to write a code that will
1) Find part of the above string: from <img to ><;
2) create a variable that contains the string width=### in the Found string;
3) create a variable that contains the string height=### in the Found string;
4) Delete the Found string: from <img to ><.

Hope someone can help. Thanks!
Reply With Quote
  #3  
Old 12-09-2023, 09:46 AM
RobiNew RobiNew is offline Separate strings in a text file Windows 10 Separate strings in a text file Office 2016
Competent Performer
Separate strings in a text file
 
Join Date: Sep 2023
Posts: 231
RobiNew is on a distinguished road
Default

I managed to make it work correctly, provisionally on a single instance of the text mentioned above.
Perhaps someone can make it less clumsy.
Code:
Sub ThreeStrings()
Dim oRng As Range
Set oRng = ActiveDocument.Range
With oRng.Find
        .Text = "<img width"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchWildcards = False
While .Execute
oRng.MoveEndUntil Cset:="><"
VarStrg1 = oRng
'MsgBox VarStrg1
oRng.Collapse
oRng.MoveEndUntil Cset:=" "
oRng.Move Unit:=wdCharacter, Count:=2
oRng.MoveEndUntil Cset:=" "
VarWd = oRng
'MsgBox VarWd
oRng.Move Unit:=wdCharacter, Count:=2
oRng.MoveEndUntil Cset:=" "
VarHi = oRng
'MsgBox VarHi
Set oRng = ActiveDocument.Range
With oRng.Find
        .Text = "<img width"
        .Replacement.Text = ""
        .Forward = False
        .Wrap = wdFindStop
        .Format = False
        .MatchWildcards = False
        .Execute
End With
oRng.MoveEndUntil Cset:="><"
oRng.Delete
Goto End
Wend
    End With
End:
End Sub
Reply With Quote
  #4  
Old 12-09-2023, 01:30 PM
vivka vivka is offline Separate strings in a text file Windows 7 64bit Separate strings in a text file Office 2016
Expert
 
Join Date: Jul 2023
Posts: 305
vivka is on a distinguished road
Default

As a simple variant:
Code:
Sub Test()

Dim oRng As range
Dim vWd As Variant
 Dim vHi As Variant

    Set oRng = ActiveDocument.range
    With oRng.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .text = "width=^#^#^#"
        .Replacement.text = ""
        .MatchWildcards = False
        .Forward = True
        .Wrap = wdFindStop
        If .Execute Then vWd = oRng
    End With

    Set oRng = ActiveDocument.range
    With oRng.Find
        .text = "height=^#^#^#"
        If .Execute Then vHi = oRng
    End With

    With ActiveDocument.range.Find
        .text = "\<" & "img width" & "*" & "\>\<"
        .MatchWildcards = True
        .Execute Replace:=wdReplaceAll
    End With
MsgBox vWd & vbCr & vHi
lbl_Exit:
Set oRng = Nothing
End Sub
Reply With Quote
Reply



Similar Threads
Thread Thread Starter Forum Replies Last Post
How to hide/delete slides based on keyword in a separate text file based on AND|OR condition? rupd911 PowerPoint 0 02-22-2021 08:22 AM
Separate strings in a text file Auto Save Every Page(s) as a separate file, and name each new file automatically by the first line? commissarmo Word VBA 3 03-14-2015 12:53 AM
Separate strings in a text file Copying a part of a docx file as a separate file officeboy09 Word 6 09-26-2014 05:15 PM
Separate strings in a text file Search Multiple strings and create new word file subodhgupta Word 4 05-22-2014 03:34 AM
Separate strings in a text file update style of all strings available between two specific strings vikrantkale Word 1 03-28-2011 06:13 PM

Other Forums: Access Forums

All times are GMT -7. The time now is 07:16 PM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions Inc.
Search Engine Optimisation provided by DragonByte SEO (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
MSOfficeForums.com is not affiliated with Microsoft