gpt4 book ai didi

vba - 逆向工程VBA代码Excel

转载 作者:行者123 更新时间:2023-12-02 08:49:08 29 4
gpt4 key购买 nike

我不是 VBA 程序员。然而,我有一个“令人不愉快”的任务,即用另一种语言重新实现某人的 VBA 代码。 VBA 代码由 75 个模块组成,这些模块使用一张庞大的“计算表”来存储所有“全局变量”。因此,它通常不使用描述性变量名称,而是使用:

= Worksheets("bla").Cells(100, 75).Value

Worksheets("bla").Cells(100, 75).Value =

更糟糕的是,“计算表”还包含一些公式。

是否有任何(免费)工具可以让您对此类代码进行逆向工程(例如创建 Nassi–Shneiderman 图、流程图)?谢谢。

最佳答案

我认为@JulianKnight的建议应该有效在此基础上,您可以:

  1. 将所有代码复制到能够进行 RegEx 搜索/替换的文本编辑器(例如 Notepad++)。
  2. 然后使用正则表达式搜索/替换搜索查询,例如:
    工作表\(\"Bla\"\).Cells\((\d*), (\d*)\).Value
  3. 并替换为:
    Var_\1_\2

    这会将所有工作表存储的值转换为带有行列索引的变量名称。
    示例:

    Worksheets("bla").Cells(100, 75).Value    To    Var_100_75
  4. 这些变量仍然需要初始化。
    这可以通过编写 VBA 代码来完成,该代码只需读取“Bla”工作表中的每个(相关)单元格并将其作为变量初始化代码写到文本文件中。
    示例:

    Dim FSO As FileSystemObject 
    Dim FSOFile As TextStream
    Dim FilePath As String
    Dim col, row As Integer

    FilePath = "c:\WriteTest.txt" ' create a test.txt file or change this

    Set FSO = New FileSystemObject
    ' opens file in write mode
    Set FSOFile = FSO.OpenTextFile(FilePath, 2, True)
    'loop round adding lines
    For col = 1 To Whatever_is_the_column_limit
    For row = 1 To Whatever_is_the_row_limit
    ' Construct the output line
    FSOFile.WriteLine ("Var_" & Str(row) & "_" & Str(col) & _
    " = " & Str(Worksheets("Bla").Cells(row, col).Value))
    Next row
    Next col

    FSOFile.Close

显然,您需要为您需要使用的任何其他语言更正输出行语法和变量名称结构。

附注如果您不熟悉 RegEx(正则表达式),您会在网络上找到大量解释它的文章。

关于vba - 逆向工程VBA代码Excel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11192241/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com