COM アドインの追加を自動化する方法
Office 文書用に独自の COM アドインを利用しているケースは多々あるかと思います。
それだけ、Office 文書内でのアプリケーション利用シーンは多々あるのかなと思います。
例えば、最近の案件では、UGS の 3D CAD のビューワーである、JT2GO COM アドインを VSTO の作業ウィンドウから、ファイルを選択して、Office 文書上で表示させるような内容がありました。
UGS の 3D CAD のビューワーである、JT2GOは以下から確認できます。
https://www.ugs.jp/plm_components/jtopen/index.html
VSTO の Word ソリューションとの連携イメージは以下のような感じです。
※作業ウィンドウ上の [参照ボタン] を選択すると以下のように、ファイルを開くダイアログボックスを表示させ、CAD ファイルを選択すると Word の表の中に COM アドインが挿入されるというものです。
このようなアドインのお作法はファイルを Office 文書上にドラッグアンドドロップするようなパターンやオブジェクトの挿入から
アドインファイルを選択して、文書の特定の箇所に表示するようなパターンになります。
このあたりの操作を作業ウィンドウを利用して効率化することも可能です。
ユーザーコントロール(作業ウィンドウ)に以下のようなコードを記述します。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'ファイルを開くダイアログの表示と既定のディレクトリの設定とファイル拡張子のフィルタをおこないます。
OpenFileDialog1.InitialDirectory = "C:\CAD"
OpenFileDialog1.FileName = ""
OpenFileDialog1.Filter = "JTファイル(*.jt)|*.jt|PLMXML ファイル(*.plmxml)|*.plmxml"
If OpenFileDialog1.ShowDialog = DialogResult.OK Then
'ファイルの文字を加工し、テキストボックスに表示します。
Dim fName As String
fName = OpenFileDialog1.FileName.ToString()
Dim strRmove As Integer = fName.LastIndexOf("\")
Dim fName2 As String = fName.Remove(0, strRmove + 1)
TextBox1.Text = fName2.ToString
'Word のコンテンツコントロール内に JT2GO のCOM アドインを挿入するコードを書きます。
'Range プロパティから、InlineShapes オブジェクトの AddOLEObject メソッドを利用します。
Globals.ThisDocument.RichTextContentControl1.Range.InlineShapes.AddOLEObject _(ClassType:="DirectModel.Document.jt", _
FileName:=fName, LinkToFile:=False, DisplayAsIcon:=False)
End If
End Sub
以上のような感じで Word のコンテンツコントロール内に挿入できますが、
特にコンテンツコントロールでなくても、特定の表の中に挿入することも可能です。
コンテンツコントロールは Word 2007 専用ですが、普通の表であれば、Word 2003 でも可能です。
参考資料としては以下があります。
AddOLEObject メソッド
https://msdn.microsoft.com/ja-jp/library/cc383070.aspx
AddOLEObject メソッド
https://msdn.microsoft.com/ja-jp/library/cc359142.aspx
以上、ご参考までに。