对于工作中的项目,我希望允许用户创建要为单个项目保存的数据导出,因为无法为每个项目保存我的主要工作簿。
我创建了一个将数据导出到另一个工作簿的函数,但现在我想确保用户不会直接更改导出的数据(通过设置另一种文件格式,我认为用户会更多地考虑打开工作簿,因此不要通过“意外”来做到这一点)
所以我的问题是:我可以强制用户将文件保存为 .clg 文件吗?
编辑:
我通过保存文件.SaveAs
并将格式指定为“51”(与 .xlsx 相同)解决了这个问题。我曾经GetSaveAsFilename
允许用户决定位置(即项目文件夹),并且只浏览 .clg 文件.
Dim sFullName As String
sFullName = exportFile.Application.GetSaveAsFilename(thisFile.Sheets("Project information").Cells(1, 2).Value, "Export files (*.clg),*.clg", , "Choose export location", "Export")
If Not Len(sFullName) = 0 Or sFullName = "False" Then
exportFile.SaveAs Filename:=sFullName, FileFormat:=51
End If
exportFile.Close
如果有人想使用 Monshaw 先生的方法,一种方法是创建一个类模块,该模块有一个变量 withevents - 这意味着在变量中触发的任何事件都会在您的模块中触发。
Public WithEvents wbk As Workbook
只需记住将类的实例保存在内存中,例如将其添加到集合中。
另一种使用方式BeforeSave
是动态编写代码,见http://www.ozgrid.com/forum/showthread.php?t=163903