Generarea unor pagini word folosind date din excel.

Import/Export, obiecte embedded, etc
vdingo11
Mesaje: 40
Membru din: Mie Ian 09, 2013 1:33 pm

Generarea unor pagini word folosind date din excel.

Mesaj de vdingo11 » Mar Feb 25, 2014 8:57 pm

Buna seara.
Am un document excel care contine (simplificat urmatoarele coloane)
nr. crt | nume | clasa |
Populat ar fi ceva de genul:
1 | Popescu | 12 A
2 | Iliescu | 12 C
3 | Marinescu | 12 A
.......
Nr de elevi pentru fiecare clasa este variabil (nu este acelasi pentru toate clasele)

Plecand de la acest fisier excel doresc sa generez un document word in care pentru fiecare clasa sa am cate o pagina cu elevii din acea clasa:
Pagina 1:
.............................
Text introductiv
...........................
Clasa: 12 A
nr. Crt | Nume
1 | Popescu
2 | Marinescu

Pagina 2:
.............................
Text introductiv
...........................
Clasa: 12 C
nr. Crt | Nume
1 | Iliescu

Deci pentru fiecare clasa trebuie generat un tabel cu numele elevilor

Este posibil asa ceva fara VB?

Eu am lucrat cu letters dar acolo afisam pe fiecare linie tot ce gaseam pe o linie in excel. Acum trebuie si o filtrare inainte

Multumesc.
Am atasat si fisiere ca exemplu dar cred ca am prezentat destul de clar.

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

vdingo11
Mesaje: 40
Membru din: Mie Ian 09, 2013 1:33 pm

Re: Generarea unor pagini word folosind date din excel.

Mesaj de vdingo11 » Mie Feb 26, 2014 7:47 pm

Un sfat va rog.

Indigo
Mesaje: 774
Membru din: Sâm Sep 26, 2009 8:05 pm

Re: Generarea unor pagini word folosind date din excel.

Mesaj de Indigo » Mie Feb 26, 2014 10:27 pm

Salut,

Eu nu cred ca se poate fara cod VBA. Se poate face o filtrare a elevilor, functie de clasa (cu formule sau filtrarile native ale Excelului) si se pot pune in foi separate, dar de aici "trecerea" in Word nu cred ca se poate fara ajutorul unui macro. Macro care va putea crea un fisier word si copia aici acele date.
Eu am lucrat cu letters dar acolo afisam pe fiecare linie tot ce gaseam pe o linie in excel. Acum trebuie si o filtrare inainte
Apropo... Ce este acel "letters"? cu care ati lucrat.

Dr.Windows
Moderator
Moderator
Mesaje: 4570
Membru din: Vin Iul 31, 2009 7:32 am

Re: Generarea unor pagini word folosind date din excel.

Mesaj de Dr.Windows » Joi Feb 27, 2014 10:11 pm

Se poate si fara VBA... doar ca trebuie muuuulta rabdare si atentie. Instructiuni detaliate ai aici: HOW TO: Use Mail Merge to Create a List Sorted by Category in Word 2000 si iti recomand a repeti exemplul de acolo fix cu datele de acolo pana iti iese ca sa intelegi structura si apoi sa treci la exemplul tau cu clasele... oricum totul se va intampla in Word, Excelul il vei folosi doar sa pui CLASA pe prima coloana si sa sortezi tot tabelul in functie de aceasta (ca sa iti iasa).

In plus vezi si exemplul dat de Catalin aici: Re: scrisori circulare celule combinate.

vdingo11
Mesaje: 40
Membru din: Mie Ian 09, 2013 1:33 pm

Re: Generarea unor pagini word folosind date din excel.

Mesaj de vdingo11 » Vin Feb 28, 2014 5:46 am

Indigo scrie:Salut,
se pot pune in foi separate
Se pot pune auromat foi separate?
Indigo scrie: Apropo... Ce este acel "letters"? cu care ati lucrat.
era vorba de scrisori.

Cu VBA este complicat de facut ce doresc eu?

