Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2013)
別のエクセルを実行させた後、元のエクセルも閉じたい
投稿日時: 20/11/18 15:55:14
投稿者: ザックん

いつもお世話になっております。
 
別のエクセルを実行させた後、元のエクセルも閉じたい。
 
元のエクセル・・・起動用.xlsm
別のエクセル・・・c:\bbb\ccc.xlsm
 
実行されたエクセル(別のエクセル)は閉じます。
元のエクセルが閉じません。
 
 Sub 閉じる() を▶手動で実行させると閉じます。
 
 
Public Sub workbook_open()
 
Call 実行
Call 閉じる
 
End Sub
 
Sub 実行()
     
    '--- 実行したいマクロが含まれるブックのパス ---'
    Dim bkPath As String
    bkPath = "c:\bbb\ccc.xlsm"
     
     
    '--- ワークブックを開く ---'
    Dim wb As Workbook
    Set wb = Workbooks.Open(bkPath)
     
    '--- 実行したいマクロ名 ---'
    Dim macroName As String
    macroName = "ddd"
     
     
    '--- マクロを実行する ---'
    Call Application.Run("'" & bkPath & "'!" & macroName)
     
    '--- 使用済みのワークブックを閉じる ---'
    wb.Close
          
     
 End Sub
  
 Sub 閉じる()
  
    Dim wb As Workbook
     
    For Each wb In Workbooks
     
      If wb.Name = "起動用.xlsm" Then
       
        wb.Close
         
      End If
    Next
  
 End Sub

回答
投稿日時: 20/11/18 16:15:43
投稿者: WinArrow
投稿者のウェブサイトに移動

確認ですが、
 
このコードは、起動用.xlsm
の記述してあるのですよね?
 
 
 
ステップ実行して、流れを確認してみましょう。
 

投稿日時: 20/11/18 16:41:42
投稿者: ザックん

いつもお世話になっております。
 
WinArrow様
いつもありがとうございます。
 
はいそうです。元のエクセル・・・起動用.xlsm に記載されているコードです。
 
ステップ実行試してみました。
元のエクセルも閉じました。
 
ご教授願います。
 

回答
投稿日時: 20/11/18 17:40:43
投稿者: WinArrow
投稿者のウェブサイトに移動

最初の説明の中に
>元のエクセルが閉じません。
 

ザックん さんの引用:

 
ステップ実行試してみました。
元のエクセルも閉じました。

 
に、違いがありますか?
 
違いがあるとしたら
どのように違いますか?
 
最後、Workbooks をループしていますが、
別のブックが開いているのですか?

投稿日時: 20/11/19 12:37:27
投稿者: ザックん

いつもお世話になっております。
 
WinArrow様
 
起動用.xlsm 閉じたのですが、エクセルの名前の付いていない
エクセルが開いている状態になります。
 
別のエクセル・・・c:\bbb\ccc.xlsm 閉じる
元のエクセル・・・起動用.xlsm 閉じたが、Excelが開いている状態になりました。
 
このフォルダで開いているエクセルは上記のエクセルのみです。
 

回答
投稿日時: 20/11/19 13:07:03
投稿者: WinArrow
投稿者のウェブサイトに移動

言葉の遊びになってしまいmスが、
ブックをエクセルという表現するから、ややこしくなってしまうんです。
 
「ブックを閉じる」ことと
「エクセル」を閉じることは、異なります。
 
エクセルを閉じるのは、
Application.Quit
というメソッドがあります。
 

投稿日時: 20/11/19 15:24:03
投稿者: ザックん

いつもお世話になっております。
 
WinArrow様
ありがとうございます。
 
Application.Quit メソッドはどの様な入れ方が効果的なのでしょうか。
最終行に入れましたが、起動用.xlsmエクセルが閉じませんでした。
 
 
 Sub 閉じる()
  
    Dim wb As Workbook
     
    For Each wb In Workbooks
     
      If wb.Name = "起動用.xlsm" Then
       
        wb.Close
         
      End If
    Next
  
 Application.Quit
  
 End Sub

回答
投稿日時: 20/11/19 16:50:25
投稿者: WinArrow
投稿者のウェブサイトに移動

エクセルを終了したいのであれば、
開いている全てのブックは、閉じることになります。
自ブック以外のブックを閉じましょう。
 
ジブックは閉じずに
Thisworkbook.Saved = True
Application.Quit
 
閉じるプロシジャ…以下参考
 
Sub 閉じる()
     Dim wb As Workbook
     For Each wb In Workbooks
       If wb.Name <> ThisWorkbook.Nme Then
         wb.Close False
       End If
     Next
   Thisworkbook.Saved = True
  Application.Quit
End Sub
 

投稿日時: 20/11/20 07:58:49
投稿者: ザックん

いつもお世話になっております。
 
WinArrow様
 
いつもありがとうございます。
解決できました。
 
今後も宜しくお願い致します。