在多个文件中replaceVBA代码的最佳方法?

我曾经使用过这样的东西:

Dim vbaComponent As Variant For Each vbaComponent In inputWorkbook.VBProject.VBComponents vbaComponent.CodeModule.DeleteLines 1, vbaComponent.CodeModule.CountOfLines vbaComponent.CodeModule.AddFromFile importComponentFileName Next vbaComponent 

这工作完美了一段时间,但现在它崩溃时Excel文件被保存。 我猜这些文件太大了。

有没有更好的方法来做到这一点?

编辑:

问题似乎是frmcls文件。 bas文件的replace完美

EDIT2:

在一些机器上甚至bas文件都不起作用。

EDIT3(我目前的解决scheme):所以我现在的解决scheme只是简单的做一次,logging所有的鼠标和键盘input,然后重复播放。

如果没有适当的解决scheme,我打算为此创build一个AutoIt脚本。

你将不得不导出/导入组件,因为不是所有的行都暴露给CodeModule,这里是示例

 Private Sub exportImportComponent(Project1 As VBIDE.VBProject, Project2 As VBIDE.VBProject) Dim i As Long, sFileName As String With Project1.VBComponents For i = 1 To .Count sFileName = "C:\Temp\" & .Item(i).Name Select Case .Item(i).Type Case vbext_ct_ClassModule .Item(i).Export sFileName & ".cls" Project2.VBComponents.Import sFileName & ".cls" Case vbext_ct_StdModule .Item(i).Export sFileName & ".bas" Project2.VBComponents.Import sFileName & ".bas" Case vbext_ct_MSForm .Item(i).Export sFileName & ".frm" Project2.VBComponents.Import sFileName & ".frm" Case Else Debug.Print "Different Type" End Select Next End With End Sub