powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите !!!
2 сообщений из 2, страница 1 из 1
Помогите !!!
    #33677271
XiPoMaHt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне необходимо при нажати на кнопку на форме увидеть код Vba другой кнопки(только просмотр) и сохранением этого кода в файл.Для Excel И Word.
...
Рейтинг: 0 / 0
Помогите !!!
    #33677818
Ashton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для Excel.

Допустим на "Листе1" есть кнопка "CommandButton1", на "Листе2" есть кнопка "CommandButton2", событие "Click" которой нужно получить.

Подключи библиотеку "Microsoft Visual Basic for Applications Extensibility". Если у тебя версия офиса 2002 или выше, убедись, включен ли доступ к проекту "Сервис->Макрос->Безопасность->Вкладка "Надежные издатели"->Доверять доступ к VB Project.

Модуль "Листа1".

Код: plaintext
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.
Private Sub CommandButton1_Click()
    ProcedureCode "CommandButton2_Click", _
      "Лист2", ThisWorkbook
End Sub

Private Sub ProcedureCode( _
  strProcedureName As String, _
  strModuleName As String, _
  wb As Workbook)
    Dim cm As CodeModule
    Dim lngStart As Long
    Dim lngCount As Long
  
    If fnProcedureExists(strProcedureName, _
      strModuleName, wb) Then
        Set cm = wb.VBProject.VBComponents(strModuleName).CodeModule
        
        lngStart = cm.ProcStartLine( _
          strProcedureName, vbext_pk_Proc)
        
        If lngStart >  0  Then
            lngCount = cm.ProcCountLines( _
              strProcedureName, vbext_pk_Proc)
            MsgBox (cm.Lines(lngStart, lngCount))
        End If
        
        Set cm = Nothing
    Else
        MsgBox ("Такой процедуры нет.")
    End If
End Sub

Private Function fnProcedureExists( _
  strProcedureName As String, _
  strModuleName As String, _
  wb As Workbook) As Boolean
    On Error Resume Next
    
    fnProcedureExists = wb.VBProject.VBComponents(strModuleName) _
      .CodeModule.ProcStartLine(strProcedureName, vbext_pk_Proc) <>  0 
End Function
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Помогите !!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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