• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Microsoft Scripting Runtime automatisch aanzetten met macro

Status
Niet open voor verdere reacties.

ArjanA

Gebruiker
Lid geworden
25 mrt 2010
Berichten
6
Hallo,

Ik ben bezig om een declaratieformulier te maken voor mijn collega's. De meesten hebben automatisch een netwerkschijf toegewezen gekregen, maar niet iedereen. Is het mogelijk om middels een macro automatisch Microsoft Scripting Runtime aan te zetten zodat ik de FSO functie kan gebruiken om dit te controleren en middels een andere macro aan te laten passen?
 
Dat kan wel, maar waarom zou je dat doen? De bibliotheek kun je makkelijk met Late Binding gebruiken, dan werkt hij overal en altijd.
 
Dank je OctaFish voor je reactie, maar die roept dan weer de volgende vraag op: wat is Late Binding? Mijn VBA kennis is niet zo groot dat ik dit al eens heb gebruikt :(
 
Jij gebruikt nu Early Binding, waarbij je een bibliotheek hebt aangezet. Heeft voordelen (IntelliSense, lichte snelheidswinst) maar maakt het delen dus lastig omdat anderen die bibliotheek ook aan moeten zetten.
Met Late Binding heb je daar geen last van, omdat je de bibliotheek pas aanroept als je hem nodig hebt in de procedure zelf. Vandaar de 'Late'.
Hier een voorbeeldje van snb waarin met LB twee objecten worden opgeroepen zonder bibliotheken.

Code:
  set fs=createobject("scripting.filesystemobject")
  sn=split(createobject("wscript.shell").exec("cmd /c dir ""G:\OF\*.mp3"" /b/a-d/s").stdout.readall,vbcrlf)

  With CreateObject("shell.application")
    for j=0 to ubound(sn)-1
      c01=fs.getfile(sn).getbasename

      with .namespace(fs.getfile(sn).parentfolder)
        c02 = .getdetailsof(.Items.Item(c01), 15)
        c03=  .getdetailsof(.Items.Item(c01), 16)
      end with
    next
  end with
End With
 
toegepast op FSO: late binding:

Code:
With createobject("scripting.filesystemobject")
  for each it in .drives

  next
end with
 
Voor het delen maakt het niets uit, behalve als je een verwijzing had gezet naar een nieuwere versie van een externe library dan je collega of klant ter beschikking heeft. In dat geval is lat ebinding beter omdat VBA het dan aan Windows overlaat om de beschikbare dll te selecteren. Dit geldt ook als je bijvoorbeeld een andere Office applicatie aanroept en niet iedereen heeft de beschikking over dezelfde Office versie.
 
Dank jullie voor je reacties. Ik ga ermee aan de slag. Het is me wat duidelijker geworden wat Late Binding doet en de werking ervan

Voor de duidelijkheid: het gaat inderdaad om meerdere Office versies.

Als ik er helemaal uit ben zal ik het onderwerp sluiten, zo niet, dan laat ik weer van mij horen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan