【发布时间】:2015-11-19 13:29:12
【问题描述】:
我想就这段代码向您寻求帮助:
Option Explicit
Private WithEvents App As Excel.Application
Private Sub Workbook_Open()
Set App = Application
End Sub
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
App.EnableEvents = False
With App.Dialogs(xlDialogSaveAs)
Call .Show(MakeDocName, xlOpenXMLWorkbookMacroEnabled)
End With
App.EnableEvents = True
Cancel = True
End Sub
Function MakeDocName() As String
Dim theName As String
Dim pName As String
Dim pUName As String
pName = Sheets("DESCRIPTION").Range("b4")
pUName = UCase(pName)
theName = pUName & " RN " & Sheets("DESCRIPTION").Range("b2")
MakeDocName = theName
End Function
基本上,我对这段代码的期望是可以用指定的名称和格式保存文件。该名称直接取自“描述”表。格式应为 .xlsm。
问题是代码不仅在 ThisWorkbook 中有效,而且在所有打开的 Excel 文件中都有效。
是否有机会使此代码仅可用于包含该代码的指定文件?
【问题讨论】:
-
您正在接收应用程序事件,在工作簿中执行可能是一个想法 Private WithEvents WB As Excel.Workbook 使用 Private Sub WB_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)