バックグラウンド
VB によって作成された古い ActiveX コントロールがありました。この ActiveX コントロールを Excel ワークブックに追加し、いくつかのプロパティを設定しました。これらのプロパティは、ブックが保存されたときに保存されました。具体的には、VB コードで PropertyBag を使用して UserControl_WriteProperties 関数に保存されました。そのため、これらのプロパティはこれまでワークブックに保持されていました。
私の仕事
古いコントロールとの下位互換性を保つために、C++ を使用して新しい ActiveX コントロールを作成する必要があります。古い Excel ワークブックにある ActiveX コントロールに保持されているすべての情報が必要です。そこで、ActiveX コントロールに IPersistPropertyBag を実装します。
私の予想では、古い Excel ワークブックを開いたときに、PropertyBag を介してすべての情報を正しく取得する必要があります。
問題
Excel ワークブックに保存されている情報がストリーム形式であることがわかりました。新しい ActiveX コントロールに IPersistStreamInit を実装できますが、Excel ブックに保持されているストリームの形式がわかりません。そのため、Excel ワークブックに保存されている情報を取得できません。
VB コードで Propertybag 経由で保存された情報が、なぜ Stream 形式で保存されたのか疑問に思います。
質問
このシナリオで ActiveX コントロールに保持されているすべての情報を取得する方法はありますか? 2日間探しているのですが、方法が見つかりません。