Redirecting hard-deleted items in Outlook to Deleted Items with VBA -


as said in title i'm trying prevent harddeleting items in outlook. able catch operation in beforeitemmove-event. user given choice whether proceed or cancel. if decides proceed, item should moved deleted items folder , not deleted permanently.

my first idea cancel delete-operation setting cancel true , moving item deleted items folder. problem is, event fires again move operation, handed item-object seems broken somehow. tried setting userproperty on deleted item , moving it. in "second run" of event-sub when try read prop, runtime-error saying message not found.

can s.o. help?

here 2 event-handlers involved:

    private sub otasks_beforeitemmove(byval item object, byval moveto folder, cancel boolean)      dim shoulddelete boolean     shoulddelete = false      dim harddeleteperformed     harddeleteperformed = false       if (moveto nothing)         shoulddelete = true         harddeleteperformed = true     elseif (g_ons.compareentryids(moveto.entryid, odeleteditems.entryid))         shoulddelete = true     end if      dim otask taskitem     set otask = item         if shoulddelete         if (instr(1, otask.subject, "frist", vbtextcompare))             dim message string             message = "..."             dim res vbmsgboxresult              res = msgbox(message, vbokonly + vbcritical, "compliance-warnung!")             cancel = true         else             dim message2 string             message2 = "..."              dim res2 vbmsgboxresult              res2 = msgbox(message2, vbyesno + vbcritical, "compliance-warnung!")             if (res2 = vbyes)                 cancel = false                 if harddeleteperformed                     otask.move odeleteditems                     cancel = true                 end if             else                 cancel = true             end if         end if     end if end sub      private sub oappointments_beforeitemmove(byval item object, byval moveto folder, cancel boolean)           if inprogress             cancel = true             inprogress = false         else            dim shoulddelete boolean         shoulddelete = false          dim harddeleteperformed         harddeleteperformed = false           if (moveto nothing)             shoulddelete = true             harddeleteperformed = true         elseif (g_ons.compareentryids(moveto.entryid, odeleteditems.entryid))             shoulddelete = true         end if          dim oappointment appointmentitem         set oappointment = item           if shoulddelete             if (instr(1, oappointment.subject, "frist", vbtextcompare))                 dim message string                 message = "..."                 dim res vbmsgboxresult                  res = msgbox(message, vbokonly + vbcritical, "compliance-warnung!")                 cancel = true             else                 dim message2 string                 message2 = "..."                  dim res2 vbmsgboxresult                  res2 = msgbox(message2, vbyesno + vbcritical, "compliance-warnung!")                 if (res2 = vbyes)                     cancel = false                     if harddeleteperformed                         inprogress = true                         oappointment.move odeleteditems                         oappointment.save                         'inprogress = false                         cancel = true                     end if                 else                     cancel = true                 end if             end if         end if          end if      end sub 

the weird thing is, first eventhandler otasks works way want to. item moved deleted items , eventhandler called once. second oappointments called twice without tims suggestions inprogress-if-clause... , whats realy weird is, in second eventhandler, item gets moved drafts , not deleted items, odeleteditems-object not changed in between... ideas?

ps: hate vba!

i going suggest use

application.enableevents=false 

to temporarily disable events before moved itam, on checking seems there's no such thing in outlook vba. alternative use static variable allow move event skipped.

intested pseudocode:

sub someeventhandler()     static inprocess boolean     if inprocess exit sub     if isharddelete       inprocess = true       'move item       inprocess = false    end if  end sub 

Comments

Popular posts from this blog

c# - SharpSVN - How to get the previous revision? -

c++ - Is it possible to compile a VST on linux? -

url - Querystring manipulation of email Address in PHP -