Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3344 / 13644 ツリー ←次へ | 前へ→

【62803】2つのブックのAUTO_CLOSEを有効に ぴかる 09/9/3(木) 19:05 質問[未読]
【62805】Re:2つのブックのAUTO_CLOSEを有効に ichinose 09/9/4(金) 7:22 発言[未読]
【62806】Re:2つのブックのAUTO_CLOSEを有効に ぴかる 09/9/4(金) 8:49 発言[未読]
【62807】Re:2つのブックのAUTO_CLOSEを有効に ぴかる 09/9/4(金) 9:53 発言[未読]
【62808】何とか自力解決しました♪ ぴかる 09/9/4(金) 11:55 お礼[未読]

【62803】2つのブックのAUTO_CLOSEを有効に
質問  ぴかる  - 09/9/3(木) 19:05 -

引用なし
パスワード
   お世話になります。

AUTO_CLOSEの入った2つのブックを開き、エクセル自体を終了させた時、2つのブックのAUTO_CLOSEが働きません。何かいい方法は、あるのでしょうか?
先に開いたブックしかAUTO_CLOSEが働かないようです。更にアクティブ状態でないとダメです。後から開いたブックにて終了すると何も起こりません。

ご存じの方がお見えの様でしたら、よろしくお願いいたします。
申し訳ございませんが、確認は明日の朝となります。

【62805】Re:2つのブックのAUTO_CLOSEを有効に
発言  ichinose  - 09/9/4(金) 7:22 -

引用なし
パスワード
   ▼ぴかる さん:
おはようございます。
簡単なテストでは、再現できませんね!!


例 
Boo1.Xlsの標準モジュール

Sub auto_close()
  MsgBox "cls1"
End Sub

Boo2.Xlsの標準モジュール
Sub auto_close()
  MsgBox "cls2"
End Sub


これで、
どちらのブックがアクティブでも又第3のブック(Book3.Xls)がアクティブでも
エクセル自体を終了させた時、上記の二つのコードが実行されました。


Excelのバージョンは?

あるいは、再現できるコードを提示した方が
よいですよ!!


因みに私は、Excel2002 SP3での結果です。

【62806】Re:2つのブックのAUTO_CLOSEを有効に
発言  ぴかる  - 09/9/4(金) 8:49 -

引用なし
パスワード
   ichinoseさん、おはようございます。お久しぶりです。

テストの方、ありがとうございました。まだ現場には行けていないのですが、そのブックがそのPCのものでなく、ネットワークにて他のPCを開いて実行しようとしてたからかもしれません。調査出来次第、また報告させて頂きます。

【62807】Re:2つのブックのAUTO_CLOSEを有効に
発言  ぴかる  - 09/9/4(金) 9:53 -

引用なし
パスワード
   報告します。

ネットワークとか関係ありませんでした。どうやら今回作成したブックのどこかにあかん箇所がある様です。ichinoseさんご提示のマクロでは、問題無く動作しました。3台のPCでテストしたところ、全て同じ結果となりました。もう少し調査してみます。ただ一つずつブックを閉じるときちんと動作するので、今のところ???って感じです。

【62808】何とか自力解決しました♪
お礼  ぴかる  - 09/9/4(金) 11:55 -

引用なし
パスワード
   良かったです。解決しました。ありがとうございました。

見て下さった方も沢山お見えになると思うので、内容報告させてもらいます。
AUTO_CLOSEマクロに条件を入れていてそれが影響していました。

変更前
ブック1…D組立日々管理09-9.xls
Sub AUTO_CLOSE()
  
  Application.DisplayAlerts = False '警告メッセージオフにする
  If ActiveWorkbook.Name <> "D組立日々管理マスター.xls" And Mid(ActiveWorkbook.Name, 4, 2) = "日々" Then
    ActiveWorkbook.Save
    ファイル名 = ActiveWorkbook.Name
    パス = "\\133.153.81.190\共有ファイル\ABS組立日々管理\D組立\" & 年度 & "年度"
    フルパス = パス & "\" & ファイル名
    If Dir(パス, vbDirectory) = "" Then
      MkDir パス
    End If
    ActiveWorkbook.SaveAs Filename:=フルパス
  Else
    ActiveWorkbook.Close SaveChanges:=False
  End If

End Sub
ブック2…D組立週報月報09-9.xls
Sub AUTO_CLOSE()
  
  If ActiveWorkbook.Name <> "D組立週報月報マスター.xls" And Mid(ActiveWorkbook.Name, 4, 2) = "週報" Then
    データプロット
  Else
    ActiveWorkbook.Close SaveChanges:=False
  End If

End Sub

対策版
ブック1…D組立日々管理09-9.xls
Sub AUTO_CLOSE()
  
  Application.DisplayAlerts = False '警告メッセージオフにする
  If ThisWorkbook.Name <> "D組立日々管理マスター.xls" And Mid(ThisWorkbook.Name, 4, 2) = "日々" Then
    ファイル名 = ThisWorkbook.Name
    Windows(ファイル名).Activate
    ActiveWorkbook.Save
    パス = "\\133.153.81.190\共有ファイル\ABS組立日々管理\D組立\" & 年度 & "年度"
    フルパス = パス & "\" & ファイル名
    If Dir(パス, vbDirectory) = "" Then
      MkDir パス
    End If
    ActiveWorkbook.SaveAs Filename:=フルパス
  Else
    ActiveWorkbook.Close SaveChanges:=False
  End If

End Sub
ブック2…D組立週報月報09-9.xls
Sub AUTO_CLOSE()
  
  If ThisWorkbook.Name <> "D組立週報月報マスター.xls" And Mid(ThisWorkbook.Name, 4, 2) = "週報" Then
    ファイル名 = ThisWorkbook.Name
    Windows(ファイル名).Activate
    データプロット
  Else
    ActiveWorkbook.Close SaveChanges:=False
  End If

End Sub

変更内容
 IF分のActiveWorkbookをThisWorkbookに変更
以下を追加
 ファイル名 = ThisWorkbook.Name
 Windows(ファイル名).Activate

今回もとてもいい勉強になりました。またまたVBAのおもしろさを実感しました。めちゃ登場回数が減っていますが、今後ともよろしくお願いします。

3344 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free