Ha az elmúlt posztokban amúgy is az Excel és egyéb Office-modulok vagy programok kapcsolatát feszegettem, akkor folytassuk ezzel ismét, ugyanis a mai nap egy olyan apró kódsor kerül bemutatásra, amelynek segítségével roppant egyszerű módon tudunk fájlokat SharePointra feltölteni (de a módszer megismerésével sokkal többre is képesek leszünk).
Igazából ennél a témánál túlságosan nagy bevezetőt nem is lehet írni, hiszen a cél egyértelmű: van egy meghatározott fájlunk valahol (vagy usertől bekért elérhetőségünk), amit egy gombnyomással szeretnénk automatikusan egy meghatározott (vagy user által megadott) SharePoint folderbe bemásolni.
Tehát jelenleg érintetetlen az adott Document folder a SharePointon:
Szépen Alt+F11 lenyomásával az Excelünkből vándoroljunk be a VBA-editorba, majd kezdjük is el a kódunkat. Első lépésként értelemszerűen a változók deklarálásával kezdünk, alapesetben 4 változót fogunk használni.
Dim SharepointAddress As String
Dim LocalAddress As String
Dim WSNET as Object
Dim FileSO as Object
Ahogy látszik, az első két változó a SharePoint folder illetve a felmásolandó fájlunkat tartalmazó folder elérhetőségét fogja tárolni, a másik kettő objektum típusú változóra pedig konkrétan a SharePointhoz való kapcsolódás okán lesz szükségünk. Töltsük is fel őket, elsőként értelemszerűen a két útvonal-változót:
SharepointAddress = "\\officeguru.sharepoint.com\documents\fontos" & "\"
LocalAddress = "C:\1.bmp"
Figyeljünk oda arra, hogy a SharePointunk elérhetőségének megadásánál ne adjuk meg a http protokollt, illetve a tartománynév előtt mindenképp legyen két backslash karakterünk is. Pluszban ne felejtsünk még egy backslasht a végére is odavarázsolni.
Aztán jöhet a kódunk kulcsa, a két objektum típusú változó feltöltése.
Set WSNET = CreateObject("WScript.Network")
Set FileSO = CreateObject("Scripting.FileSystemObject")
A CreateObject("WScript.Network") objektumot jó megjegyezni hosszútávon is, hiszen ennek segítségével kapcsolódhatunk hálózati erőforrásokhoz, könyvtárakhoz, tárhelyekhez, nyomtatókhoz és információt gyűjthetünk be más, a hálózaton elérhető felhasználóról vagy akár saját magunkról is. Azaz egy ilyen objektumot kell akkor is használnunk, ha mondjuk nyomtatók akarnánk hozzáadni, majd defaultként beállítani.
A második objektum szintén elég fontos alaptudnivaló (ahogy erről már volt itt szó korábban), hiszen a FileSystemObject segít nekünk abban, hogy információkat gyűjtsünk be könyvtárakról, fájlokról, töröljünk, létrehozzunk könyvtárakat, fájlokat mozgassunk stb. A Scripting azt jelenti, hogy az FSO ebben a könyvtárban, a Scrrun.dll-ben érhető el.
Ha ezzel megvagyunk, akkor nagyjából már csak nagyjából a művelet elvégzésére van szükségünk (jelen esetben a másolásra):
If FileSO.FileExists(LocalAddress) Then
FileSO.CopyFile LocalAddress, SharepointAddress
End If
Az If feltételes utasításra azért van szükségünk, mert az FSO FileExists metódusa segítségével először megnézzük, hogy egyáltalán létezik-e a másolandó fájl, hiszen ha igen, akkor az FSO CopyFile metódusa segítségével meg is ejtük a műveletet - ellenkező esetben célszerű visszatérni a felhasználóhoz valamilyen üzenettel.
Ezután már nincs más hátra, mint esetlegesen a változók kiürítése és a szubrutin befejezése.
Innentől kezdve már csak a képzeletünk és az elvégzendő feladat szab határt a lehetőségeknek, hiszen akár létrehozhatunk egy gombokkal vezérelhető userformot is vagy akár automatikusan beépíthetjük a felmásolást egy hosszabb kódunkba:
És innentől kezdve az első képen bemutatott üres könyvtár pillanatok alatt megtölthető automatikusan: