t-hom’s diary

主にVBAネタを扱っているブログ…とも言えなくなってきたこの頃。

VBAでTreeViewControlのエクスポート・インポートするとレイアウトが崩れるバグ

treeviewの使い方に関しては、以下のページが詳しいのでそちらを参照されたし。

Office TANAKA - Excel VBA Tips[TreeViewコントロールの使い方]

さて、このTreeViewであるが、困ったことにフォームのエクスポートをすると壊れてしまい、張り直しが必要であることが分かった。

【再現方法】
1.中身を考えるのは面倒なので、上記のサイトからコードをいただいて、ExcelVBAのフォームで以下のTreeViewを作成した。
f:id:t-hom:20150213071244p:plain

2.このフォームをエクスポート。

3.別のExcelブックを作成し、そちらにフォームをインポートして実行すると、こうなる。
f:id:t-hom:20150213071510p:plain
その他のコントロールの参照状況が原因かとも思ったが、関係ないようだ。

4.直すには、いったんフォーム上のTreeViewを削除して、張り直せば良い。
(コードの修正は不要)

これ、日本のサイト・海外のサイトそれぞれ当たってみたが、どこにも掲載されていなくてハマった。ここみたいな無名なブログで紹介しても本当に必要な方にはなかなか届かないと思うので、現在、OfficeTANAKAにメールを送付し、事象の掲載を打診中。

なんでフォームのエクスポートなどという面倒な処理が必要になったかというと、実は使いたかったのはExcel VBAではなくOutlook VBAだったから。
困ったことに、Outlookではアドインを作るのにVisualStudioでないと作れない。コードの配布に難があるのだ。

やむなくエクスポートで対応しようとしたところ、偶然このバグに当たったというわけ。

まあ、あまり需要はないと思うがなんとかして欲しい。

当ブログは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。