"Fredrik Wahlgren" <fredrik.p.wahlgren@mailbox.swipnet.se> wrote in message
news:eC5bWRPHFHA.1176@TK2MSFTNGP12.phx.gbl...
> "choice" <choice@discussions.microsoft.com> wrote in message
> news:0917B6C1-CB73-496F-8770-A3BC86E254B5@microsoft.com...
>> i have a macro that opens a webpage, 99.9% of the time it works, for some
>> reason this time the webpage did not open and i got a message that
>> says...Microsoft Excel is waiting for another application to complete an
> OLE
>> action.
>> is there any way to get around this or at least be able to save excel
> before
>> i close it?
>>
>> thanks in advance
>>
> This doesn't necessarily mean that your macro won't be able to open the
> webpage at some point. It's an OLE timeout. I don't know an easy way to
> change the default value to something higher. In C/C++ you can use the
> CoRegisterMessageFilter to avoid this message. Here's an article where
> this
> API call is used:
> http://www.adapdev.com/blogs/smccorm...ry,VS.NET.aspx
Hi Fredrik,
You can do the same thing in an Excel app like so:
Declare Function CoRegisterMessageFilter Lib "OLE32.DLL" _
(ByVal lFilterIn As Long, ByRef lPreviousFilter) As Long
Private mlPreviousFilter As Long
Sub Auto_Open()
CoRegisterMessageFilter 0&, mlPreviousFilter
''' Do your stuff here.
End Sub
Sub Auto_Close()
''' Restore the message filter.
CoRegisterMessageFilter mlPreviousFilter, 0&
End Sub
I use this all the time when my business logic is in a DLL and I'm
debugging into the DLL. Otherwise Excel times out in a manner exactly like
that described by the OP if I'm debugging for more than 30 seconds or so. It
works fine, but I don't fully understand why. I've never seen any value
other than zero returned to the mlPreviousFilter variable, so I don't know
what exactly is being unregistered and reregistered.
--
Rob Bovey, Excel MVP
Application Professionals
http://www.appspro.com/
* Take your Excel development skills to the next level.
* Professional Excel Development
http://www.appspro.com/Books/Books.htm
Bookmarks