如何防止我的保存宏再次运行

时间:2019-01-10 22:43:10

标签: excel vba

我有一个可供许多员工用来确定价格的文件。

完成后,他们将文件名更改为所需的名称。

领导层要求我们将员工文件保存名称的第一部分设置为文件的原始名称(因此我们知道他们使用的版本),然后第二部分是用户希望使用的名称。例如-文件的组织名为“费率计算器v14”。员工希望将文件命名为“ CA,洛杉矶-John Doe”。

然后,文件应保存在“ Rate Calculator v14 CA,洛杉矶-John Doe.xlsm”的特定文件夹中。

无论是否执行“保存”或“另存为”,以及是否使用Ctrl + s快捷键或功能区完成操作,都应该发生这种情况。

当最后一行代码被触发时,文件实际上已保存,但是宏循环返回,并再次询问用户他们希望将文件另存为(尽管现在将不保存该文件,并且他们使用的其他名称已经保存)。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim strFileName(0 To 2) As String

strFileName(0) = "M:\Sales\Rate Calculators\John\"
strFileName(1) = "Rate Calculator v14"
strFileName(2) = InputBox("What would you like to save the file as?")

ActiveWorkbook.SaveAs FileName:=Join(strFileName), FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub

我知道我还需要进行一些错误处理,以便在文件名,文件名长度中使用不正确的字符,并确定用户,以便将其文件保存在正确的文件夹中。

我现在将继续努力,希望在此期间得到回应。在尝试使我的代码正常工作几个小时之后,我有点处于时间紧迫的状态。谢谢!

2 个答案:

答案 0 :(得分:1)

尝试

{
"manifest_version": 2,
"name": "Backchannel",
"description": "",
"version": "1.0",
"icons": {
"128": "128.png"
},
"app": {
"urls": [
"http://backchannel.glitch.me/"

],
"launch": {
"web_url”: “http://backchannel.glitch.me/"
}
},

"permissions": [
"unlimitedStorage",
"notifications"
]
}

答案 1 :(得分:1)

答案:

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    Dim strFileName(0 To 1) As String, sPath As String
    Application.EnableEvents = False
    Cancel = True

    sPath = "M:\Sales\Rate Calculators\John"
    strFileName(0) = "Rate Calculator v14"
    strFileName(1) = InputBox("What would you like to save the file as?")

    ActiveWorkbook.SaveAs Filename:=sPath & "\" & Join(strFileName), FileFormat:=xlOpenXMLWorkbookMacroEnabled
    Application.EnableEvents = True
End Sub