• ベストアンサー

Excelが終了しません

VB初心者です。 以下のコード(実際のものと根幹は同じです)でExcelを扱いたいのですが、 終了の処理をしている(つもり)にも関わらず、EXEを終了するまで Excelが終了してくれません。 画面上は終了しているのですが、EXE起動中にxlsファイルを開くとシートを表示してくれないのです。 どなたか正しい方法を教えてください。 Dim xlbook As Excel.Workbook Dim xlsheet As Sheets Dim H As Integer Dim W As Integer H = ImNumber1.Text W = ImNumber2.Text Set xlbook = CreateObject("Excel.sheet") Set xlsheet = xlbook.Worksheets Workbooks.Open App.Path & "\稼動確認.xls" Worksheets("稼働確認書").Activate xlbook.Application.Visible = True xlsheet.Application.Cells(H, W).Value = ImText1.Text ActiveWorkbook.Save Workbooks.Close xlbook.Application.Quit Set xlbook = Nothing Set xlsheet = Nothing

質問者が選んだベストアンサー

  • ベストアンサー
  • ykymtkt
  • ベストアンサー率51% (14/27)
回答No.3

回答としては下記のコードです。 Dim XlsApp As Excel.Application Dim XlsBook As Excel.Workbook Dim XlsSheet As Excel.Worksheet Set XlsApp = New Excel.Application Set XlsBook = XlsApp.Workbooks.Open(App.Path & "\稼動確認.xls") Set XlsSheet = XlsBook.ActiveSheet XlsSheet.Range("A1").Value = "Data" XlsBook.Save XlsApp.Quit Set XlsSheet = Nothing Set XlsBook = Nothing Set XlsApp = Nothing まず、質問に記載されているコードでは以下の部分が間違っています。 >Set xlsheet = xlbook.Worksheets >Workbooks.Open App.Path & "\稼動確認.xls" xlsheet にはきちんとOPENしたワークブックへの参照を代入します。 >xlbook.Application.Visible = True >xlsheet.Application.Cells(H, W).Value = ImText1.Text ワークブックやワークシートなど下位のオブジェクトから上位のオブジェクト Excel.Application を参照してはいけません。 また、回答のコードではVisibleプロパティをTrueにしていませんが、 Excelを表示させるときには XlsApp.Quit を削除して XlsApp.Visible = True XlsApp.UserControl = True に変更します。 以上です。

bambooman
質問者

お礼

お返事ありがとうございました。 残念ながら問題にしていた部分は解決できなかったのですが、 その他の部分で大変参考になりました。 またよろしくお願いいたします。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

xlBook.Close xlApp.Application.Quit Set xlBook = Nothing Set xlApp = Nothing かな?

参考URL:
http://www.int21.co.jp/pcdn/
bambooman
質問者

お礼

お返事ありがとうございます。 ActiveWorkbook.Application.Quit xlApp.Application.Quit Set xlbook = Nothing Set xlsheet = Nothing Set xlApp = Nothing なども試してみたのですが、やはり駄目でした。 ACCESS97→Excel97の一括コンバートPGなので、連続した変換はなく 強制的にEXEを閉じてしまっても問題はないと思うのですが・・・・。 今後のことを考えるとやはり気になります。

bambooman
質問者

補足

質問では「Excelが終了しない」と書いたのですが、 症状として「開きはしないがファイル削除は共有違反せずにできる」ということなので、もしかしたら問題点はクローズのやり方だけではないのかもしれませんね。

すると、全ての回答が全文表示されます。
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Sheets Dim H As Integer Dim W As Integer H = ImNumber1.Text W = ImNumber2.Text Set xlApp = CreateObject("Excel.Application") ExcelApp.Workbooks.Open "\稼動確認.xls" Set xlBook = ExcelApp.Workbooks("稼動確認.xls") Set xlSheet = xlBook.Worksheets (略) Set xlBook = Nothing Set xlSheet = Nothing xlApp.Quit Set xlApp = Nothing で、多分OK

bambooman
質問者

お礼

早速のご回答、ありがとうございました。 上記コードにより今までは何故か一度空のOpen~Quitを走らせなければ書き込みができないという不細工なコードを直すことができました。 しかし、やはりEXEを終了させない限りは ファイル(このプログラムで使用した対象xlsファイルに限らず、すべてのxlsファイル)を開こうとするとツールバーしか表示されないのです。 他に何か対処法は御座いませんでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A