I have a question regarding what happens when the user
hits the "X" (on the top right hand of the Word Window)
to close a Word application. Using

dim wapp as new word.application()

It seems pretty clear that if the user clicks on the X
then the statement (wapp is nothing) should be true and
this is not the case.

*CODE*****
If Not (wapp Is Nothing) Then

If wapp.Documents.Count > 0 Then
Dim intResponse As Integer

If myDoc.Saved <> True Then
...more code
****end code*************

Programs execution executes the code inside the if
statement above and it crashes on wapp.documents.count>0
The Following error is thrown "the RPC server is
unavailable".

NOTE: Please note that my program initially opens a Word
application and types stuff into it. I then manually
close the Word Application (as any curious client might)
and then i run my program again which runs the code
snippet above. This crashing is what i am trying to avoid
and i am kinda' stuck cause i don't know what the X does
in the first place and why is wapp not null when the x is
pressed. THanks for the help.


Gabriel

Re: Word Application Object by martinique

martinique
Mon Aug 11 22:49:43 CDT 2003

If you use:

dim wapp as new word.application()

then wapp will *never* evaluate as nothing. The whole point of the 'new'
keyword is that *any* reference to the object will cause it to instantiate,
if it isn't instantiated already.Never declare an object 'as new'.

Separately, if you create a reference to an object, then the object will
continue to exist as long as the reference exists (that's in the nature of
object references) -- objects continue to exist as long as there are
references to them. So the user clicking the application Close button will
not normally set your object reference to nothing. Word may disappear as far
as the user is concerned, but still exist as an object in memory.





"Gabriel RIvera" <gjr8@cornell.edu> wrote in message
news:00c401c36081$865f0e10$a001280a@phx.gbl...
> I have a question regarding what happens when the user
> hits the "X" (on the top right hand of the Word Window)
> to close a Word application. Using
>
> dim wapp as new word.application()
>
> It seems pretty clear that if the user clicks on the X
> then the statement (wapp is nothing) should be true and
> this is not the case.
>
> *CODE*****
> If Not (wapp Is Nothing) Then
>
> If wapp.Documents.Count > 0 Then
> Dim intResponse As Integer
>
> If myDoc.Saved <> True Then
> ...more code
> ****end code*************
>
> Programs execution executes the code inside the if
> statement above and it crashes on wapp.documents.count>0
> The Following error is thrown "the RPC server is
> unavailable".
>
> NOTE: Please note that my program initially opens a Word
> application and types stuff into it. I then manually
> close the Word Application (as any curious client might)
> and then i run my program again which runs the code
> snippet above. This crashing is what i am trying to avoid
> and i am kinda' stuck cause i don't know what the X does
> in the first place and why is wapp not null when the x is
> pressed. THanks for the help.
>
>
> Gabriel
>



Re: Word Application Object by Gabriel

Gabriel
Wed Aug 13 18:17:09 CDT 2003

The truth is that i have been using (after previous mail)

dim wapp as word.application()

and then

wapp= new word.application()

But even using this method, if the user closes the word
application the statement

if (wapp is nothing) then
end if

statement never executes.


Also forgetting about this question above, do i have to
manually dispose or set to nothing the word.application
object when i am done or is this done by VB when user
closes the form?

Sorry about all the questions, but given that VB does a
lot of stuff for you, i get stuck not knowing what i
should and should not do.

thanks again martinique,

gabriel


>-----Original Message-----
>If you use:
>
>dim wapp as new word.application()
>
>then wapp will *never* evaluate as nothing. The whole
point of the 'new'
>keyword is that *any* reference to the object will cause
it to instantiate,
>if it isn't instantiated already.Never declare an
object 'as new'.
>
>Separately, if you create a reference to an object, then
the object will
>continue to exist as long as the reference exists
(that's in the nature of
>object references) -- objects continue to exist as long
as there are
>references to them. So the user clicking the
application Close button will
>not normally set your object reference to nothing. Word
may disappear as far
>as the user is concerned, but still exist as an object
in memory.
>
>
>
>
>
>"Gabriel RIvera" <gjr8@cornell.edu> wrote in message
>news:00c401c36081$865f0e10$a001280a@phx.gbl...
>> I have a question regarding what happens when the user
>> hits the "X" (on the top right hand of the Word Window)
>> to close a Word application. Using
>>
>> dim wapp as new word.application()
>>
>> It seems pretty clear that if the user clicks on the X
>> then the statement (wapp is nothing) should be true
and
>> this is not the case.
>>
>> *CODE*****
>> If Not (wapp Is Nothing) Then
>>
>> If wapp.Documents.Count > 0 Then
>> Dim intResponse As Integer
>>
>> If myDoc.Saved <> True Then
>> ...more code
>> ****end code*************
>>
>> Programs execution executes the code inside the if
>> statement above and it crashes on
wapp.documents.count>0
>> The Following error is thrown "the RPC server is
>> unavailable".
>>
>> NOTE: Please note that my program initially opens a
Word
>> application and types stuff into it. I then manually
>> close the Word Application (as any curious client
might)
>> and then i run my program again which runs the code
>> snippet above. This crashing is what i am trying to
avoid
>> and i am kinda' stuck cause i don't know what the X
does
>> in the first place and why is wapp not null when the x
is
>> pressed. THanks for the help.
>>
>>
>> Gabriel
>>
>
>
>.
>

