在多个文件中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文件被保存。 我猜这些文件太大了。
有没有更好的方法来做到这一点?
编辑:
问题似乎是frm
和cls
文件。 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