指定のExcelを開くには?

解決


トス  2008-11-27 10:56:43  No: 140893  IP: 192.*.*.*

VB2008で指定したExcelファイルを開くコードを作成しましたが、
指定のExcelは開かず、新規Bookが開いて
xlbookのところで、「COMExceptionはハンドルされませんでした」のエラーが出てしまいます。
環境は、VB2008,Excel2002です。
解決方法を教えてください。

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Open("パス、ファイル名")
xlSheet = xlBook.Worksheets("シート名")

編集 削除
魔界の仮面弁士  2008-11-27 12:48:28  No: 140894  IP: 192.*.*.*

提示されたコードは、COM オブジェクトの扱いに問題がありますが、
それはとりあえず横に置いといて…

目的が Excel ファイルを開くだけなのであれば、Process.Start を
使った方が良いのでは無いでしょうか。

編集 削除
トス  2008-11-27 13:17:06  No: 140895  IP: 192.*.*.*

アドバイスありがとうございます。

言足らずでしたが、最終的にやりたいことは、
Excelを開いておいて、TextBoxの値と、シリアル通信で受信したデータを
指定したセルにそれぞれ入力したいのです。
とりあえず導入部として、Excelを開くところから着手してみました。

編集 削除
YuO  2008-11-27 15:53:35  No: 140896  IP: 192.*.*.*

COMException.Messageに理由が入っていると思うのですが。
発生したCOMExceptionのMessageプロパティの値はどうなっていますか。

編集 削除
トス  2008-11-27 16:13:44  No: 140897  IP: 192.*.*.*

YuOさん
ド素人ですので、「Messageプロパティの値」がどれのことか解りませんが、
発生したエラーの内容を示しますと以下の通りです。

COMExceptionはハンドルされませんでした。
メンバが見つかりません。(HRESULTからの例外:0x80020003)

編集 削除
トス  2008-11-28 13:09:42  No: 140898  IP: 192.*.*.*

以下のコードにしたことで、指定のExcelは開いたのですが、
1度ファイルが開いて、同じファイルがまた開き(使用中のため読み取り専用で)、さらに新規Bookが開いてしまいます。
指定のファイルだけを開くにはどうしたらよいのでしょうか?

Dim xlApp
Dim xlBook
Dim xlSheet

xlApp = CreateObject("Excel.Application")
xlBook = xlApp.Workbooks.Open("パス・ファイル名")
xlSheet = xlBook.Worksheets("シート名")

xlApp.Visible = True
xlSheet.Activate()

編集 削除
トス  2008-11-28 14:08:40  No: 140899  IP: 192.*.*.*

自己解決しました。
ありがとうございました

編集 削除