- - PR -
excelとの連動がうまくいかない、、
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-28 17:54
いつもお世話になっております
VB.NETからエクセルファイルを開くプログラムを作りましたが、 どうも分からない現象が起こります。 <環境> Windows XP SP1 VB.NET 2003 office:2000,xp,2003 <困っていること> 「c:\temp\test.xlsをopenしますか?」に対して、 「ok」するとファイルが開かれます。 この状態で、c:\temp\の test.xlsをダブルクリックでopenしようとすると、 すでにopenされているtest.xlsがクローズされてしまいます。 タスクマネージャーのプロセスは残っています。 officeのバグのようですが、 ご存知の方、教えていただけると嬉しいです。 <コード> Dim excelApp As New Excel.Application Dim xlBooks As Excel.Workbooks Try excelApp.Workbooks.Open("c:\temp\test.xls") xlBooks = excelApp.Workbooks If MessageBox.Show("c:\temp\test.xls" & "を openしますか?", "確認", MessageBoxButtons.YesNo) = DialogResult.Yes Then excelApp.Visible = True xlBooks = Nothing Else xlBooks = Nothing excelApp.Quit() End If excelApp = Nothing Catch ex As Exception msgbox(ex.message) Finally If Not (xlBooks Is Nothing) Then xlBooks = Nothing If Not (excelApp Is Nothing) Then excelApp.DisplayAlerts = False excelApp.Quit() excelApp = Nothing End If GC.Collect() End Try | ||||
|
投稿日時: 2005-09-28 18:04
こんにちは、じゃんぬ です。
バグと決め付けたその理由をお聞かせ願えませんか? ちなみにコードですが、解放の仕方が間違ってます。 正しくはこうです。 COM オブジェクトを解放する # try 〜 finally の嵐。 # CodingHorror ですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-09-28 18:54
ご返事有難うございます。
>>バグと決め付けたその理由をお聞かせ願えませんか? すみません。勝手に思っただけです。 さっきは少し説明が足りなかったですが、 普通は、 @ファイルをダブルクリックする場合:ダブルクリックした瞬間、 すでに開かれているファイルが再表示される AファイルをDragdropでする場合:「読み込み専用」、「通知」、「キャンセル」のオ プションDialogboxがでる。 の仕様ですよね。 これと同じ動きでないとおかしいと思ったからです。 >>ちなみにコードですが、解放の仕方が間違ってます。 >>正しくはこうです。 アドバイス有難うございます。 | ||||
|
投稿日時: 2005-09-29 14:40
じゃんぬ様
少し内容追加です。 上記の内容でAの場合は、 普通の動きと同じです。 @のみは、closeされてしまう動きですね。 コメントいただけたら幸いです。 宜しくお願い致します。 | ||||
|
投稿日時: 2005-09-29 14:56
こんにちは、じゃんぬ です。
ファイルがロックされていれば、Close なんてされないと思ったのですが、 今、常駐先に来てますので環境がなかったりします... 申し訳ありません。(*_ _) # どなたか試して頂けません? # 漁ってみたのですが、それらしいレポートもなかったです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2005-09-29 15:10
NAL-6295です。
1.エクセルでファイルを開く(プログラムで操作するのではなく) 2.もう一回同じファイルを開く とすると、確かに、1で開いたファイルを閉じてから、開くという処理が行われます。 #今回の件とは関係ありませんが、確かエクセルって、パスが違ってもファイル名が同じだと同時に開けないですよね。 | ||||
|
投稿日時: 2005-09-29 17:05
スンちゃんパパです。
引用: ------------------------------------------------------------------------------- じゃんぬねっとさんの書き込み (2005-09-29 14:56) より: ファイルがロックされていれば、Close なんてされないと思ったのですが、 ------------------------------------------------------------------------------- プログラムのほうから明示的に、 ファイルにロックかけてテストやってみたいですが、、 どうするのか、よく分かりません。 どなたかご存知なら、教えてください。 引用: ------------------------------------------------------------------------------- NAL-6295さんの書き込み (2005-09-29 15:10) より: #今回の件とは関係ありませんが、確かエクセルって、パスが違ってもファイル名が同じだと同時に開けないですよね。 ------------------------------------------------------------------------------- そうですね。警告のDialogboxがでます。 | ||||
|
投稿日時: 2005-09-29 17:10
これって、閉じるっていうよりは落ちてるんじゃないです?
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |