Discussion:
Commandbar for Word Add-in
(too old to reply)
Alex Haan
2007-03-07 09:36:00 UTC
Permalink
I am working on a Word Add-in in Visual Studio 2005 (C#, .Net2.0). I know
this is a VB newsgroup, but it is the best i could find.

For this add-in i need a toolbar, which i create using
'Microsoft.Office.Core.CommandBar'. and '.CommandBarButton'. It does show up
nice and events are hooked up without a problem.

But I run into problems when I want to change the button state or when
en/disabling it. In specific conditions trying to do that will result in a
COMException. I can't remember the exact exception code, but searching around
returned an 'object missing' description.

My current theory is, that my references to these buttons become invalid
after a document change/close/etc. The events are still working though, for
which i can think of some reasons.
Currently I lookup the buttons on a document change
('Microsoft.Office.Interop.Word.ApplicationEvents4_DocumentChangeEventHandler') using:
'Microsoft.Office.Interop.Application .. CommandBars.FindControl()'. Which
is not ideal, since it requires that the captions of the buttons are unique.
And besides that, it is far from ideal anyway that this seems necessary.

Just like Jens Sauer in 'An AfterCloseEvent' I could use such an event too.
For now I'm just using the BeforeClose event, and mimic the 'do you want to
safe' dialog, so I can determine whether a document has really closed or not.
But this brings in localization issues. Ideally I'd like a 'DocumentClosing'
and 'DocumentSave' event.
Perry
2007-04-09 21:29:57 UTC
Permalink
Post by Alex Haan
But this brings in localization issues. Ideally I'd like a
'DocumentClosing'
and 'DocumentSave' event.
Can't do.

Alex, Word application events don't have a DocumentAfterClose()
or -AfterSave() event.
Nor is there a DocumentClosing() or a DocumentSave() event.

You'll have to work around, using the parameters and callbacks available in
the
DocumentBeforeClose() or DocumentBeforeSave() event ...

Automation clients have to deal with object- and event modell as present in
the automation server (MS Word in your case).
So you can't hookup your .NET application to these events.

--
Krgrds,
Perry

System:
Vista/Office Ultimate
VS2005/VSTO2005 SE
Post by Alex Haan
I am working on a Word Add-in in Visual Studio 2005 (C#, .Net2.0). I know
this is a VB newsgroup, but it is the best i could find.
For this add-in i need a toolbar, which i create using
'Microsoft.Office.Core.CommandBar'. and '.CommandBarButton'. It does show up
nice and events are hooked up without a problem.
But I run into problems when I want to change the button state or when
en/disabling it. In specific conditions trying to do that will result in a
COMException. I can't remember the exact exception code, but searching around
returned an 'object missing' description.
My current theory is, that my references to these buttons become invalid
after a document change/close/etc. The events are still working though, for
which i can think of some reasons.
Currently I lookup the buttons on a document change
'Microsoft.Office.Interop.Application .. CommandBars.FindControl()'. Which
is not ideal, since it requires that the captions of the buttons are unique.
And besides that, it is far from ideal anyway that this seems necessary.
Just like Jens Sauer in 'An AfterCloseEvent' I could use such an event too.
For now I'm just using the BeforeClose event, and mimic the 'do you want to
safe' dialog, so I can determine whether a document has really closed or not.
But this brings in localization issues. Ideally I'd like a
'DocumentClosing'
and 'DocumentSave' event.
Andrei Smolin
2007-05-10 14:30:01 UTC
Permalink
Hi Alex,
In specific conditions trying to do that will result in a COMException.
This is a usual problem with every Office app. You should re-connect your
controls when you get this exception. However, I'm afraid this is not the
only problem with those command bars and controls. You may want to check the
web-page mentioned below to find components that allow creating user
interface of your add-in in design-time (this particular problem is solved,
of course). As you may imagine, they are used on all combinations of Office
and Windows versions.
is not ideal, since it requires that the captions of the buttons are unique.
Use the Tag property to identify your controls.

Regards from Belarus,
Andrei Smolin
http://www.add-in-express.com/add-in-net/
I am working on a Word Add-in in Visual Studio 2005 (C#, .Net2.0). I know
this is a VB newsgroup, but it is the best i could find.
For this add-in i need a toolbar, which i create using
'Microsoft.Office.Core.CommandBar'. and '.CommandBarButton'. It does show up
nice and events are hooked up without a problem.
But I run into problems when I want to change the button state or when
en/disabling it. In specific conditions trying to do that will result in a
COMException. I can't remember the exact exception code, but searching around
returned an 'object missing' description.
My current theory is, that my references to these buttons become invalid
after a document change/close/etc. The events are still working though, for
which i can think of some reasons.
Currently I lookup the buttons on a document change
'Microsoft.Office.Interop.Application .. CommandBars.FindControl()'. Which
is not ideal, since it requires that the captions of the buttons are unique.
And besides that, it is far from ideal anyway that this seems necessary.
Just like Jens Sauer in 'An AfterCloseEvent' I could use such an event too.
For now I'm just using the BeforeClose event, and mimic the 'do you want to
safe' dialog, so I can determine whether a document has really closed or not.
But this brings in localization issues. Ideally I'd like a
'DocumentClosing'
and 'DocumentSave' event.
Loading...