Добрый вечер.
Мне нужно устроить небольшой поиск по всем базам данных Access на компьютере.
Ищу в модулях. Всё происходит достаточно хорошо, до тех пор, пока не попадается база данных с паролем на модуле.
Вот моя функция:
Весь интернет перерыл - ничего не нашёл.
Если пароль на всю БД - примеры есть, а вот если только на модуль...
Может кто сталкивался?
Еще один момент: в некоторых БД при закрытии выводится MsgBox, в этих моментах моя функция затыкается. Может кто знает как закрыть БД (у меня в строке app.Quit) безо всяких уведомлений?
Мне нужно устроить небольшой поиск по всем базам данных Access на компьютере.
Ищу в модулях. Всё происходит достаточно хорошо, до тех пор, пока не попадается база данных с паролем на модуле.
Вот моя функция:
:
Function ODBC_Module_inDBn_search()
On Error GoTo ODBC_Module_inDBn_search_Err
Dim rst_FileList As DAO.Recordset
Dim rst_verknListe As DAO.Recordset
Dim db As DAO.Database
Dim app As New Access.Application
Dim findThat As String
findThat = ".Connect "
Dim oComponent As Object
Dim anzZeilenInModul As Long
Dim zeileNr As Long
Dim accDatei As String
AktVorgID = CurrentProject.Connection.Execute("SELECT Max(Vorgaenge.ID) AS MaxvonID FROM Vorgaenge;").Fields(0)
Set db = CurrentDb
Set rst_FileList = db.OpenRecordset("SELECT * FROM 1_accdb_Datei_Liste WHERE VorgangID = " & AktVorgID & "")
Set rst_verknListe = db.OpenRecordset("2_ODBC_Verkn_Liste")
Do While Not rst_FileList.EOF
accDatei = "C:\testBE_DB_ModulPasswort.accdb"
Set app = CreateObject("Access.application")
Dim passwort As String
Set db = app.DBEngine.OpenDatabase(accDatei, False, False, ";PWD=" & "kennwort")
app.OpenCurrentDatabase accDatei
Debug.Print rst_FileList!ID
For Each oComponent In app.VBE.ActiveVBProject.VBComponents
zeileNr = 1
With oComponent
anzZeilenInModul = .CodeModule.CountOfLines
Do While .CodeModule.Find(findThat, zeileNr, 1, -1, -1, False, False, False) = True
rst_verknListe.AddNew
rst_verknListe!VorgangID = AktVorgID
rst_verknListe!AccessDatei_ID = rst_FileList!ID
rst_verknListe!Objekt = 3 ' 3 - Für Module
rst_verknListe!NameAktuell = oComponent.Name
rst_verknListe!Verknuepfung = Trim(.CodeModule.Lines(zeileNr, 1))
rst_verknListe.Update
zeileNr = zeileNr + 1 'Restart the search at the next line looking for the next occurence
Loop
End With
Next oComponent
app.Quit
rst_FileList.MoveNext
Loop
ODBC_Module_inDBn_search_Exit:
rst_FileList.Close
Set rst_FileList = Nothing
rst_verknListe.Close
Set rst_verknListe = Nothing
db.Close
Set db = Nothing
Exit Function
ODBC_Module_inDBn_search_Err:
MsgBox Err.Source & ", " & Err.Description
Resume ODBC_Module_inDBn_search_Exit
End Function
Если пароль на всю БД - примеры есть, а вот если только на модуль...
Может кто сталкивался?
Еще один момент: в некоторых БД при закрытии выводится MsgBox, в этих моментах моя функция затыкается. Может кто знает как закрыть БД (у меня в строке app.Quit) безо всяких уведомлений?