プロが教える店舗&オフィスのセキュリティ対策術

vb.netからエクセルファイルを開きたいのですが、
オフィス2010をインストールしてから動作しなくなりました。

------------------------------------------------------------------------
Imports Microsoft.Office.Interop

Sub ExcelOpen()
Dim ExcApp As Excel.Application
Dim book As Excel.Workbook
Dim MyPath As String
MyPath = "C:\Excel.xlsm"

ExcApp = CreateObject("Excel.Application")
ExcApp.Visible = True
book = ExcApp.Workbooks.Open(MyPath)

ExcApp = Nothing
End Sub
------------------------------------------------------------------------

これで2007の時は起動してたのですが、2010だとダメです。
Microsoft Excel 14.0 Object Libraryに参照設定しています。

実行すると、 ExcApp.Visible = True の部分で

サーバーによって例外が返されました。 (HRESULT からの例外: 0x80010105 (RPC_E_SERVERFAULT))

となります。
どうすればいいでしょうか?ご教授よろしくお願いします。

A 回答 (1件)

一応そのコードでも表示する事は可能ですが、VB の.NET 系のバージョンから EXcel(Com オブジェクト)を操作する場合、Com オブジェクトの解放処理が必要になります。


VB6.0 であっても投稿されたコードでは、Excel のプロセスがタスクマネージャ上に残る事になりかねません。

今回の原因は、環境の問題で発生しているものと思われますが、詳しい環境がわかりませんので即答はできませんが、ご使用の Excel ファイルを新規のファイルを使って試してどうなるかとか。?
他のバージョンのExcel が同一環境にインストールされていないとか。
実行環境と開発環境が違っていないかと。
Excel 2010 が開発環境でなくサーバー等にインストールされていないかとか。
タスクマネージャ上にExcel.exe がいくつも存在していないかとか。
その辺を一度調べて見て下さい。
それでも解らない場合は、正確なエラーメッセージをキーにしてWEB上を検索してみて下さい。
貴方と同じ環境の事例があればその辺をチェックして見て下さい。

因みに、VB.NET というと VB.NET 2002 と VB.NET 2003 になります。
VB2005 以降は製品名に“.NET”の名を冠さないようになっています。
VS2010 とか書く人もおられますが、Visual Studio には、Visual Basic 以外の言語も含まれておりますので、この掲示板(Visual Basic)でバージョン(環境)として書く場合は、意味がありません。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2013/03/16 08:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!