Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прочитать текст функции из макроса / 9 сообщений из 9, страница 1 из 1
10.11.2020, 15:55
    #40016849
Indian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прочитать текст функции из макроса
Здравствуйте!
Есть файл Excel с макросами. В одном из модулей описаны пользовательские функции, зная имя функции, необходимо найти ее в модуле и скопировать ее текст. Это вообще возможно?
...
Рейтинг: 0 / 0
10.11.2020, 16:09
    #40016860
Indian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прочитать текст функции из макроса
Программно, конечно же. На VBA. Из этого же файла
...
Рейтинг: 0 / 0
10.11.2020, 17:52
    #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
10.11.2020, 18:12
    #40016920
Indian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прочитать текст функции из макроса
Eolt, Агаааааааа!!!!! То есть, экспортируем код модуля в .bas, а потом парсим! Круто! Спасибо!
...
Рейтинг: 0 / 0
10.11.2020, 19:00
    #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
10.11.2020, 19:25
    #40016934
Indian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прочитать текст функции из макроса
The_Prist, спасибо! Работает!
...
Рейтинг: 0 / 0
17.11.2020, 19:59
    #40019657
Indian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прочитать текст функции из макроса
Возникла еще одна проблема. Успешно забрал текст из процедуры. Теперь пытаюсь заменить сброс строк на пробел через Replace, но он не находит ни Chr(13), ни '\n'. Какой там может быть символ?
...
Рейтинг: 0 / 0
17.11.2020, 20:02
    #40019660
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прочитать текст функции из макроса
Indian
Возникла еще одна проблема. Успешно забрал текст из процедуры. Теперь пытаюсь заменить сброс строк на пробел через Replace, но он не находит ни Chr(13), ни '\n'. Какой там может быть символ?
можно же просто посмотреть через Asc(Mid$(...))
...
Рейтинг: 0 / 0
17.11.2020, 20:23
    #40019668
Indian
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прочитать текст функции из макроса
Shocker.Pro, Спасибо. Chr(10) нашелся.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прочитать текст функции из макроса / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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