Часто у меня возникают такие проблемы в редакторе: • удалить Nую переменную в исходнике и всех вхождениях • добавить Nую переменную (обязательную или опциональную) и во всех её прошлых вызовах добавить и установить эту новую переменную с определённым значением • поменять местами Nую и Mую переменные
Вопрос: как это сделать? Встроенный Replacer не может такое, вроде или есть какие-то фокусы?
Пока думаю как-то выгрузить все коды в в текстовый файл или на лист, обработать массив, сплитуя аргументы и меняя местами, как надо, но хотелось бы как-то попроще, конечно…
Код
Код
Option Explicit
Option Private Module
'====================================================================================================
Sub Sub1(par1&, par2$, par3&)
Dim arr(2) As String
arr(0) = par1 & " — " & TypeName(par1)
arr(1) = par2 & " — " & TypeName(par2)
arr(2) = par3 & " — " & TypeName(par3)
MsgBox Join(arr, vbLf)
End Sub
'====================================================================================================
'====================================================================================================
Sub CallSub1_1()
Sub1 1, "abc", 2 ' transform to «Sub2 2,"abc",True»
End Sub
'----------------------------------------------------------------------------------------------------
Sub CallSub1_2()
Sub1 2, "bcd", 3 ' transform to «Sub2 3,"bcd",True»
End Sub
'----------------------------------------------------------------------------------------------------
Sub CallSub1_3()
Sub1 3, "cde", 4 ' transform to «Sub2 4,"cde",True»
End Sub
'====================================================================================================
'====================================================================================================
Sub Sub2(par3&, par2$, par4 As Boolean)
Dim arr(2) As String
arr(0) = par3 & " — " & TypeName(par3)
arr(1) = par2 & " — " & TypeName(par2)
arr(2) = par4 & " — " & TypeName(par4)
MsgBox Join(arr, vbLf)
End Sub
'====================================================================================================
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Решил попробовать путь «править на месте» вместо очень длинного и потому потенциально напичканного ошибками: «выгрузить модули в отдельные файлы "*.bas" → открыть их в Excel → забрать данные с листа в массив → обработать массив в памяти, произведя необходимые замены → сохранить файл → удалить старый модуль → добавить новый модуль (файл "*.bas")» Чтобы реализовать путь "править на месте", надо построчно читать строки во всех модулях и вот тут у меня сходу поползли проблемы:
Не могу получить доступ к проекту VBA активной книги или надстройки (ошибки на 7ой строке)
Код
Option Explicit
Option Private Module
'====================================================================================================
Sub ParseCode()
Dim VProj As VBIDE.VBProject, VComp As VBIDE.VBComponent, VMod As VBIDE.CodeModule
Set VProj = ActiveWorkbook.VBProject
Set VComp = VProj.VBComponents("Macro")
For Each VComp In VProj.VBComponents
Debug.Print VComp.Name
Set VMod = VComp.CodeModule
Next VComp
End Sub
'====================================================================================================
UPD:копаю настройки доступа к объектной модели UPD2: Галочка в настройках безопасности "Доверять доступ к объектной модели VBA" решило проблему - работаю дальше
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