ネットで「NetOffice」なるツールがあることを知ったので、早速試してみました。
CodePlexのページによると、Microsoft Office製品にアクセスするための.NETラッパーアセンブリのようで、Officeのバージョンに関係なく簡単にコードが書けるとのこと。
ツール本体のダウンロードは上記ページの「download」リンクから行えますが、今回はプロジェクトウィザード等の開発支援機能が充実している「Developer Toolbox」を使ってサンプルアプリケーションを作成してみました。
下記ダウンロードページから「NetOffice Developer Toolbox 1.1.rar」ファイルをダウンロードして適当なフォルダに解凍します。
・NetOffice – MS Office in .NET – Download: NetOffice Release 1.4.1
http://netoffice.codeplex.com/releases/view/70943
出力された「NetOffice.DeveloperToolbox.exe」ファイルを実行し、「VS Project Wizard」タブからプロジェクトウィザードを実行します。
ウィザードの指示に従って進めていくと、最後にプロジェクトが作成されます。
作成されたプロジェクトをひな型として書いたコードが下記の通りです。
・Form1.vb
Imports NetOffice Imports Word = NetOffice.WordApi Imports NetOffice.WordApi.Enums Imports Office = NetOffice.OfficeApi Imports NetOffice.OfficeApi.Enums Imports VBIDE = NetOffice.VBIDEApi Imports NetOffice.VBIDEApi.Enums Public Class Form1 Public Sub New() InitializeComponent() End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim appWord As New Word.Application Dim docNew As Word.Document = appWord.Documents.Add() docNew.Range(0, 0).InsertAfter("Hello.") appWord.Visible = True MsgBox("Wordを終了します。") appWord.Quit(WdSaveOptions.wdDoNotSaveChanges) appWord.Dispose() End Sub End Class
Wordを操作して新規文書を追加後に文章入力、最後に文書を閉じるという簡単なプログラムですが、ビルドして実行したところ問題無く動作しました(Word 2013 CP)。
.NETからのOfficeオートメーションは後始末がかなり面倒臭かった印象があるのですが、どうやらそこら辺をNetOfficeが上手く処理してくれているようで(詳しく調べていないのでNetOfficeがどう処理しているかは私の方では未確認です)、文書を閉じた後にWordのプロセスが残ったままになる、といったこともありませんでした。
リボンをカスタマイズしたCOMアドインの作成も試してみましたが、こちらも特に問題無く、非常に簡単な手順で作成することができました。
ほんの少ししか触っていないのですが、”かなりお手軽でかなり便利なツール“という印象です。
Officeオートメーションで困った経験をお持ちの方、一度試してみてはいかがでしょうか?
ちなみに、NetOffice Developer Toolboxで作成したプロジェクトファイルをSharpDevelop 3.2でビルドしたところ、COMアドインとして問題無く動作しました。
この記事へのコメントはありません。