O sa incerc si ce mi-a recomandat dr. Windows doar ca in acele exemple ei nu folosesc tabel si nu stiu cum pot adauga cate o linie noua in tabel.
Credeti ca se poate si cu tabel?

Multumesc.

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

Re: Generarea unor pagini word folosind date din excel.

Mesaj de IPP » Vin Feb 28, 2014 7:47 am

Buna ziua

@vdingo11
Un punct de plecare ar putea fi subiectul Mail merge directory

IP

vdingo11
Mesaje: 40
Membru din: Mie Ian 09, 2013 1:33 pm

Re: Generarea unor pagini word folosind date din excel.

Mesaj de vdingo11 » Vin Feb 28, 2014 8:45 pm

Dr.Windows scrie:Se poate si fara VBA... doar ca trebuie muuuulta rabdare si atentie. Instructiuni detaliate ai aici: HOW TO: Use Mail Merge to Create a List Sorted by Category in Word 2000 si iti recomand a repeti exemplul de acolo fix cu datele de acolo pana iti iese ca sa intelegi structura si apoi sa treci la exemplul tau cu clasele... oricum totul se va intampla in Word, Excelul il vei folosi doar sa pui CLASA pe prima coloana si sa sortezi tot tabelul in functie de aceasta (ca sa iti iasa).

In plus vezi si exemplul dat de Catalin aici: Re: scrisori circulare celule combinate.
Am incercat acel exemplu dar nu imi iese deloc.
Nu imi dau seama unde gresesc
Am facut si doua sabloane si daca are cineva rabdare poate imi spune unde gresesc.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

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

Re: Generarea unor pagini word folosind date din excel.

Mesaj de IPP » Vin Feb 28, 2014 9:35 pm

Buna ziua

Atasat gasiti o propunere folosind macro. Am plecat de la ideea enuntata in mesajul meu anterior.

In esenta, se sorteaza tabelul-sursa, rezultatul sortat si filtrat se copiaza in fisierul Lista.docx urmat de un salt de pagina (astfel incat fiecare tabel sa fie pe o pagina noua).

Am folosit urmatorul cod:

Cod: Selectaţi tot

Sub Prelucrare()

'IPP - 28.02.2014

Application.ScreenUpdating = False

Dim appWord As Word.Application
 Set appWord = CreateObject("Word.Application")
 appWord.Visible = True

Dim myPath As String
 myPath = ThisWorkbook.Path & "\"
 
Dim DenClasa As Range

'deschide fisierul-model word
appWord.Documents.Open myPath & "Lista.docx"

Sheets("Sheet1").Select

'sortare tabel
Range("A1").CurrentRegion.Sort Key1:=Range("C2"), Order1:=xlDescending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

Range("C65536").End(xlUp).Select

Do Until ActiveCell.Row = 1
    If ActiveCell <> ActiveCell.Offset(-1, 0) Then
         Selection.AutoFilter Field:=3, Criteria1:=ActiveCell.Value
        
        'copiaza denumirea filtrata de pe coloana C
        Set DenClasa = Range("C65536").End(xlUp)
         DenClasa.Copy
         appWord.Selection.PasteExcelTable False, False, False
        
        'copiaza tabelul filtrat
        Range("A1").CurrentRegion.Copy
        appWord.Selection.PasteExcelTable False, False, False
        'insereaza un salt de pagina
        appWord.Selection.InsertBreak Type:=wdPageBreak
         
        'afiseaza toate datele
        ActiveSheet.ShowAllData
    End If
 ActiveCell.Offset(-1, 0).Select
Loop

'inchide documentul
appWord.ActiveDocument.Close

'inchide wordul si "goleste" variabila-obiect word
appWord.Quit
Set appWord = Nothing

MsgBox "Prelucrarea s-a terminat."

Application.ScreenUpdating = True
 
End Sub

Pentru testare: salvati arhiva pe disc si dezarhivati-o; deschideti folderul vdingo11, deschideti fisierul excel, activati continutul si rulati macro (apasati Ctrl+Q). Vedeti rezultatul in fisierul Lista.docx

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

