Help us understand the problem. What is going on with this article?

Microsoft.Office.Interop.Excelのあれこれ

More than 5 years have passed since last update.

VB.NETもしくはC#でExcelを扱う際に、気を付けた方がいいことを適当にまとめます。

  • Microsoft.Office.Interop.Excel.WorkbookをNewしてはいけません。
vb.net
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#コードをシェルからコンパイルするには以下のようにします。
shell
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.dlloffice.dllを参照できるようにしとかないといけません。

http://msdn.microsoft.com/ja-jp/library/ms173186(v=vs.80).aspx

rbtnn
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away