- ベストアンサー
VB.netでEXCEL起動ができない原因は何が考えられますか?
- VB.netで作成したプログラムで、EXCELを起動する際に問題が発生しています。エクセルが正常に開かれない現象が発生し、タイトルバー、メニューバー、ステータスバーしか表示されません。質問者のPCでは問題なく起動するが、特定のPCでのみ発生しています。
- VB.net2008で作成したプログラムで、データをエクセルに出力し、エクセルを表示する仕組みを作成しています。初めは正常にエクセルが開かれていたが、ある時突然エクセルが開かれなくなり、タイトルバー、メニューバー、ステータスバーしか表示されません。特定のPCでのみ発生しており、他のPCでは正常に起動しています。
- VB.netで作成したプログラムで、データをエクセルに出力し、エクセルを開こうとしていますが、特定のPCでエクセルが正常に開かれません。エクセルのタイトルバー、メニューバー、ステータスバーのみが表示され、中身が表示されません。問題は質問者のPCでは発生しておらず、他のPCでも正常に起動することから、特定のPCの環境に問題がある可能性が高いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
前回も回答しましたが、オブジェクトの解放漏れだと思います。 タスクマネージャで確認しましたか? > 開きかけたEXCELを一度終了させ、 これでプロセスを終了させることになりますから、次回から 正常に起動します。 > やはり、別のPCでのみ正常に開かない状態で、うちのPCでは開きます。 > また質問にも書かせて頂きましたが、以前は開いていたのです。 そういう事も経験しております。真偽は分かりませんが、Windows Update で動きが変わったとかも聞いたことがあります。Excel への 命令順(プログラムの行を入替えただけ)でも変わった事があります。 もともと、解放処理自体が環境依存みたいな結果を出す上に不安定です。 とにかく、完全に解放漏れを無くす事で解決できるかと思います。 http://hanatyan.sakura.ne.jp/dotnet/Excel08.htm
その他の回答 (1)
- OMEGAT
- ベストアンサー率70% (455/642)
その問題のパソコンで、Excelブックをダブルクリックしたときには、正常に開くことが出来ますか。 過去の質疑の状況もわからないし、VB.NET 2008でどのようにExcelを起動されているのかにも分からないのですが、上記操作でも正常に開かないようであればExcelを起動し[ツール][オプション][全般]タブの「他のアプリケーションを無視する」にチェックが付いていないか確認し、もし付いていればチェックをはずして[OK]してみてください。 [参考] Excel 2003、Excel 2002、Excel 2000 でファイルをダブルクリックしても開くことができない場合の対処方法 http://support.microsoft.com/kb/880537/ja/
補足
ご回答ありがとうございます。 過去の経緯につきましては http://okwave.jp/qa/q6236267.html になります。 説明不足で申し訳ありません。 問題のPCでEXCELの起動は正常に可能です。 VBでの作成方法は Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks ・ ・ データ作成 データ保存 EXCEL終了 オブジェクトの開放(System.Runtime.InteropServices.Marshal.ReleaseComObject(xxxx) (使用分) Process.Startで作成したExcelファイルを指定して起動です。 また、ご指摘いただきました“他のアプリケーションを無視する”については過去にご指摘いただき 確認してみましたが、チェックされていませんでした。 開きかけたEXCELを一度終了させ、アプリで作成されたEXCELをダブルクリックすると正常に起動さ れます。 よろしくお願いいたします。
お礼
ご指摘の件、確認してみました。 COMオブジェクトの開放ができていませんでした。 (作成したときには確認したのですが、その後動作しなくなり、修正したときに開放できなくなって いたものと思われます) しかし、開放されていないことが判りましても、今度は開放ができません。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlBook As Excel.Workbook = xlBooks.Add Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) Dim xlRange As Excel.Range Dim xlCells As Excel.Range = xlSheet.Cells 処理 System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlCells) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlRange) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlSheet) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlSheets) xlBook.Close() System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlBook) System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlBooks) xlApp.Quit() System.Runtime.InteropServices.Marshal.FinalReleaseComObject(xlApp) で行っているのですが、EXCELは残ったままになります。 ご指摘いただきましたHPは以前より参照していますが、特に変な参照はしていないと 思うのですが・・・・(今回も修正していますが) この状態ですとシステムを終了させるとEXCELは消えます。 ガベージコレクタを明示的に指定しても変わりません。 また、SaveAsを使用すると、システムを終了させても残る状態です。 まったく原因がわかりません。 参考になるサイトでもあれば教えていただきたいのですが。 よろしくお願いいたします。
補足
ご回答ありがとうございます。 ソースを再度、確認してみます。