automatizare activitati

Informatii despre cum se utilizeaza Microsoft Excel 2003. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
maverick_65
Mesaje: 4
Membru din: Vin Apr 17, 2020 1:45 pm

automatizare activitati

Mesaj de maverick_65 » Vin Apr 17, 2020 3:56 pm

Va salut!
Pe un calculator cu Windows XP SP3, Office 2003, Office 2007 compatibility pack si Romania la „regional settings”, am nevoie sa automatizez (cu un „bat” sau „cmd” prin task scheduler, cu rulare la o ora fixa in fiecare zi) o succesiune de activitati, respectiv:
1. se descarca in directorul „c:\lucru” un fisier “xlsx” de pe un server ftp, fisierul descarcat are in fiecare zi acelasi numar de coloane (cod_id, detalii, judet, localitate, telefon), alt numar de randuri, alta denumire dar zilnic are sirul “noutati” in denumire (descarcarea am rezolvat-o cu wget si ceva parametri);
2. trebuie „aflata” denumirea fisierului descarcat (este singurul fisier *.xlsx din directorul c:\lucru si are o singura foaie de lucru denumita „Sheet”), se deschide fisierul descarcat, se insereaza o noua coloana denumita „UAT” dupa coloana „localitate”, se scrie o functie in prima celula de sub „UAT” si se trage functia in jos pana la ultimul rand completat din fisier astfel incat sa se aplice corespunzator in fiecare celula, se seteaza paginarea pe A4 landscape, fit to 1 page wide by 100 tall, marginile de 1cm la left, right, top, bottom si 0,5cm la header si footer, la footer se selecteaza „page 1 of ?”, la „rows to repeat at top” se selecteaza primul rand din fisier, se selecteaza coloana B (detalii) si la „format cells”-„tools”-„alignment” se bifeaza „wrap text”, se selecteaza toate coloanele si se face un auto adjust columns, se selecteaza toate inregistrarile si se alege „all borders” astfel incat la imprimare sa fie linii intre inregistrari. Functia mentionata mai sus, in coloana „UAT”, trebui sa citeasca coloana „localitate” pana la ultimul rand unde este completat „cod_id” si sa extraga de acolo doar denumirea comunei sau sa lase celula goala daca este celula goala si la „localitate”. Coloana „localitate” vine completata cu una din aceste 3 variante: Sat.Gaina (Com. Cocosul) sau Com.Cocosul sau celula este goala. Dupa acest exemplu, pe coloana „UAT” trebuie sa apara Com.Cocosul pentru primele 2 variante sau celula goala daca in „localitate” este tot celula goala. Am gasit si adaptat o functie care sa „proceseze” primele 2 variante dar nu stiu cum sa o adaptez sa tina cont si de a treia varianta, cea cu celula goala: =IF(ISNUMBER(FIND(”Sat.”;D2));MID(D2; SEARCH(”(”;D2)+1; SEARCH(”)”;D2)-SEARCH(”(”;D2)-1);D2)
3. se salveaza fisierul si se muta respectivul *.xlsx din c:\lucru in c:\validat astfel incat c:\lucru sa ramana gol pentru a doua zi cand totul se repeta pe un nou fisier ce urmeaza sa fie descarcat.

Exista vreo sansa sa automatizez tot ce am descris?

Va multumesc!

IPP
Moderator
Moderator
Mesaje: 4196
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: automatizare activitati

Mesaj de IPP » Vin Apr 17, 2020 5:41 pm

Buna ziua

Chiar daca, probabil se poate automatiza procesul descris de dvs., eu as avea retineri in a incerca o automatizare totala pentru ca exista prea multe locuri unde lucrurile ar putea sa mearga rau (probleme la sau in generarea fisierului sursa, copierea lui) sau, daca vorbim la nivel strict de prelucrarea din Excel, sa fie facute unele compromisuri cu efecte nedorite in alta parte (ex. un macro care sa ruleze automat la deschiderea fisierului, fara a cere permisiune inseamna low level la nivelul de securitate, nu se recomanda deloc asa ceva).
(La un moment dat am facut un fisier care trebuia sa isi ia informatia de la un fisier sursa generat de o aplicatie terta si sa faca o prelucrare-raport. Au fost foarte multe cazuri in care generarea nu a avut loc (practic a ajuns sa se prelucreze aceeasi versiune a fisierului sursa) si tot la supervizare/verificare manuala s-a ajuns atunci, insa cu nervi si consum de timp suplimentari. O fi existand si vreo versiune "profi" de verificari insa eu unul am alergie la varianta in care codul devine x 3 ori mai mare si stufos doar pentru ca trebuie verificate/tratate niste situatii care in mod normal nu ar trebui sa existe daca se stabileste de la bun inceput (si se respecta) unele lucruri.)

Eu as incerca sa impart procesul de prelucrare in doua, supervizat sau rulat (chiar daca asta va insemna deschiderea unui fisier si rularea unui macro) manual, in conditii normale ar trebui sa fie o treaba de 2 minute:
a) partea de obtinere a fisierului sursa. Nu am de comentat aici pentru ca pana acum eu nu am facut prelucrari automatizate in excel care sa implice folosirea ftp ci doar copieri din diverse partitii sau foldere sharuite (ex. Dropbox)
b) partea de prelucrare propriuzisa.
Un fisier excel independent care sa contina macro de prelucrare (deschidere fisier sursa, prelucrare, generare fisier-rezultat, curatenie-mutat/sters fisere sursa), macro rulat de catre un utilizator prin apasarea unui buton. Cel putin la prima vedere (daca nu vor exista in fisierul .xlsx niste lucruri care sa deranjeze rau Excel 2003), cred ca acel macro ar putea face intreaga prelucrare descrisa de dvs. in sensul in care, daca ati facut intreaga prelucrare "manual" fara sa aveti erori de compatibilitate, nu vad de ce nu ar merge si automatizat via macro.

