0

我的团队有许多 Access 数据库文件,它们在其表单类中使用 VB 来调用存储过程。

我希望能够在这些 accdb 文件中搜索访问类对象以获取存储过程名称,但 Microsoft Visual Basic for Applications 似乎不支持一次搜索所有类定义。

有没有办法在 accdb 文件中搜索所有访问类对象以查找字符串?

4

2 回答 2

1

您可以使用隐藏的Application.SaveAsTextVBA 方法将表单转储到文本文件,然后使用您最喜欢的搜索工具(可能是grepWin之类的工具)在文件中翻找那些 SP 名称。转储表单的代码如下所示:

Sub DumpFormsToText()
Dim frm As Variant
Const OutFolder = "C:\__tmp\FormDump\"
For Each frm In Application.CurrentProject.AllForms
    Application.SaveAsText acForm, frm.Name, OutFolder & frm.Name & ".txt"
Next
Set frm = Nothing
End Sub
于 2013-06-07T13:15:32.860 回答
1

VBA 解决方案没有为我打印 CodeBehindForm 部分,但我确实使用互操作库获得了成功。

using Microsoft.Office.Interop.Access;
using System;

namespace AccessExporter
{
    class Program
    {
        static void Main(string[] args)
        {
            ApplicationClass app = new ApplicationClass();

            String fileName = @"C:\AccessFile.accdb";
            app.Visible = false;
            app.OpenCurrentDatabase(fileName);

            foreach (AccessObject obj in app.CurrentProject.AllForms)
            {
                Console.WriteLine(obj.Name);
                app.SaveAsText(AcObjectType.acForm, obj.Name, String.Format(@"C:\{0}.txt", obj.Name));
            }

            app.CloseCurrentDatabase();
        }
    }
}
于 2013-06-11T20:20:36.257 回答