私はちょっとした問題があります。私が持っている複数の開いているExcelのインスタンスの1つを閉じるとき閉じるコードが実行される前
私はこの小さな問題を除いてほぼ完全に実行されるすべてのコードでマクロブック(簡略化のために「メイン」と呼ぶことができます)を持っています。 「メイン」は通常、その日の残高であるため、常に開いています。
私が開いたときと同じときに他のユーザーがブックを開くと、すべての問題はなくなりますが、コードがないブックを閉じると、「メイン」は終了コードより前に実行されます。
だから、これは私が "メイン" に持って閉じるコードの前に私のです:SaveWb上
Sub CloseC()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Coordenador")
With ws
.Unprotect Password:=pass
.Range("O:O").ClearContents
End With
For Each Worksheet In ThisWorkbook.Worksheets
Worksheet.Protect Password:=pass
Next
ThisWorkbook.Sheets("Coordenador").Visible = xlSheetVeryHidden
ThisWorkbook.Sheets("LookupList").Visible = xlSheetVeryHidden
End Sub
とコード:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Tsweep As Integer
Dim sTime As Date
If ThisWorkbook.Sheets("Coordenador").Range("O2") <> "" Then
For Tsweep = 2 To Range("Coordenador!O1048000").End(xlUp).Row
Application.OnTime EarliestTime:=Range("Coordenador!O" & Tsweep).Value,
Procedure:="CloseC", Schedule:=False
Next Tsweep
End If
CloseC
sTime = ThisWorkbook.Sheets("Coordenador").Range("P15") +
TimeValue("00:30:00")
Application.OnTime EarliestTime:=sTime, Procedure:="SaveWb", Schedule:=False
ThisWorkbook.Save
End Sub[/CODE]
これは "CloseC" 上のコードであります
Sub SaveWb()
Dim vTime As Date
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Coordenador")
ThisWorkbook.Save
vTime = Now
With ws
.Unprotect Password:=pass
.Range("P15") = vTime
.Protect Password:=pass
End With
Application.OnTime vTime + TimeValue("00:30:00"), "SaveWb"
End Sub
このコードを説明すると、システムに残っている可能性のあるすべてのOnTime実行が停止します。それはいくつかの細胞をクリアし、いくつかのシートを保護し、保存する。ユーザーが「Main」を閉じてExcelが「SaveWb」を実行しようとすると、エラーが表示されます。
理論的には各インスタンスが単独で実行されるため、またユーザーが閉じるボタントップでこれらの他のブックを閉じていても、「メイン」を閉じるわけではないので、そのブックは開いたままです。他のアイデアは、ブックが5秒後にまだ開いているかどうかをチェックし、 "SaveWb"を実行するのであればチェックすることですが、コードを書く方法は見つけられていません。
ご協力いただきありがとうございます。
あなたがBeforeCloseサブの冒頭で、ブックの名前を確認すると考えることがありますか?また、ThisWorkbookとは何ですか? ActiveWorkbookのエイリアスですか? –
@MaciejLipinski 'ThisWorkbook'は、マクロを含むブックを参照するビルトインオブジェクトです。 – YowE3K
@ YowE3Kありがとう、私はそれを知りませんでした - 私はいつもActiveWorkbookを使用した、またはそのファイル名でコードワークブックを参照しました –