vba - Search for messages with a loop -
the end result select start position , end position , keep in between these conditions , delete rest.
i.e. messages peter in extract.
start: peter@hello.co.za
end: end message.
there 12 different messages same start , end in pool of 3000 messages.
the program keep first out of 12 messages start , condition above, need 12.
sub findanddeleteeverythingelse() dim strfind1 string, strfind2 string dim rngdoc word.range, rngfind1 word.range dim rngfind2 word.range dim bfound boolean strfind1 = "you" strfind2 = "directly." set rngdoc = activedocument.content set rngfind1 = rngdoc.duplicate set rngfind2 = rngdoc.duplicate rngfind1.find .text = strfind1 bfound = .execute end if bfound rngfind2.find .text = strfind2 bfound = .execute end if bfound rngdoc.end = rngfind1.start rngdoc.delete rngdoc.start = rngfind2.end rngdoc.end = activedocument.content.end rngdoc.delete end if end if end sub
using code post cindy mentioned, adding few line.
this loose formatting of original data set. alternatively can open new word document , copy , past data across keep formatting.
sub somesub1() dim startword string, endword string dim find1strange range, findendrange range dim delrange range, delstartrange range, delendrange range application.screenupdating = true application.displayalerts = true application.screenupdating = false 'application.displayalerts = false 'setting ranges set find1strange = activedocument.range set findendrange = activedocument.range set delrange = activedocument.range 'set start , end find words here cleanup script startword = "from: yussuf ismail" endword = "kind regards" '======================================================================= '======================================================================= 'new code 'setting array dim messagenum long messagenum = 1 'can change 100 whatever want depending on how many emails expecting find, 100 cater 100 dim emails(100) variant '======================================================================= '======================================================================= 'starting find first word find1strange.find .text = startword .replacement.text = "" .forward = true .wrap = wdfindstop .format = false .matchcase = false .matchwholeword = false .matchwildcards = false .matchsoundslike = false .matchallwordforms = false 'execute find while .execute 'if found script if .found = true 'setting found range delstartrange set delstartrange = find1strange 'having these selections during testing benificial test script delstartrange.select 'setting findendrange remainder of document form end of startword findendrange.start = delstartrange.end findendrange.end = activedocument.content.end 'having these selections during testing benificial test script findendrange.select 'setting find end word findendrange.find .text = endword .execute 'if found script if .found = true 'setting found range delendrange set delendrange = findendrange 'having these selections during testing benificial test script delendrange.select end if end 'selecting delete range delrange.start = delstartrange.start delrange.end = delendrange.end 'having these selections during testing benificial test script '======================================================================= '======================================================================= 'new code 'adding foudn text array emails(messagenum) = delrange messagenum = messagenum + 1 '======================================================================= '======================================================================= delrange.highlightcolorindex = wdpink 'remove comment delete end if 'ending if find1strange .found = true loop 'ending while .execute loop end 'ending find1strange.find statement '======================================================================= '======================================================================= 'new code activedocument.content.delete dim emailsarrayposition long emailsarrayposition = 1 (messagenum - 1) ' -1 cater final increment activedocument.content.insertafter emails(emailsarrayposition) & vbnewline & vbnewline next emailsarrayposition '======================================================================= '======================================================================= end sub
Comments
Post a Comment