excel - 替换多个文件中的 VBA 代码的最佳方法?

标签 excel vba

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

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 文件的替换工作完美

编辑2:

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

EDIT3(我目前的解决方案): 所以我目前的解决方案是简单地手动完成一次并记录所有鼠标和键盘输入,然后一遍又一遍地重放。

如果没有合适的解决方案,我计划为此创建一个 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

关于excel - 替换多个文件中的 VBA 代码的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33297445/

相关文章:

excel - dd/mm/yyyy 格式的日期在 Excel Vba 中返回 1004 错误

sql - 使用 VBA/ADO 更新 Excel 工作表

excel - 所有空白值的平均值错误处理

database - 如何在 VBA 中刷新循环或更新循环

vba - vba复制粘贴失败

Python 2.7 MySQLdb将从数据库读取的最后一行保存到文本文件中

ruby-on-rails - Ransack 返回过滤的 excel 或执行过滤的删除

javascript - 使用 jQuery/JavaScript/AJAX 读取 Excel 文件

vba - 如何删除单元格中的非数字字符并将结果连接到 URL?

vba - 数据透视表 "RefreshTable"与 "Update"方法