powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прочитать текст функции из макроса
9 сообщений из 9, страница 1 из 1
Прочитать текст функции из макроса
    #40016849
Indian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Есть файл Excel с макросами. В одном из модулей описаны пользовательские функции, зная имя функции, необходимо найти ее в модуле и скопировать ее текст. Это вообще возможно?
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40016860
Indian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программно, конечно же. На VBA. Из этого же файла
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40016900
Eolt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что типа такого

Код: 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.
Sub ExportCode()
  Dim app As Excel.Application
  Set app = New Excel.Application

  Dim wb As Excel.Workbook
  Set wb = Excel.Application.Workbooks.Open("C:\Book2.xls")

  Dim strExt As String

  Dim VBComp As Object
  For Each VBComp In wb.VBProject.VBComponents
    Select Case VBComp.Type
      Case 2  ' Class module
        strExt = ".cls"
      Case 3  ' Form
        strExt = ".frm"
      Case 1  ' Standard module
        strExt = ".bas"
      Case 100  ' Document?
        strExt = ".cls"
      Case Else
        Stop  ' What else is there?
        strExt = ".cls"
    End Select

    VBComp.Export "C:\" & VBComp.Name & strExt
  Next
  wb.Close False
  app.Quit


End Sub
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40016920
Indian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eolt, Агаааааааа!!!!! То есть, экспортируем код модуля в .bas, а потом парсим! Круто! Спасибо!
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40016930
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Indian,

можно и без экспорта парсить, напрямую в проекте. Даже проще будет:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Sub GetSubText()
    Dim objVBProj As Object
    Dim sProcName As String, res As String
    Dim lProcLineNum As Long, lProcLinesCnt As Long, lProcKind As Long, vMdl
    
    sProcName = "Макрос1" 'имя процедуры или функции, которые ищем
    Set objVBProj = ActiveWorkbook.VBProject
    On Error Resume Next
    
    'цикл по всем модулям проекта(стандартные, классы, формы, листы, книги)
    For Each vMdl In objVBProj.VBComponents
        For lProcKind = 0 To 3
            lProcLineNum = vMdl.CodeModule.ProcStartLine(sProcName, lProcKind)
            If lProcLineNum > 0 Then
                lProcLinesCnt = vMdl.CodeModule.ProcCountLines(sProcName, lProcKind)
                res = vMdl.CodeModule.Lines(lProcLineNum, lProcLinesCnt)
                MsgBox res
                Exit Sub
            End If
        Next
    Next
End Sub
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40016934
Indian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist, спасибо! Работает!
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40019657
Indian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возникла еще одна проблема. Успешно забрал текст из процедуры. Теперь пытаюсь заменить сброс строк на пробел через Replace, но он не находит ни Chr(13), ни '\n'. Какой там может быть символ?
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40019660
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Indian
Возникла еще одна проблема. Успешно забрал текст из процедуры. Теперь пытаюсь заменить сброс строк на пробел через Replace, но он не находит ни Chr(13), ни '\n'. Какой там может быть символ?
можно же просто посмотреть через Asc(Mid$(...))
...
Рейтинг: 0 / 0
Прочитать текст функции из макроса
    #40019668
Indian
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shocker.Pro, Спасибо. Chr(10) нашелся.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прочитать текст функции из макроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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