VB.NETもしくはC#でExcelを扱う際に、気を付けた方がいいことを適当にまとめます。
-
Microsoft.Office.Interop.Excel.Workbook
をNewしてはいけません。
Dim xls As New Microsoft.Office.Interop.Excel.Application()
Dim book As Microsoft.Office.Interop.Excel.Workbook ' <- New してはいけない!
ちょっと考えればわかることですが、もし誤るとなかなか気が付きません。下記のエラーメッセージからではなかなか原因を見つけることは困難です。(参考:Visual StudioでExcelが扱えない)
CLSID {00020819-0000-0000-C000-000000000046}
を含むコンポーネントのCOM クラス ファクトリを収得中に、次の
エラーが発生しました:80040154 クラスが登録されていません
(HRESULT からの例外:0x80040154 (REGDB_E_CLASSNOTREG))
-
Microsoft Visual Studio上で
Microsoft.Office.Interop
を扱いたい場合には、
メニューの「プロジェクト > 参照の追加 > COM > Microsoft Excel 14.0 Object Library 」で加えられます。 -
Microsoft Visual Studioを使えば、アセンブリの参照の追加は簡単ですが、シェルからコマンドで追加する場合にMicrosoft.Office.Interop.Excel.dllが見つからない場合とかあります。色々と調べてみると、Download Office XP Primary Interop Assemblies (PIAs) from Official Microsoft Download Centerからソフトウェアをインストールすると
* adodb.dll
* dao.dll
* Microsoft.Office.Interop.Access.dll
* Microsoft.Office.Interop.Excel.dll
* Microsoft.Office.Interop.FrontPage.dll
* Microsoft.Office.Interop.FrontPageEditor.dll
* Microsoft.Office.Interop.Graph.dll
* Microsoft.Office.Interop.Outlook.dll
* Microsoft.Office.Interop.OutlookViewCtl.dll
* Microsoft.Office.Interop.Owc.dll
* Microsoft.Office.Interop.PowerPoint.dll
* Microsoft.Office.Interop.Publisher.dll
* Microsoft.Office.Interop.SmartTag.dll
* Microsoft.Office.Interop.Visio.dll
* Microsoft.Office.Interop.Word.dll
* Microsoft.Vbe.Interop.dll
* mscomctl.dll
* msdatasrc.dll
* office.dll
* stdole.dll
を手に入れることができます。
- 実際にC#コードをシェルからコンパイルするには以下のようにします。
vimshell% ls
Microsoft.Office.Interop.Excel.dll*
office.dll*
a.cs
vimshell% csc /R:Microsoft.Office.Interop.Excel.dll ./a.cs
Microsoft (R) Visual C# Compiler Version 4.0.30319.17929
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.
vimshell% ./a.exe
vimshell%
a.csは下記にURLのコードを使っています。また、実行時にはMicrosoft.Office.Interop.Excel.dll
とoffice.dll
を参照できるようにしとかないといけません。
http://msdn.microsoft.com/ja-jp/library/ms173186(v=vs.80).aspx