Delen via


VBA と VSTO の相互運用についての補足

以前のブログでご紹介した VBA と VSTO の相互運用について少し補足をしたいと思います。

 

VBA と VSTO の相互運用について(VSTOソリューションから VBA の呼び出し

VBA と VSTO の相互運用について(VBA からの VSTO ソリューションの呼び出し

                                                                                                     

本手法では言語依存があり、VBA から VSTO の呼び出しは C# ではお作法が異なります。

VB の場合はVBA から VSTO 呼び出しを実現する [EnableVbaCallers] プロパティを “True” にする必要があるのですが、C# のプロジェクトでは存在しません。

C# におきましての詳細は以下に記述がありますので、見てみてください。

具体的には VBA に公開する.NET のクラス COM オブジェクトから参照できるようにする属性を設定することなどが必要です。

手順が少し複雑ですので、この場では割愛しますが、手順では、COM オブジェクトと .NET のクラスの受け渡しのテクノロジがよくわかります。

また、VSTO からの VBA の呼び出しについては、VB も C# も変わらず、[ReferenceAssemblyFromVbaProject] プロパティを “True” に設定することで参照が可能です。

 

最近、同じ動作をするVSTOアプリについて、VB と C#の双方を用意しているのですが、C# だとデフォルトの引数の受け渡しがないため、面倒だったり、クラス間の値の受け渡しで結構、苦労しています。

もう少し、C# に詳しければ、苦労しないと思うのですが。(笑)

日々、勉強です。