Way to add prompt to this macro?

S

StargateFan

Hi! I was given a fantastic script on this board some time back which
I use all the time. It sorts the folders in the main Personal
Folders. This is the script here:

****************************************************************
Private Sub Application_Startup()
ExpandAllFolders
End Sub

Private Sub ExpandAllFolders()
On Error Resume Next
Dim Ns As Outlook.NameSpace
Dim Folders As Outlook.Folders
Dim CurrF As Outlook.MAPIFolder
Dim F As Outlook.MAPIFolder
Dim ExpandDefaultStoreOnly As Boolean

ExpandDefaultStoreOnly = True

Set Ns = Application.GetNamespace("Mapi")
Set CurrF = Application.ActiveExplorer.CurrentFolder

If ExpandDefaultStoreOnly = True Then
Set F = Ns.GetDefaultFolder(olFolderInbox)
Set F = F.Parent
Set Folders = F.Folders
LoopFolders Folders, True

Else
LoopFolders Ns.Folders, True
End If

DoEvents
Set Application.ActiveExplorer.CurrentFolder = CurrF
End Sub
Private Sub LoopFolders(Folders As Outlook.Folders, _
ByVal bRecursive As Boolean _
)
Dim F As Outlook.MAPIFolder

For Each F In Folders
Set Application.ActiveExplorer.CurrentFolder = F
DoEvents

If bRecursive Then
If F.Folders.Count Then
LoopFolders F.Folders, bRecursive
End If
End If
Next
End Sub
****************************************************************

The thing is that the process takes a bit of time, which is absolutely
no problem. But a lot of times, the folders don't need to be expanded
each and every time O2K is launched and/or I need to get in
immediately.

How can we add a prompt to run this macro rather than having it run
automatically when all macros are enabled, pls?

Thank you! :eek:D
 
S

Sue Mosher [MVP-Outlook]

Use a MsgBox statement:

Private Sub Application_Startup()
If MsgBox("Do you want to expand?", vbYesNo + vbQuestion, "Expand all?") Then
ExpandAllFolders
End If
End Sub
 
S

StargateFan

Use a MsgBox statement:

Private Sub Application_Startup()
If MsgBox("Do you want to expand?", vbYesNo + vbQuestion, "Expand all?") Then
ExpandAllFolders
End If
End Sub


WOW!! That is so kewl!! I just changed the text a bit to this:
"Private Sub Application_Startup()
If MsgBox("Do you want to run the macro to expand all the
folders... ?", vbYesNo + vbQuestion, "Expand all?") Then
ExpandAllFolders
End If
End Sub"

and then it ran the macro at triple speed! Pretty kewl.

Is there a "sleep" function in vb? I'd like to add a second or 2 or
sleep before the message box comes up. This box pops up a bit too
quickly after one presses okay to enable macros.

Thanks for this! :eek:D
 
S

StargateFan

WOW!! That is so kewl!! I just changed the text a bit to this:
"Private Sub Application_Startup()
If MsgBox("Do you want to run the macro to expand all the
folders... ?", vbYesNo + vbQuestion, "Expand all?") Then
ExpandAllFolders
End If
End Sub"

and then it ran the macro at triple speed! Pretty kewl.

Is there a "sleep" function in vb? I'd like to add a second or 2 or
sleep before the message box comes up. This box pops up a bit too
quickly after one presses okay to enable macros.

Thanks for this! :eek:D

[snip]

Oops, didn't check it out thoroughly. The macro still runs even when
we press NO!

:eek:(

How come? <g>

Thanks. :eek:D
 
S

Sue Mosher [MVP-Outlook]

Because I stupidly forgot the text for the MsgBox function's return value:

strMsg = "Do you want to run the macro to expand all the folders... ?"
If MsgBox(strMsg, vbYesNo + vbQuestion, "Expand all?") = vbYes Then
ExpandAllFolders
End If

--
Sue Mosher, Outlook MVP
Author of Microsoft Outlook 2007 Programming:
Jumpstart for Power Users and Administrators
http://www.outlookcode.com/article.aspx?id=54


StargateFan said:
WOW!! That is so kewl!! I just changed the text a bit to this:
"Private Sub Application_Startup()
If MsgBox("Do you want to run the macro to expand all the
folders... ?", vbYesNo + vbQuestion, "Expand all?") Then
ExpandAllFolders
End If
End Sub"

and then it ran the macro at triple speed! Pretty kewl.

Is there a "sleep" function in vb? I'd like to add a second or 2 or
sleep before the message box comes up. This box pops up a bit too
quickly after one presses okay to enable macros.

Thanks for this! :eek:D

[snip]

Oops, didn't check it out thoroughly. The macro still runs even when
we press NO!

:eek:(

How come? <g>

Thanks. :eek:D
 
S

StargateFan

Because I stupidly forgot the text for the MsgBox function's return value:

strMsg = "Do you want to run the macro to expand all the folders... ?"
If MsgBox(strMsg, vbYesNo + vbQuestion, "Expand all?") = vbYes Then
ExpandAllFolders
End If

<lol> Thank you! Works just perfectly now. Next time a colleague
comes around just as I've opened Outlook, I can press "no" before he
asks me something that requires an email response and we don't need to
wait for the macro to go through <g>. (That literally happened to me
a couple of weeks ago; freaks people out, this macro does <lol>. I
should have just chosen disable then re-opened O2K after, but didn't
think of that on the spur of the moment ... <g>).

Also, what's neat is that I can see the folders and they remain
expanded a few times Outlook opens, so it needs the macro run only
every few launches. Pretty neat O2K behaviour not to need to do it
each time.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top