» 開発メモのブログ記事


VisualStudioでVSTOを使ったプロジェクトを開いていて、PCが強制終了された場合、あるいは、休止状態から復帰した場合に、リボンインターフェースでエラーがよく出ます。
無視して続けると、問題なく表示されますが、上書き保存しても、次回以降プロジェクトを開いた時に毎回同じ状態になります。
何とかならないか?

追記(2011/08/19)

ちなみに、リボンインターフェースのファイルには悪いところはありません。
新たな編集を加えると治るようです。(知らないうちにこのエラー出なくなっていた。)

追記(2011/08/20)

無視して続行すると、オブジェクトイベントの関連づけが全て消えてしまうことが発覚しました。

Private Sub Button1_Click(~省略~) Handles Button1.Click
  ~ 中略 ~
End Sub

上記のイベントプロシージャのHandles の部分が消えます。

とにかく毎回Handles 句を記述し直すのもアホらしいので、どこに原因があるのかを調べてみました。
結論からいうと、リボンインターフェースの記述自体には特に問題はありません。

小生の行った作業は次の通り。
(1)リボンインターフェースのプロシージャを全て削除する
 Imports句とPublic Class HogeHoge ~ End Classの宣言は残します。
 自分が追加したプロシージャのみ削除します。
 なお、実際には削除ではなく、メモ帳などにコピーを残しておきます。

(2)削除したプロシージャを一つずつ復活させていく。
 プロシージャを復活させる都度、リボンインターフェースにエラーが表示されないことを確認します。

(3)エラーが確認された場合は、問題のプロシージャを精査します。
 小生の場合は、プログラム記述時に、処理内容別に#region句で区切るので、#region句毎に復活させていったところ、右クリックメニューを生成するプロシージャを復活させた時にエラーがでました。
 このプロシージャには、リボンインターフェースとは関係なく自分でオブジェクトを生成し、WithEvents句で宣言したオブジェクトのイベントをHandles句で記述していました。
 これが原因なのかと考え、今度は、#Region句単位ではなく、プロシージャ単位でコードを復活させたら、何事もなかったかのようにエラーは出なくなりました。

結局のところ、原因はわかりません。


先日製作したEasyPrint for Word 2010を Word2007でも使えるようにするために、VS2010とWord2007環境(.NetFramework3.5)で移植している最中だ。

しかしながら、エラーが発生。

発生箇所は、ThisAddInクラスだ。
ちなみに、ThisAddInクラスには一切手を加えていない。

Fig.1 ThisAddInクラスのエラー



Fig.2 ThisAddInクラスのエラー

VS2010+Word2010環境では、Windowsインストーラーでを作成する時に.NetFramework4.0でアドインを作成していると、うまく動かないことは以前のブログにも書いたとおりだ。

それを踏まえて今回は.NetFramework3.5 で最初から作っていたのだが、これが仇になったようだ。
.NetFramework3.5では、アドイン自体がエラーになってしまうのだ。

これを.NetFramework4.0にすると、このエラーは消える。
そんなわけで、今は.NetFramework4.0でアドインを作成している。

WindowsインストーラーでのSetupファイル作成時にまた困りそうな予感が…^^;


VSTOでアドインの開発をしていて、調べ物をすると、C#のサンプルコードしかなかったりすることがあります。
そんなときは、C#のコードをVBに変換してくれるWEBサービスを利用します。

http://www.developerfusion.com/tools/convert/csharp-to-vb/

ブログ検索

ブログカレンダー

2017年9月
« 10月    
 12
3456789
10111213141516
17181920212223
24252627282930

Yahoo!ショッピング

アクセスカウンタ

  • 本日(回): 15
  • 週間(回): 411
  • 合計(回): 273599

Since 2011/07/01