- - PR -
VB.NETでExcelファイルをオープンさせようとするとオブジェクト参照がオブジェクトインスタンスに設定され
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-20 22:54
お世話になっています。
VB.NETにてcsvファイルをExcelで読み込み保存するプログラムを作成しています。 自分の開発環境では正常に動作したのですが、いざ開発環境が入っていないマシンで そのexeを実行したところ「91:オブジェクト参照がオブジェクトインスタンスに設定されていませんと出ました。 開発環境では発生しなかったのですが・・・ ご教授お願いいたします。 開発環境はVS2002、VS2003両方とも試しました。 開発環境が入っていないPCには.NETのインストーラーを使用してインストールしました。 ソースを添付します。 xlBook = xlBooks.Open(strCsvFile)で落ちていました。 −−−−−−−−−−以下 ソース−−−−−−−−−−−−−−−−−−− Dim xlApp As Excel.Application Dim xlBooks As Excel.Workbooks Dim xlBook As Excel.Workbook Dim xlsheet As Excel.Worksheet Dim xlsheets As Excel.Sheets Try xlApp = New Excel.Application() xlApp.DisplayAlerts = False '確認ダイアログを表示させない xlApp.Visible = False xlBooks = xlApp.Workbooks xlBook = xlBooks.Open(strCsvFile) xlsheets = xlBook.Sheets xlsheet = xlsheets(1) xlsheet.Name = "Sheet1" xlBook.SaveAs(Me.imeOutputPath.Text, fileformat:=43, CreateBackup:=False) xlApp.DisplayAlerts = True mfunExcelOutPut = True Catch ex As Exception MessageBox.Show(Err.Number & " : " & Err.Description) Exit Function Finally If xlsheet Is Nothing = False Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheet) End If If xlsheets Is Nothing = False Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlsheets) End If If xlBook Is Nothing = False Then xlBook.Close(False) System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) End If If xlBooks Is Nothing = False Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks) End If If xlApp Is Nothing = False Then System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) End If xlBook = Nothing xlBooks = Nothing xlApp = Nothing End Try | ||||
|
投稿日時: 2005-06-20 22:56
ソースを転記するのではなく、ヌルポの場合は、どの参照がヌルなのか、はっきりさせてください。
ソースを見ても解りません。 どこの、何が、設定されていないのか、きちんと原因をつかんでください。 _________________ | ||||
|
投稿日時: 2005-06-21 09:08
返答ありがとうございます。
xlBook = xlBooks.Open(strCsvFile)で落ちていました。 と書きましたので どの参照がなのかは分かると思いました。 xlBooksがヌルなんでしょうか? 宜しくお願いします。 | ||||
|
投稿日時: 2005-06-21 09:23
こんにちは、じゃんぬ です。
なんでしょうか? ではなく、ご自分で確かめましょう。 非開発環境でも確認する術はありますよね? MessageBox で出力するなどして。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-06-21 11:03
その行だけを見て、そう判断するのは危険。 可能性は全て捨てないでxlBookかxlBooksかstrCsvFileのどれかがNullであると考えて、すべて確認しましょう。 あと、本題とは関係ありませんが、せっかく例外をキャッチしてるんだから、Errオブジェクトで見るよりも例外の情報を参照した方が良いと思いますよ。 _________________ 「伝える」とは「人に云う」と書く。 http://d.hatena.ne.jp/NAL-6295/ | ||||
|
投稿日時: 2005-06-21 21:05
> xlBook = xlBooks.Open(strCsvFile)で落ちていました。
書いてあった。。。ごめんなさい。 > 開発環境はVS2002、VS2003両方とも試しました。 それは問題ではないでしょう。EXCELのバージョンの方が気になります。 また、Excelを起動しようとしているユーザーで、Excelが一度以上実行され、必要な設定が行われているでしょうか。 # Excelがインストールされていないというオチはないですよね? _________________ | ||||
|
投稿日時: 2005-06-21 21:36
Excelのバージョンを開発環境と実行環境で違っていたため (開発環境が2002で実行環境が2000だった) ExcelObjectLibralyのバージョンを10.0→9.0に置き換えて exeを再作成して動かしてみると動きました。 ありがとうございます。助かりました。 xlApp.visibleをTrueにして動かすとExcel.exeはちゃんと起動してから エラーMSGが出てたんでバージョンが違うことに気づくのが遅れました。 |
1