数据结构的快照,VBA的excel [重复](Snapshot of data structures

2019-09-29 11:16发布

可能重复:
什么是导出所有Excel插件模块.BAS文件的最快方法?

是否有可能做的所有使用的模块和数据结构的快照VBA Excel和后恢复它一些时间呢?

原因是崩溃后重现错误

添加。 是的,在本质上我想序列类和类型。

Answer 1:

我觉得你有种想要的是序列化所有的类,因为它们是一个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 

根据有多好你输入描述(例如,对于对象的成功例,等...计有布尔值),你可以看到什么屏幕后面发生最多的地方应用程序崩溃的地步......我不“知道,如果这回答你的问题,因为我有点怀疑你是指什么用‘田’(评论)。



Answer 2:

当作为一个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


文章来源: Snapshot of data structures, VBA excel [duplicate]