是否可以在 VBA Excel 中对所有使用的模块和数据结构进行快照并在一段时间后恢复它?
原因是崩溃后重现错误
添加。是的,本质上我想序列化类和类型。
是否可以在 VBA Excel 中对所有使用的模块和数据结构进行快照并在一段时间后恢复它?
原因是崩溃后重现错误
添加。是的,本质上我想序列化类和类型。
我觉得你想要的是将所有类序列化为 XML 文件?我知道这个函数存在于其他语言中,但 VBA 可能没有它。(我相信你可以强迫一些东西)——布拉德
@Brad,是的,确切地说,作为一种可能的方式——nikaan
假设 VBA 不存在此方法(尽管它可用于 VB.NET 或 VB 2005: http: //support.microsoft.com/kb/315703),我可能会尝试进行模拟:编写状态使用 FSO 将每个对象/变量(所需的)复制到一个 txt 文件中。
不过,我不知道这对您的项目是否可行,而且我可能不喜欢为大量代码而高兴地这样做。
dim sFile As string
Dim FSO As FileSystemObject
Dim FSOFile As TextStream
sFile = "U:/Log.txt"
Set FSO = New FileSystemObject
Set FSOFile = FSO.OpenTextFile(sFile, 2, True)
FSOFile.writeline (<Descriptions+Property/variable value>)
FSOFile.Close
set FSO = nothing
根据您输入描述的程度(例如,包括用于成功实例化对象的布尔值等......),您可能能够看到屏幕后面发生的事情,直到您的应用程序崩溃......我不知道不知道这是否回答了您的问题,因为我有点怀疑您所指的“字段”(评论)。
作为 VBA 项目的所有者,您可以创建一个子例程来导出当前项目中的所有模块。此链接提供代码:
http://edndoc.esri.com/arcobjects/9.0/Samples/Application_Framework/ExportVBACode.htm
出于您描述的目的,我认为没有理由这样做。
就个人而言,我会使用像这样的蹩脚技巧:
选项显式
Sub Save_File()
Dim sCur_Path As String
Dim sCopied_Path As String
Application.DisplayAlerts = False
Application.ScreenUpdating = False
sCur_Path = ThisWorkbook.FullName
sCopied_Path = "U:/Copied_New.xlsm"
ThisWorkbook.SaveAs sCopied_Path
ThisWorkbook.SaveAs sCur_Path
End Sub