仅当关闭了将数据导出到的工作簿时,才使用msgbox BeforeClose导出数据

时间:2019-04-25 15:28:33

标签: excel vba

我希望将数据导出到另一个工作簿。我在关闭询问是否准备好导出数据之前添加了一个msgbox。当我选择是时,数据导出。我遇到的问题是定期使用数据导出到的工作簿。我想在我的代码中添加一个功能,该功能将通知用户由于工作簿在其他地方打开而不会导出数据。如果工作簿已关闭,我希望将数据导出。

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim Output As String

Output = MsgBox("Are you ready to export the data?", vbYesNo, "Data Export")

If Output = vbYes Then

'Summary Page (APD+MTC)

'APD Premium

Worksheets("SEC 1 (APD)").Range("AJ" & Cells.Rows.Count).End(xlUp).Copy

Workbooks.Open Filename:="S:\US Div\Accounts\Paramount\2017 Data\Summary\2017 Summary - Edit.xlsm"

Workbooks("2017 Summary - Edit.xlsm").Worksheets("Input P").Activate

Range("C18").PasteSpecial Paste:=xlPasteValues, operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

ActiveWorkbook.Close SaveChanges:=True

End If

End Sub

1 个答案:

答案 0 :(得分:0)

我是从这里获得此功能的(不要记得该​​帖子对unfortnuatley给予了应有的重视。

MACRO

然后在您的Sub中,您可以使用类似这样的名称:

Function IsWorkBookOpen(FileName As String)
    Dim ff As Long, ErrNo As Long

    On Error Resume Next
    ff = FreeFile()
    Open FileName For Input Lock Read As #ff
    Close ff
    ErrNo = Err
    On Error GoTo 0

    Select Case ErrNo
    Case 0:    IsWorkBookOpen = False
    Case 70:   IsWorkBookOpen = True
    Case Else: Error ErrNo
    End Select
End Function