Max M

Max M specjalista, devim

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Witam, miałem i zgubiłem procedurę, która "przelatuje" przez cały projekt VBA w skoroszycie i wylistuje nazwy procedur i funkcji wraz z liczbą linii kodu. Czy ma ktoś z Was czy muszę to budować ponownie? Pozdrawiam
Bartek Borczyk

Bartek Borczyk Operator liczb i
słów

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

http://peltiertech.com/list-vba-procedures-by-vba-modu...
Max M

Max M specjalista, devim

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Dzięki, działa ale wymaga korekcji:
brak podziału na moduły i arkusze, sub i function...
Ale już coś :)
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

No to tak na szybko. zamień tą linijkę:
sOutput(2 + iRow) = vbComp.Name & ": " & sProcName

na:
sOutput(2 + iRow) = vbComp.name & " [" & vbMod.CountOfLines & "] - " & sProcName & " [" & iLine & "]"

I masz ilość inii kodu per moduł oraz liczbę pierwszego wiersza dla nazwy tej procedury/funkcji.
Max M

Max M specjalista, devim

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Dzięki serdeczne! Przerobiłem to po swojemu na procedury funkcjonalne listujące do tablicy (wiersze x kolumny):
1. Listowanie modułów: Nazwa, typ, Liczba linii kodu, Liczba procedur
2. Listowanie procedur: Nazwa, typ, Liczba linii kodu, Nazwa procedury, Nr linii procedury

Czy jest możliwość rozpoznania procedur -czy to Sub czy Function? Ew. w jaki sposób?
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Pewnie jest jeszcze inna droga, ale takie coś mi wyszło i w większości się sprawdza.
Na początku deklaracja zmiennej string
 dim k$


Modyfikacja jeszcze raz:
k = ""
If InStr(1, vbMod.Lines(iLine, 3), "Sub ") > 0 Then k = "Procedura"
If InStr(1, vbMod.Lines(iLine, 3), "Function ") > 0 Then k = "Funkcja"
sOutput(2 + iRow) = vbComp.name & " [" & vbMod.CountOfLines & "] - [" & _
k & "] " & sProcName & " [" & iLine & "]"


Gdzie wykryje to podstawi.
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Oskar S.:
Pewnie jest jeszcze inna droga, ale takie coś mi wyszło i w większości się sprawdza.
Na początku deklaracja zmiennej string
 dim k$


Modyfikacja jeszcze raz:
k = ""
If InStr(1, vbMod.Lines(iLine, 3), "Sub ") > 0 Then k = "Procedura"
If InStr(1, vbMod.Lines(iLine, 3), "Function ") > 0 Then k = "Funkcja"
sOutput(2 + iRow) = vbComp.name & " [" & vbMod.CountOfLines & "] - [" & _
k & "] " & sProcName & " [" & iLine & "]"


Gdzie wykryje to podstawi.
Instr zrobi błędy. Np. dla zmiennych "MobSub", "SuperFunction ". :)
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Sławek - jakiś przykład?
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Oskar S.:
Sławek - jakiś przykład?
Podałem dwa. Linie z takimi tekstami zostaną błędnie oznaczone jako procedury/Funkcje.
Oskar Shon

Oskar Shon Dodatki do Office
www.VBATools.pl

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Sławek, no chwila. Nie przypominam sobie o jakiś specjalnych właściwościach zmiennych o zarezerwowanych nazwach "MobSub" i "SuperFunction ". Pytam z ciekawości - bo może są.
Skoro to nazwy zamiennych (wpisane z palca), to nie będzie problemów aby je po prostu zmienić w kodzie na dowolnie inne. Zapisać w projekcie aby problemu nie było

Pow kod z linku jaki podał Bartek, działa szybko, a to dlatego ze nie pochla się nad każdą linią.
Można oczywiście przykombinować jeszcze i analizować każdy wpis aby wyeliminować błędy. Niemniej jednak u mnie testy wykazały że 3 linie do analizy wystarczą.

Sam byłem ciekawy jego pracy, ponieważ nikt mnie nie rozlicza lub promuje za nadmierną ilość kodu. Sam uważam ze im mniejszy i oparty właściwych na obiektach jest efektywniejszy, co oczywiście nie idzie w parze jeśli mamy przysłowiowe 50 groszy za linię kodu.
Max M

Max M specjalista, devim

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Dzięki! Dzisiaj nie mam czasu na test, ale wczoraj sprawdziłem, że analiza linia po linii w przypadku ok. 30 modułów, 400 procedur i 50 tys linii kodu to czas naprawdę dłuższy, ale niezauważalnie ... :)Ten post został edytowany przez Autora dnia 21.11.14 o godzinie 10:16
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Oskar S.:
Sławek, no chwila. Nie przypominam sobie o jakiś specjalnych właściwościach zmiennych o zarezerwowanych nazwach "MobSub" i "SuperFunction ". Pytam z ciekawości - bo może są.
Skoro to nazwy zamiennych (wpisane z palca), to nie będzie problemów aby je po prostu zmienić w kodzie na dowolnie inne. Zapisać w projekcie aby problemu nie było
Chodziło mi o to, że lepiej użyć MID niż INSTR.
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Oskar S.:
Sławek, no chwila. Nie przypominam sobie o jakiś specjalnych właściwościach zmiennych o zarezerwowanych nazwach "MobSub" i "SuperFunction ". Pytam z ciekawości - bo może są.
Skoro to nazwy zamiennych (wpisane z palca), to nie będzie problemów aby je po prostu zmienić w kodzie na dowolnie inne. Zapisać w projekcie aby problemu nie było
Chodziło mi o to, że lepiej użyć MID niż INSTR.
Wtedy identyfikacja jest jednoznaczna.

Pow kod z linku jaki podał Bartek, działa szybko, a to dlatego ze nie pochla się nad każdą linią.
Jak to nie nad każdą?
Do While iLine < vbMod.CountOfLines
>
Sam byłem ciekawy jego pracy, ponieważ nikt mnie nie rozlicza lub promuje za nadmierną ilość kodu. Sam uważam ze im mniejszy
Mam podobne podejście. Im mniej tym lepiej.
Max M

Max M specjalista, devim

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Oskar S.:
oczywiście nie idzie w parze jeśli mamy przysłowiowe 50 groszy za linię kodu.

To już wiadomo skąd tyle kodu. ;)
Potem użytkownik taki jak ja walczy ze zrozumieniem potrzeby tasiemców. Przykład: 3 programiki w Excel VBA po ok. 50 tys. linii kodu i kilkaset procedur... :)Ten post został edytowany przez Autora dnia 21.11.14 o godzinie 14:11
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: Inwentaryzacja kodu VBA -poszukiwana procedura

Adax A.:
Oskar S.:
oczywiście nie idzie w parze jeśli mamy przysłowiowe 50 groszy za linię kodu.

To już wiadomo skąd tyle kodu. ;)
Potem użytkownik taki jak ja walczy ze zrozumieniem potrzeby tasiemców. Przykład: 3 programiki w Excel VBA po ok. 50 tys. linii kodu i kilkaset procedur... :)
Jak zaczną mi płacić od linii kodu to przestanę stosować pętelki :)

Następna dyskusja:

Unikaty z kolumny - bez VBA...




Wyślij zaproszenie do