powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отлов всех MsgBox в коде
5 сообщений из 30, страница 2 из 2
Отлов всех MsgBox в коде
    #39309903
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,
Всё завершилось удачно.
Всем спасибо за коды.
...
Рейтинг: 0 / 0
Отлов всех MsgBox в коде
    #39310751
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо Application.Modules лучше использовать Application.VBE.ActiveVBProject.VBComponents
...
Рейтинг: 0 / 0
Отлов всех MsgBox в коде
    #39310776
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ламер Ламерович,
Да, именно так.
Пока сам до этого не дошёл, ни чего не получалось.
Вот окончательный код.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Public Function MESSAGI_OTLOV()
' подключить Microsoft Visual Basic for Applications Extensibility
' БЕГАЕМ ПО ФОРМАМ ПО КОДУ ФОРМ и не только.
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule
    Dim strLine As String
    Dim I As Long
    Dim mI As Long
    Dim N As Long
    Dim K As Long
    Dim F As Object

On Error Resume Next
    Set VBProj = Access.VBE.ActiveVBProject
For I = 1 To VBProj.VBComponents.Count - 1
   Set F = VBProj.VBComponents.Item(I)
'   Debug.Print F.Name
    Set VBComp = VBProj.VBComponents(F.Name)
    Set CodeMod = VBComp.CodeModule
            For mI = 2 To CodeMod.CountOfLines
                If InStr(1, CodeMod.Lines(mI, 1), "MsgBox", vbTextCompare) <> 0 Then
                    N = InStr(1, CodeMod.Lines(mI, 1), "MsgBox", vbTextCompare) + 8
                    K = InStr(N, CodeMod.Lines(mI, 1), """", vbTextCompare) - N
                    strLine = ""
                    If K > N Then
                        strLine = Mid(CodeMod.Lines(mI, 1), N, K)
'                        Debug.Print strLine
                        DoCmd.SetWarnings False
                          DoCmd.RunSQL "INSERT INTO LANGUAGE_TBL (RUS) VALUES ('" & strLine & "')"
                        DoCmd.SetWarnings True
                    End If
            End If
        Next mI
Next I
Set VBProj = Nothing
Set F = Nothing
Set VBComp = Nothing
Set CodeMod = Nothing
End Function
...
Рейтинг: 0 / 0
Отлов всех MsgBox в коде
    #39310781
Ламер Ламерович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
час58,

Вместо
Код: vbnet
1.
For I = 1 To VBProj.VBComponents.Count - 1


можно использовать
Код: vbnet
1.
For Each VBComp In VBProj.VBComponents
...
Рейтинг: 0 / 0
Отлов всех MsgBox в коде
    #39310784
Фотография час58
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ламер Ламерович,

Спасибо,
Понял.
...
Рейтинг: 0 / 0
5 сообщений из 30, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Отлов всех MsgBox в коде
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]