0

我有一个创建 3 个日志的工作簿。在关闭之前,我需要将这三张纸复制到一个新的工作簿中,然后我需要两个工作簿来保存并关闭它们自己。我已经了解了下面的代码,现在当我尝试运行该模块时,它会打开宏窗口并且不会运行。我确实将其存储在 ThisWorkbook 中。任何输入将不胜感激。

                                                                Mary

Option Explicit

Private Sub BeforeClose(Cancel As Boolean)

'Save worksheets to new workbook
    Dim strSaveName As String
    Dim DstFile As String 'destination File name
    Dim DataWorkbook As Workbook

'Unhide Worksheets
    Set DataWorkbook = ActiveWorkbook
    DataWorkbook.Sheets("Service Change Log").Visible = True
    DataWorkbook.Sheets("Transaction Log").Visible = True
    DataWorkbook.Sheets("Call Initiation Log").Visible = True

    ChDir "P:\CSR Rollback Tool\Test"
    strSaveName = Replace(Application.UserName, ",", "")


'Copy Sheets
    Sheets(Array("Service Change Log", "Transaction Log", "Call Initiation Log")).Copy

'Hide Worksheets
    Sheets("Service Change Log").Visible = False
    Sheets("Transaction Log").Visible = False
    Sheets("Call Initiation Log").Visible = False

'Close Worksheet
    MsgBox "P:\CSR Rollback Tool\" & strSaveName & Format(Now(), "yyyymmdd hh-mm") & ".xlsx"
    Application.DisplayAlerts = False
    DstFile = "P:\CSR Rollback Tool\test\" & strSaveName & Format(Now(), "yyyymmdd hh-mm") & ".xlsx"
    Workbooks(DstFile).Close SaveChanges:=True
    DataWorkbook.Close Save:=True

End Sub
4

2 回答 2

1

首先尝试这个,将事件处理程序名称更改为:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

代替:

Private Sub BeforeClose(Cancel As Boolean)
于 2013-11-08T15:41:54.950 回答
1

新创建的工作簿将在以下之后获得焦点:

'Copy Sheets
    Sheets(Array("Service Change Log", "Transaction Log", "Call Initiation Log")).Copy

所以:

'Hide Worksheets
    Sheets("Service Change Log").Visible = False
    Sheets("Transaction Log").Visible = False
    Sheets("Call Initiation Log").Visible = False

将尝试隐藏工作表,但你不能有一个没有可见工作表的工作簿*,所以你只需要稍微调整你的代码,它应该可以工作。

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'Save worksheets to new workbook
    Dim strSaveName As String
    Dim DstFile As String 'destination File name
    Dim DataWorkbook As Workbook

'Unhide Worksheets
    Set DataWorkbook = ActiveWorkbook
    DataWorkbook.Sheets("Service Change Log").Visible = True
    DataWorkbook.Sheets("Transaction Log").Visible = True
    DataWorkbook.Sheets("Call Initiation Log").Visible = True

    ChDir "P:\CSR Rollback Tool\Test"
    strSaveName = Replace(Application.UserName, ",", "")


'Copy Sheets
    Sheets(Array("Service Change Log", "Transaction Log", "Call Initiation Log")).Copy

'Save new workbook
    MsgBox "P:\CSR Rollback Tool\" & strSaveName & Format(Now(), "yyyymmdd hh-mm") & ".xlsx"
    Application.DisplayAlerts = False
    DstFile = "P:\CSR Rollback Tool\test\" & strSaveName & Format(Now(), "yyyymmdd hh-mm") & ".xlsx"
    activeworkbook.saveas(DstFile)
    activeworkbook.close true

'Hide Worksheets in original workbook
    DataWorkbook.Sheets("Service Change Log").Visible = False
    DataWorkbook.Sheets("Transaction Log").Visible = False
    DataWorkbook.Sheets("Call Initiation Log").Visible = False

'Close Worksheet
    DataWorkbook.Close Save:=True

End Sub
于 2013-11-08T15:31:13.960 回答