VBA si cloud pentru activitati office

In urma cu ceva timp am fost contactat de un client pentru un proiect care presupunea automatizarea unor activitati de baza intr-o firma proaspat infiintata. In acest articol, voi prezenta mici detalii despre proiect si voi descrie felul in care am folosit VBA pentru a-mi atinge scopul.

Firma care a apelat la mine realizeaza huse de telefon personalizate pe care le vinde prin Amazon. Cateva din imaginile care trebuiau imprimate erau create in firma dar cele mai multe, erau cumparate de la artisti prin internet astfel ca pe calculatorul firmei erau aproape 2 milioane de imagini unice in format mare. Aceste imagini trebuiau redimensionate pentru a fi adaptate diferitelor tipuri de telefoane, proces care era automatizat direct din Photoshop. Dupa redimensionarea imaginilor pentru cateva tipuri de telefoane, pe calculator erau un numar imens de imagini care trebuiau urcate pe un server, iar fiecare in parte trebuia sa aiba cate un link asociat care trebuia stocat in fisiere Microsoft Excel impreuna cu informatii suplimentare, cum ar fi locatia imaginii originale, numarul de articole comandate, adrese ale clientilor etc.

Mi s-a cerut sa gasesc o cale de a pune pozele pe internet pentru a fi accesate de client printr-un link care poate fi generat in mod predictibil iar informatiile sa fie stocate in foi de calcul. Asociatii firmei erau familiarizati cu utilizarea calculatorului, unul din ei fiind expert in grafica pe calculator si au incercat timp de 2-3 saptamani sa rezolve singuri problema. Solutiile gasite erau foarte scumpe astfel incat productia nu putea fi inceputa.

Alegerea solutiei pentru a face upload la poze

Prima varianta care a venit in minte asociatilor firmei a fost cumparea unui spatiu web care sa fie folosit atat pentru siteul web cat si pentru a avea link disponibil pentru imagini pentru a fi accesat de pe Amazon. De regula, un site web nu are nevoie de mult spatiu iar pretul este relativ mic dar cand ai de urcat peste un milion de imagini, solutia este foarte scumpa.

O varianta rezolabila doar la prima vedere a fost efectiv plasarea unui server web avand ca sistem de operare o distributie Linux tocmai la adresa firmei. Aceasta varianta presupunea costuri ulterioare de timp si bani cum ar fi cumpararea unui IP static, instalarea distributiei linux, instalarea serverului web (nginx sau apache), instalarea unei interfate grafice catre server (iar cele mai user friendly costa bani). De asemenea, este o solutie riscanta din punct de vedere al securitatii (serverul se poate strica altfel esti obligat sa faci back-up pe hardisk-uri externe).

Stocarea pozelor pe Amazon Drive era destul de scumpa. Alte servicii de clouding nu erau dorite din cauza pretului sau a limitelor tehnice. Unele dintre ele aveau spatiu de stocare ok dar limitau numarul de fisiere, iar altele cum ar fi Google Drive, genereaza link-uri random pentru fiecare fisier. A pune pozele pur si simplu pe internet pe vreo retea de socializare era riscant pentru ca link-urile catre fisiere se pot schimba oricand (Facebook a facut o astfel de schimbare destul de recent).

Cea mai buna solutie pe care am gasit-o in acel moment a fost pCloud care ofera spatiu de stocare rezonabil si o aplicate prin care vizualizezi spatiul de stocare ca facand parte din memoria calculatorului. De asemenea pCloud ofera si independenta fata de locatie, fisierele putand fi urcate sau sterse de oriunde. Tot prin aceasta varianta s-au redus costurile pentru stocarea ulterioara a unui site web.

Testele pe care le-am facut pe pCloud au durat cateva ore cu scopul de a gasi bug-uri si limite (intotdeauna fac asta si le repet la urmatoarele proiecte chiar daca sunt similare). Am gasit doua bug-uri irelevante rezolvabile cu refresh. De asemenea, am urcat timp de cateva ore peste un milion de poze de cativa kb dar nu am atins vreo limita a numarului de fisiere ce pot fi urcate. Nu sunt probleme la accesarea simultana de pe mai multe calculatoare a spatiului de stocare. Se pot crea si link-uri personalizate pentru diferite categorii de imagini prin crearea de foldere fara vor figura in link.

VBA in Excel

Un numar atat de mare de imagini nu poate fi gestionat manual astfel ca mi s-a cerut sa creez functii in Excel (Macros) utilizand VBA care sa indeplineasca doua activitati: introducerea in baza de date a numelui fisierului si atasarea unui prefix in fata numelui. Rezultatul acestor functii a fost introducerea automata de link-uri si nume de fisiere in tabele prin apelarea lor utilizand butoate create tot in Microsoft Excel. Pentru detalii suplimentare, intentionez sa realizez un tutorial VBA.

P.S

Solutiile prezentate mai sus pot fi implementate in mai putin de 3 ore chiar daca nu esti experimentat. Pe internet se gasesc coduri usor de modificat pentru diferite functii pe care le conectezi la diferite butoane create in Excel, care reprezinta interfata grafica. Daca utilizezi linux, poti obtine acelasi rezultat, realizand rapid mici programe in shellscripting dar interfata grafica nu este atat de usor de realizat.