Io non ho l'abitudine di commentare un'intera sub... è estremamente
scomodo con quell'editor... e non mi ero accorto che ignora anche gli
apici...
Scusa, non mi ero spiegato bene: se usi "rem" *non* le elenca, se usi
l'apice le elenca!
...zot...
Magari nei prossimi giorni cerco di correggerla.
Non mi sembra il caso... non è un bug... ma un comportamento coerente.
Purtroppo no...
Comunque evitiamo ogni genere di commento, ecco una versione in cui puoi
scegliere (con ancora qualche limite, ma più libertà) quello che vuoi
visualizzare:
REM ***** BASIC *****
Option Explicit
private lCounter as long
private oNewDoc as object
private oStartDoc as object
private oMacroSheet as object
'Più questo valore è elevato, più le sub potranno iniziare lontano
dall'inizio riga
'Se si vogliono vedere tutte le macro commentate e non
const iLimiteMax = 7
'Se si vuole evitare di elencare le macro commentate con "REM"
'const iLimiteMax = 5
'Se si vuole evitare di elencare tutte le macro commentate
'const iLimiteMax = 2
'________________________________________________________________________________________________________________________
sub elencaMacro()
dim sLibraryName() as string
dim i as long
sLibraryName() = BasicLibraries.getElementNames()
lCounter = 0
oStartDoc = ThisComponent.BasicLibraries
oNewDoc = StarDesktop.loadComponentFromUrl("private:factory/scalc",
"_blank", 0, dimArray())
oNewDoc.sheets.getByIndex(0).name = "Macro"
oMacroSheet = oNewDoc.sheets.getByName("Macro")
oMacroSheet.getCellByPosition(0, lCounter).string = "Librerie"
oMacroSheet.getCellByPosition(1, lCounter).string = "Moduli"
oMacroSheet.getCellByPosition(2, lCounter).string = "Macro e Funzioni"
oMacroSheet.getcellbyposition(0, lCounter).CharHeight="14"
oMacroSheet.getCellByPosition(0, lCounter).CharWeight = 150
oMacroSheet.getcellbyposition(1, lCounter).CharHeight="14"
oMacroSheet.getCellByPosition(1, lCounter).CharWeight = 150
oMacroSheet.getcellbyposition(2, lCounter).CharHeight="14"
oMacroSheet.getCellByPosition(2, lCounter).CharWeight = 150
lCounter = lCounter + 1
for i = lbound(sLibraryName()) to ubound(sLibraryName())
oStartDoc.loadLibrary(sLibraryName(i))
getMacroText(sLibraryName(i))
next i
end sub
'________________________________________________________________________________________________________________________
sub getMacroText(sLibraryName as string)
dim sModuleNames() as string
dim sModuleText as string
dim i as long
dim oLibrary as object
oLibrary = oStartDoc.getByName(sLibraryName)
sModuleNames() = oLibrary.getElementNames()
for i = lbound(sModuleNames()) to ubound(sModuleNames())
sModuleText = oLibrary.getByName(sModuleNames(i))
getMacroNames(sModuleText, sModuleNames(i), sLibraryName)
next i
end sub
'________________________________________________________________________________________________________________________
sub getMacroNames(sMacrosText as string, _
ByVal sModuleName as string, _
ByVal sLibraryName as string)
dim sMacroLines() as string
dim i as long
sMacroLines() = split(sMacrosText, chr(10))
for i = lbound(sMacroLines()) to ubound(sMacroLines())
If not (InStr(lCase(sMacroLines(i)), "end sub") > 0) or _
not (InStr(lCase(sMacroLines(i)), "end function") > 0) then
If ((InStr(lCase(sMacroLines(i)), "sub ") > 0) and _
(InStr(lCase(sMacroLines(i)), "sub ") < iLimiteMax)) then
oMacroSheet.getCellByPosition(0, lCounter).string =
sLibraryName
oMacroSheet.getCellByPosition(1, lCounter).string =
sModuleName
oMacroSheet.getCellByPosition(2, lCounter).string =
separateMacroName(sMacroLines(i), "sub")
lCounter = lCounter + 1
end If
If (InStr(lCase(sMacroLines(i)), "function ") > 0) and _
(InStr(lCase(sMacroLines(i)), "function ") <
iLimiteMax) then
oMacroSheet.getCellByPosition(0, lCounter).string =
sLibraryName
oMacroSheet.getCellByPosition(1, lCounter).string =
sModuleName
oMacroSheet.getCellByPosition(2, lCounter).string =
separateMacroName(sMacroLines(i), "function")
lCounter = lCounter + 1
end If
end If
next i
end sub
'________________________________________________________________________________________________________________________
Function separateMacroName (sMacroTitle as string, sType as string) as
string
dim sSplitted() as string
dim lI as long
sSplitted() = split(sMacroTitle, " ")
lI = 0
for lI = 0 to UBOUND(sSplitted())
if InStr(LCase(sSplitted(lI)), sType) > 0 then
if InStr(LCase(sSplitted(lI + 1)), "(") > 0 then
sSplitted() = split(sSplitted(lI + 1), "("
separateMacroName = sSplitted(0)
exit function
else
separateMacroName = sSplitted(lI + 1)
exit function
end if
end if
next lI
End Function
'sub esempio_sub_rem_con_apice
'end sub
REM sub esempio_sub_rem_con_REM
REM end sub
'function esempio_function_rem_con_apice
'end function
REM function esempio_function_rem_con_REM
REM end function
REM ***** FINE BASIC *****
A meno che uno volgia soltanto elencare il codice attivo...
Ora lo puoi fare!
Ciao!
Emanuele.
P.S.
Spero non ci siano troppe righe spezzate...
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]