Ja, mein Tipp ist, das umzustrukturieren.
Zur Zeit hast du die rekursive Funktion und eine Schleife miteinander verwurstet.
IMHO besser: Du machst eine Schleife, in der du über die DocuemntCollection iterierst und in jedem Durchlauf ermittelst du die "Blätter" des aktuellen Dokuments.
While not doc is nothing
rekursiveFunktion()
Set doc = dc.getNextDocument
Loop
Evtl hilft das schon