OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

Excelが終了しません

  • 困ってます
  • 質問No.133035
  • 閲覧数223
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 100% (3/3)

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
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル8

ベストアンサー率 51% (14/27)

回答としては下記のコードです。
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

お礼率 100% (3/3)

お返事ありがとうございました。
残念ながら問題にしていた部分は解決できなかったのですが、
その他の部分で大変参考になりました。
またよろしくお願いいたします。
投稿日時 - 2001-09-11 10:05:13
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル13

ベストアンサー率 46% (643/1383)

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 ...続きを読む
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

お礼率 100% (3/3)

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


  • 回答No.2
レベル13

ベストアンサー率 59% (729/1235)

xlBook.Close xlApp.Application.Quit Set xlBook = Nothing Set xlApp = Nothing かな? ...続きを読む
xlBook.Close
xlApp.Application.Quit
Set xlBook = Nothing
Set xlApp = Nothing

かな?
補足コメント
bambooman

お礼率 100% (3/3)

質問では「Excelが終了しない」と書いたのですが、
症状として「開きはしないがファイル削除は共有違反せずにできる」ということなので、もしかしたら問題点はクローズのやり方だけではないのかもしれませんね。
投稿日時 - 2001-09-10 17:17:15
お礼コメント
bambooman

お礼率 100% (3/3)

お返事ありがとうございます。
ActiveWorkbook.Application.Quit
xlApp.Application.Quit
Set xlbook = Nothing
Set xlsheet = Nothing
Set xlApp = Nothing

なども試してみたのですが、やはり駄目でした。
ACCESS97→Excel97の一括コンバートPGなので、連続した変換はなく
強制的にEXEを閉じてしまっても問題はないと思うのですが・・・・。
今後のことを考えるとやはり気になります。
投稿日時 - 2001-09-10 17:02:49
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