- 締切済み
Excelの終了について
こんにちは。昨日もお世話になったguruguru2です。 早速質問なのですが、VBから新規Excelを起動したあとで、フォルダから既存のExcelファイルをダブルクリックで起動します。そのあとで、VBからExcelを終了する時、VBで起動したExcelのみを終了させたいのに、2つとも終了してしまいます。又、フォルダから起動するのではなく、スタートメニューからExcelを起動して、「ファイルを開く」で既存のファイルを開き、VBからExcelを終了するとVBで起動させたExcelのみ終了させることが出来ました。 どうしたら、前者の方法でVBで起動したExcelのみを終了させることが出来るのでしょうか。ソースも書きます。 Private Sub Excel起動() Dim objXls As Object On Error Resume Next Set objXls = GetObject(, "Excel.Application") If Err.Number <> 0 Then Set objXls = CreateObject("Excel.Application") objXls.DefaultFilePath = mstrPath(最初に設定したパスです。) objXls.DisplayAlerts = False objXls.Workbooks.Add objXls.Visible = True End If AppActivate (objXls.Caption) Set objXls = Nothing Err.Clear End Sub Private Sub Excel終了() Dim objXls As Object On Error Resume Next Set objXls = GetObject(, "Excel.Application) If Err.Number = 0 Then objXls.Quit End If Set objXls = Nothing End Sub わかりづらい説明ですみません。お願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 2ch
- ベストアンサー率51% (64/125)
自分で起動したか、ブックを追加しただけかを持っておくことが必要 Private Type ExcelInfo xlsApp As Excel.Application xlsBook As Excel.Workbook bln自力でオープン As Boolean End Type Private infExl As ExcelInfo Private Sub Excel起動() On Error Resume Next With infExl .bln自力でオープン = False Set .xlsApp = GetObject(, "Excel.Application") If (.xlsApp Is Nothing) Then Set .xlsApp = CreateObject("Excel.Application") .bln自力でオープン = True End If End With With infExl .xlsApp.Workbooks.Add Set .xlsBook = .xlsApp.ActiveWorkbook .xlsApp.Visible = True Call AppActivate(.xlsApp.Caption) End With End Sub Private Sub Excel終了() With infExl If .bln自力でオープン Then .xlsApp.Quit Set .xlsApp = Nothing Else .xlsBook.Close Set .xlsBook = Nothing End If End With End Sub
お礼
ありがとうございます。m(_ _)m 出来ました。自分で起動させたかどうかまでは考えが及んだのですが、どうもうまく行かなかったんです。(; ;) ブックを使ってやるのですね。ありがとうございました。(^ ^)