LoginSignup
28
26

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-03-09

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

28
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
28
26