24
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
24
Help us understand the problem. What are the problem?