Re: Word Application Object by martinique

martinique
Wed Aug 13 23:37:23 CDT 2003

Yes, you must manually set the object to nothing. VBA will not do it for
you. (the object may be invalid, but it won't be nothing). If you're not
currently doing that, that's why your (wapp is nothing) doesn't work.




"Gabriel Rivera" <gjr8@cornell.edu> wrote in message
news:052e01c361f1$04f84d20$a601280a@phx.gbl...
> The truth is that i have been using (after previous mail)
>
> dim wapp as word.application()
>
> and then
>
> wapp= new word.application()
>
> But even using this method, if the user closes the word
> application the statement
>
> if (wapp is nothing) then
> end if
>
> statement never executes.
>
>
> Also forgetting about this question above, do i have to
> manually dispose or set to nothing the word.application
> object when i am done or is this done by VB when user
> closes the form?
>
> Sorry about all the questions, but given that VB does a
> lot of stuff for you, i get stuck not knowing what i
> should and should not do.
>
> thanks again martinique,
>
> gabriel
>
>
> >-----Original Message-----
> >If you use:
> >
> >dim wapp as new word.application()
> >
> >then wapp will *never* evaluate as nothing. The whole
> point of the 'new'
> >keyword is that *any* reference to the object will cause
> it to instantiate,
> >if it isn't instantiated already.Never declare an
> object 'as new'.
> >
> >Separately, if you create a reference to an object, then
> the object will
> >continue to exist as long as the reference exists
> (that's in the nature of
> >object references) -- objects continue to exist as long
> as there are
> >references to them. So the user clicking the
> application Close button will
> >not normally set your object reference to nothing. Word
> may disappear as far
> >as the user is concerned, but still exist as an object
> in memory.
> >
> >
> >
> >
> >
> >"Gabriel RIvera" <gjr8@cornell.edu> wrote in message
> >news:00c401c36081$865f0e10$a001280a@phx.gbl...
> >> I have a question regarding what happens when the user
> >> hits the "X" (on the top right hand of the Word Window)
> >> to close a Word application. Using
> >>
> >> dim wapp as new word.application()
> >>
> >> It seems pretty clear that if the user clicks on the X
> >> then the statement (wapp is nothing) should be true
> and
> >> this is not the case.
> >>
> >> *CODE*****
> >> If Not (wapp Is Nothing) Then
> >>
> >> If wapp.Documents.Count > 0 Then
> >> Dim intResponse As Integer
> >>
> >> If myDoc.Saved <> True Then
> >> ...more code
> >> ****end code*************
> >>
> >> Programs execution executes the code inside the if
> >> statement above and it crashes on
> wapp.documents.count>0
> >> The Following error is thrown "the RPC server is
> >> unavailable".
> >>
> >> NOTE: Please note that my program initially opens a
> Word
> >> application and types stuff into it. I then manually
> >> close the Word Application (as any curious client
> might)
> >> and then i run my program again which runs the code
> >> snippet above. This crashing is what i am trying to
> avoid
> >> and i am kinda' stuck cause i don't know what the X
> does
> >> in the first place and why is wapp not null when the x
> is
> >> pressed. THanks for the help.
> >>
> >>
> >> Gabriel
> >>
> >
> >
> >.
> >



Re: Word Application Object by Gabriel

Gabriel
Thu Aug 14 18:57:43 CDT 2003

The problem is...when do i set the object to nothing?
I mean, I know when i want to set it to nothing but i am
not sure how to deal with the event handlers and so.

My program does basically this: It loads a form up and
then the user clicks on buttons,check boxes,drop downs
(data collection stuff) and eventually when he is done he
presses a button(button MAKEREPORT) Word opens and some
custom automated text prints out. THe user can then set
the data input forms to their default(empty ) values and
and start again.If he presses MAKEREPORT once again the
application checks if there is a documents open.(if so it
asks for the user to save and saves it if the user so
desires)
As you see i use the word application over and over again
and i would only like to discard the object when the user
completely exits my application (form). OR the other
problem is that once the user automates his/her word
documents he proceeds to close the word application and
go back again to my program. THis is when the error is
caused. Since wapp has been closed (at least in part..and
it is not null but the object has errors in it so i can't
use it or know when the user has closed the application)
RIght now i took care of this by executing

wapp=new word.application

in a try catch statement for the error that happens when
the user closes the word application. Though this is
cheap coding(which i would like to hear if you have any
new ideas), using event handlers such as
DocumentBeforeCLose,autoclose,docuement_close, proved
helpless.

So now, I guess I go back to the first question
again...So lets set the wapp to nothing when the user
wants to exit my form. How do i do this?Should the
garbage collector take care of wapp when my form closes?
How do i know when the user clicks on the X for my
program? And if i have to set the wapp object to nothing
why don't i have to set say all objects used to nothing
(or do I) say

Dim tmp as int32
tmp=8*9
does this mean i also have to set tmp to nothing and
every little bit of memory i used along the way?


Again thanks for the crash course Martinique.

-g

>-----Original Message-----
>Yes, you must manually set the object to nothing. VBA
will not do it for
>you. (the object may be invalid, but it won't be
nothing). If you're not
>currently doing that, that's why your (wapp is nothing)
doesn't work.
>
>
>
>
>"Gabriel Rivera" <gjr8@cornell.edu> wrote in message
>news:052e01c361f1$04f84d20$a601280a@phx.gbl...
>> The truth is that i have been using (after previous
mail)
>>
>> dim wapp as word.application()
>>
>> and then
>>
>> wapp= new word.application()
>>
>> But even using this method, if the user closes the word
>> application the statement
>>
>> if (wapp is nothing) then
>> end if
>>
>> statement never executes.
>>
>>
>> Also forgetting about this question above, do i have to
>> manually dispose or set to nothing the word.application
>> object when i am done or is this done by VB when user
>> closes the form?
>>
>> Sorry about all the questions, but given that VB does a
>> lot of stuff for you, i get stuck not knowing what i
>> should and should not do.
>>
>> thanks again martinique,
>>
>> gabriel
>>
>>
>> >-----Original Message-----
>> >If you use:
>> >
>> >dim wapp as new word.application()
>> >
>> >then wapp will *never* evaluate as nothing. The whole
>> point of the 'new'
>> >keyword is that *any* reference to the object will
cause
>> it to instantiate,
>> >if it isn't instantiated already.Never declare an
>> object 'as new'.
>> >
>> >Separately, if you create a reference to an object,
then
>> the object will
>> >continue to exist as long as the reference exists
>> (that's in the nature of
>> >object references) -- objects continue to exist as
long
>> as there are
>> >references to them. So the user clicking the
>> application Close button will
>> >not normally set your object reference to nothing.
Word
>> may disappear as far
>> >as the user is concerned, but still exist as an object
>> in memory.
>> >
>> >
>> >
>> >
>> >
>> >"Gabriel RIvera" <gjr8@cornell.edu> wrote in message
>> >news:00c401c36081$865f0e10$a001280a@phx.gbl...
>> >> I have a question regarding what happens when the
user
>> >> hits the "X" (on the top right hand of the Word
Window)
>> >> to close a Word application. Using
>> >>
>> >> dim wapp as new word.application()
>> >>
>> >> It seems pretty clear that if the user clicks on
the X
>> >> then the statement (wapp is nothing) should be true
>> and
>> >> this is not the case.
>> >>
>> >> *CODE*****
>> >> If Not (wapp Is Nothing) Then
>> >>
>> >> If wapp.Documents.Count > 0 Then
>> >> Dim intResponse As Integer
>> >>
>> >> If myDoc.Saved <> True Then
>> >> ...more code
>> >> ****end code*************
>> >>
>> >> Programs execution executes the code inside the if
>> >> statement above and it crashes on
>> wapp.documents.count>0
>> >> The Following error is thrown "the RPC server is
>> >> unavailable".
>> >>
>> >> NOTE: Please note that my program initially opens a
>> Word
>> >> application and types stuff into it. I then manually
>> >> close the Word Application (as any curious client
>> might)
>> >> and then i run my program again which runs the code
>> >> snippet above. This crashing is what i am trying to
>> avoid
>> >> and i am kinda' stuck cause i don't know what the X
>> does
>> >> in the first place and why is wapp not null when
the x
>> is
>> >> pressed. THanks for the help.
>> >>
>> >>
>> >> Gabriel
>> >>
>> >
>> >
>> >.
>> >
>
>
>.
>