Office Guru

Fájlok, könyvtárak bütykölése SharePointon VBA segítségével

2017. március 01. - Office Guru

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:

sp01.bmp

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.

sp03.bmpInnentő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:

sp04.bmpÉs innentől kezdve az első képen bemutatott üres könyvtár pillanatok alatt megtölthető automatikusan:

sp02_1.bmp

A bejegyzés trackback címe:

https://officeguru.blog.hu/api/trackback/id/tr6512305915

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

HanG99 2017.03.02. 20:42:16

nagyon érdekes, jelenleg sokat foglalkoztató kérdésben sokat segít.
If FileSO.FileExists(LocalAddress) Then - ezt fogom kicsit reszelgetni, hogy egy naponta generálandó és felülírandó file helyét kitakaríthassam, ugyanis ha a makró előzőnap nem futott rendesen, akkor a KILL parancs lyukra fut, illetve néha írésvédettnek látja a filet a rendszer.
Ennek (írásvédettség) az ellenőrzésére és az átállítására kellene még valami jó trükk.
süti beállítások módosítása