Excel 如何使用AddIn将打开的工作簿保存在同一工作簿目录中,该目录具有相同的文件扩展名,但名称不同?

Excel 如何使用AddIn将打开的工作簿保存在同一工作簿目录中,该目录具有相同的文件扩展名,但名称不同?,excel,vba,Excel,Vba,我在.xlam文件的workbookopen中尝试了以下代码,但它保存了加载项,而不是目录中打开的正在运行的工作簿。此外,以下代码仅适用于.xlsm文件。 我真正想要的是在运行外接程序时,在当前目录中以相同的扩展名保存具有不同文件名的excel工作簿的运行实例 Sub saveas() Dim wbname As String Dim pathONLY, filePATH, fileONLY As String filePATH = ThisWorkbook.FullName fil

我在.xlam文件的workbookopen中尝试了以下代码,但它保存了加载项,而不是目录中打开的正在运行的工作簿。此外,以下代码仅适用于.xlsm文件。 我真正想要的是在运行外接程序时,在当前目录中以相同的扩展名保存具有不同文件名的excel工作簿的运行实例

 Sub saveas() 
 Dim wbname As String
 Dim pathONLY, filePATH, fileONLY As String
 filePATH = ThisWorkbook.FullName
 fileONLY = ThisWorkbook.Name
 pathONLY = Left(filePATH, Len(filePATH) - Len(fileONLY))
 wbname = "NewFile"
 On Error Resume Next
 ActiveWorkbook.SaveAs Filename:=pathONLY & wbname & ".xlsm"
 
 End Sub

保存模块意味着什么?你是说加载项吗?这段代码设计用于在add-n启动时为其创建备份。如果您在加载项
工作簿\u Open
事件中尝试此代码,当然,活动文档本身就是加载项。。。那么,下一步错误恢复时的
有什么用?这不仅不会让VBA在使用的参数有问题时引发错误。这毫无帮助,只会造成问题。如果您想用自己的扩展名保存文件,请不要使用“.xlsm”,而是提取现有的扩展名并使用它。我指的是Addin,但我错误地将该Addin的名称写为“Module.xlam”。在这种情况下,如何保存打开的工作簿而不是加载项?是否只有一个这样的工作簿?当加载项打开时,显然不能使用
ActiveWorkbook
。如果在加载代码后运行该代码,它将引用真正的活动文档。是的,在我的示例中只有一个工作簿!!那么这是否意味着如果我们使用
Application.Wait
延迟外接程序中代码的执行,它将引用真正的活动文档?恐怕不是。尝试将两个变量
Dim wb声明为工作簿,wbAct声明为工作簿,然后为工作簿中的每个wb声明
如果wb.name thiswoolk.name,则设置wbAct=wb`
Next
。然后使用
wbAct
而不是
ActiveDocument