IP

IPP
Moderator
Moderator
Mesaje: 4196
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: automatizare activitati

Mesaj de IPP » Vin Apr 17, 2020 9:12 pm

Buna ziua

Atasat aveti spre testare o propunere legata exclusive de prelucrarea fisierului excel:

Premise:
-aveti deja creata structura de foldere:
C:\lucru
C:\validat

-aveti deja un fisier sursa in C:\lucru\ care are in numele sau cuvantul "noutati" si e de tip .xlsx
-salvati in locatia de mai sus fisierul atasat de mine (VBA-Prelucrare.xls)
-in editorul macro din fisierul de mai sus verificati sa fie bifata si libraria Microsoft Scripting Runtime.

Deschideti fisierul VBA-Prelucrare.xls, cu enable macro. (daca Excelul dvs. are setari de securitate low nu va aparea fereastra respectiva, daca e pe high, nu va rula nimic)

Rulati macro, apasand butonul prelucreaza, daca nu vor fi erori, dupa terminarea prelucarii veti vedea un mesaj box "Gata"

Sper sa nu apara erori, desi codul macro l-am facut in Excel 2003 mi-e imposibil sa reproduc toate conditiile pe care le aveti dvs. (ex. am win 10 si vreo 2 versiuni de excel pe acelasi calculator si nu tin minte sa fi fost nevoie sa-mi instalez pachetul de compatibilitate)

IP
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

maverick_65
Mesaje: 4
Membru din: Vin Apr 17, 2020 1:45 pm

Re: automatizare activitati

Mesaj de maverick_65 » Sâm Apr 18, 2020 9:54 am

Buna dimineata!
Va multumesc foarte mult pentru timpul acordat, pentru tot. Astazi ma duc la birou sa probez, revin cu un mesaj.
Toate cele bune!

maverick_65
Mesaje: 4
Membru din: Vin Apr 17, 2020 1:45 pm

Re: automatizare activitati

Mesaj de maverick_65 » Sâm Apr 18, 2020 8:28 pm

Buna seara!
Multumesc, multumesc, multumesc. Functioneaza, cu mici ajustari am reusit sa automatizez totul, printr-un cmd introdus in task scheduler, eliminand astfel interventia factorului uman.
Va doresc sarbatori fericite si numai bucurii.

maverick_65
Mesaje: 4
Membru din: Vin Apr 17, 2020 1:45 pm

Re: automatizare activitati

Mesaj de maverick_65 » Mie Feb 24, 2021 11:34 am

Buna ziua!
Scuze, sper sa nu gresesc daca nu mai deschis un nou topic, avand in vedere faptul ca tot la un fel de "automatizare activitati" se refera speta de mai jos.
Am rugamintea, daca se poate, sa ma ajutati cu o rezolvare la ceea ce scriu mai jos, incerc sa automatizez o activitate dar nu reusesc. Zilnic primesc mai multe fisiere excel, in ele sunt 7 coloane (de la A la G), numarul de randuri difera de la un fisier la altul si de la o zi la alta, doar anumite randuri au date in coloana G, ultimele 3 coloane (E,F,G) au date tip data (zz.ll.aaaa). Am nevoie de un macro VBA care sa faca urmatoarele:
1. deschide toate fisierele cu extensia *.xls si *.xlsx dintr-un director specificat;
2. selecteaza/filtreaza doar randurile care au data (valida) completata pe coloana G;
3. daca data nu este de forma zz.ll.aaaa atunci face conversia datei in forma zz.ll.aaaa;
4. verifica daca data completata pe coloana G este egala sau ulterioara datei completate pe coloana E;
5. exporta intr-un singur fisier, in format csv, delimitat cu semnul ; toate randurile din fisierele *.xls si *.xlsx gasite la pct. 1, fara randurile care nu respecta conditia de la pct. 4 sau care nu au data valida iar din aceste randuri exporta doar continutul coloanelor A, B, C, G.

Aveti vreo idee daca se poate face asa ceva?

Va multumesc!

Scrie răspuns

Înapoi la “Intrebari despre Excel 2003”