• 締切済み

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 わかりづらい説明ですみません。お願いします。

みんなの回答

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

自分で起動したか、ブックを追加しただけかを持っておくことが必要 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

guruguru2
質問者

お礼

ありがとうございます。m(_ _)m 出来ました。自分で起動させたかどうかまでは考えが及んだのですが、どうもうまく行かなかったんです。(; ;) ブックを使ってやるのですね。ありがとうございました。(^ ^)

関連するQ&A