18

以前の開発者が多くの自動化されたタスクを作成した新しい会社で仕事を始めたばかりです。もちろん、事実上ドキュメントはなく、以前の開発者と一緒に仕事をする機会もありませんでした。そのため、これらすべてのプロセスをふるいにかけ、いくつかの特定のファイルを変更するプロセスを探しています。

すべてのストアド プロシージャを SQL でスクリプト化し、検索ツールを使用しましたが、探しているものが見つかりませんでした。そのため、必要なプロセスが、使用されている多くの Access データベースの 1 つにあるかどうか疑問に思っています。SQL Server では、C# アプリを記述して proc をスクリプト化し、それらを検索できるようにするのは簡単でしたが、Access では、各データベースを個別に開いてコード ファイルを検索する必要があるようです。

プログラムで VBA コード ファイルを検索する方法はありますか?

4

3 に答える 3

16

Access データベース ファイル内のコード モジュールの検索に関心がある場合は、VBE オブジェクト モデルを使用できます。ActiveVBProjectこのサンプルは、現在のデータベースのすべてのモジュールで単語を検索します。データベースに複数の VBProject が含まれている場合は、VBProjects コレクションを列挙し、プロジェクトを一度に 1 つずつ名前で検索できます。

For Each objComponent In Application.VBE.VBProjects(ProjName).VBComponents

または、プロジェクトを名前ではなく番号で参照したい場合は、番号が 0 ではなく 1 から始まることに注意してください。

Public Sub findWordInModules(ByVal pSearchWord As String)
    'Dim objComponent As VBComponent
    ' VBComponent requires reference to Microsoft Visual Basic
    ' for Applications Extensibility; use late binding instead:
    Dim objComponent As Object
    Dim strMessage As String
    Dim strModuleList As String

    strModuleList = vbNullString
    For Each objComponent In Application.VBE.ActiveVBProject.VBComponents
        If objComponent.CodeModule.Find(pSearchWord, 1, 1, -1, -1) = True Then
            strModuleList = strModuleList & "; " & objComponent.Name
        End If
    Next objComponent
    strMessage = "Text '" & pSearchWord & "' found in "
    If Len(strModuleList) > 0 Then
        strMessage = strMessage & "modules: " & Mid(strModuleList, 3)
    Else
        strMessage = strMessage & "no modules"
    End If
    Debug.Print strMessage
End Sub

Findその方法の Access ヘルプ トピックを確認します。私が使用したものとは異なるオプションを好むかもしれません。

複数の db ファイルをターゲットにして、それぞれのモジュールを検索する場合は、メソッドを使用してこれを自動化できますOpenDatabase。その部分の詳細はお任せします。

于 2012-04-12T18:37:22.927 に答える
9

前述していない別のオプションは、VBA エディターのコンテキスト メニューからプロジェクト コードを印刷することです。以下の手順は、利用可能なアプリケーションに合わせて変更できますが、結果は同じで、検索可能なテキストになります。

VBA エディタでプロジェクト名を右クリックし、表示されるコンテキスト メニューから [印刷] をクリックします。「コード」にチェックが入っていることを確認し、「OK」をクリックします。プリンターは、最後のダイアログで利用可能な「設定...」メニューから変更できます。

右クリック チェックボックス

補足として、スタンドアロン モジュール、SQL、テーブルなどは、[データベース ツール] タブの [分析] グループにある [データベース ドキュメンタ] から印刷できます。

Access クエリの基になる SQL の並べ替えと概要を説明するのに非常に便利です。

データベース ドキュメンタ

于 2016-01-05T17:10:55.597 に答える
6

VBA 用の無料のMZ-Toolsをダウンロードして、検索/置換機能を使用することをお勧めします。

検索を開始 検索結果

編集

MZ-Tools for VBA は利用できなくなりました。有料版は、新しいオフィス インストールで動作します。

于 2012-04-12T18:31:44.657 に答える