1

重複の可能性:
すべてのExcelアドインモジュールを.basファイルにエクスポートする最速の方法は何ですか?

使用されているすべてのモジュールとデータ構造のスナップショットをVBAExcelで実行し、しばらくしてから回復することはできますか?

理由は、クラッシュ後にエラーを再現することです

追加した。はい、本質的にはクラスとタイプをシリアル化したいです。

4

2 に答える 2

3

すべてのクラスをそのままXMLファイルにシリアル化するのがいいと思いますか?この関数は他の言語にも存在することは知っていますが、VBAにはそのままではない可能性があります。(私はあなたが何かを強制することができると確信しています)–ブラッド

@Brad、はい、正確に、可能な方法の1つとして– 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 

説明の入力の程度によっては(たとえば、オブジェクトのインスタンス化を成功させるためのブール値を含めるなど)、アプリケーションがクラッシュするまで画面の背後で何が起こったかを確認できる場合があります...私はしませんあなたが「フィールド」(コメント)で何を参照しているかについて少し疑問があるので、これがあなたの質問に答えるかどうかはわかりません。

于 2012-07-26T15:00:07.697 に答える
1

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
于 2012-07-26T12:32:05.240 に答える