vdingo11
Mesaje: 40
Membru din: Mie Ian 09, 2013 1:33 pm

Re: Generarea unor pagini word folosind date din excel.

Mesaj de vdingo11 » Vin Feb 28, 2014 11:31 pm

Multumesc.
Este foarte bun dar neavand cunostinte VBA imi vine greu sa il personalizez dupa cum doresc:
1. nr.crt l-ati pus manual pe fiecare clasa in excel?
2. daca sursa mea ar avea 10 coloane si as dori sa afisez numai coloana 3,5,6 si 8 unde trebuie modificat.
3. daca as dori s scriu alt text in antetul unei coloane din word se poate?
4. daca doresc ca inainte si dupa tabel sa sriu un anumit text care sa se repete pe toate paginile?
5. se poate formata tabelul (centrat pe pagina, anumita latime pentru coloane, etc) sau pastreaza dimensiunile din excel.

Stiu ca sunt multe intrebari dar daca incep sa inteleg unde sa modific poate fi un ajutor nesperat pentru mine.
Nu am pretentia sa scriu eu cod nou, dar sa il pot adapta la cerintele mele

Si mai am o nedumerire legat de excel: de ce in unele sitatii daca am o filtrare activa si vreau sa fac lista automata pe o coloana (1,2,3,4,5,....) nu reusesc.
Eu procedez asa: filtrez si pe coloana unde doresc sa fac lista pentru acel filtru scriu 1, apoi 2, le selectez pe cele 2 si trag de lista in jos. Va pune 1 peste tot.

Multumesc.

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

Re: Generarea unor pagini word folosind date din excel.

Mesaj de IPP » Sâm Mar 01, 2014 7:40 am

Buna ziua

1.In acest caz da. Insa, daca va mai fi nevoie de prelucrari suplimentare (asa cum mi se pare, vazand celelalte cerinte) in alta foaie, nr. crt. se poate insera cu ajutorul macro. Si sunt pe forum cel putin doua abordari pentru asta (ma refer la macro).

2.In subiectul la care am facut trimitere exista o astfel de situatie, tocmai de aceea am folosit o alta foaie inainte de a copia informatia in Word. Practic, dupa filtrarea initiala (dupa clasa) in alta foaie se pot face prelucrarile (via macro) dorite.

3.Ar trebui sa fiti mai explicit. Daca tot va mai fi nevoie de o prelucrare intermediara poate veti schimba textul din antetul coloanei in Excel. In noile conditii tabelul sursa original (cel care contine toate informatiile) nu va fi afectat.

4.Se poate insa abordarea poate fi diferita: pentru elemente identice repetitive se recomanda folosirea zonei de Antet/Subsol. Altfel va puteti folosi de Quick Parts. Cred ca exista pe forum si un exemplu de inserare quick parts.

5.Probabil se poate seta din macro dimensiunile coloanelor direct in Excel si copierea sa se faca cu pastrarea structurii. Pentru centrarea in pagina Word va trebui introdusa o instructiune macro specifica... Word. Teoretic se poate.

Din pacate nu am cunostinte suficiente pentru aceste transferuri de informatie Excel-Word si, in general, de manipularea altor aplicatii din Excel via VBA. V-as putea ajuta la partea de prelucrare ce tine de Excel. Pentru restul pot incerca dar probabil nu m-as incadra in timpul alocat pentru acest forum. Sincer, dat fiind premiile puse in joc in acest concurs, ma asteptam sa vad niste concurenti facand asta pentru ca eu nu o consider o problema simpla de forum ci ceva care cere mult timp si cunostinte.

Nu am o explicatie pentru problema semnalata. Insa exista pe acest forum si o varianta de numarare automata (cu ajutorul unor formule subtotal) pentru situatie de tabel filtrat. Vedeti ultimul fisier postat de mine la subiectul Registru de casa in excel, formulele de pe coloana de nr. crt.

IP

Închis

Înapoi la “Probleme cu aplicatiile ce folosesc Excel ca aplicatie ajutatoare”