Word – Salvare automata

De multe ori am avut nevoie sa salvez un document template cu o denumire automata (nume, prenume, un numar de inregistrare, etc). Zilele trecute am aflat cum, daca e cineva interesat sa lase un coment si zilele ce urmeaza o sa incep sa explic cum se face

Update: Am creat un filmulet pentru a arata exact cum functioneaza salvarea automata pe un template

Link: http://www.youtube.com/watch?v=2k5Ts7R6Lqk

Deci ce s-a facut. Mentionez ca mare parte a codului l-am luat de pe blog-ul unui MVP (sper sa nu se supere pe mine, oricum nu o sa vada veci blog-ul meu :)), doar l-am adaptat si corectat ca acela avea o mare problema. Dupa ce se salva nu mai aveai voie sa il deschizi deoarece genera un alt numar si se salva din nou (mie imi trebuia sa pot deshide documentul).

Si a mai fost o problema cu Fill In:  Campurile trebuiau sa fie completate, trebuia protejat documentul. Documentul odata protejat nu se mai putea adauga automat numarul care ma interesa. Am realizat asta foarte simplu cu codul macro pentru protejarea documentului dupa ce se introduce numarul certificatului.

Cum:

1. Am creat un document word care urma sa il fac template

2.S-a lucrat o perioada pe el, dupa care am realizat ca se fac greseli, se uita ultimul numar facut, se sar numere, era urgent sa fac automata acea numaratoare. Am deschis macro si cu ajutorul codului de mai jos mi-am rezolvat problema.

Private Sub Document_New()

‘se creaza un fisier txt care memoreaya ultimul numar si il aloca pe urmatorul
Order = System.PrivateProfileString(„D:\certificate distrugere\Settings.Txt”, _
„MacroSettings”, „Ultimul Nr Certificat”)

If Order = „” Then
Order = 1
Else
Order = Order + 1
End If

System.PrivateProfileString(„D:\certificate distrugere\Settings.txt”, „MacroSettings”, _
„Ultimul Nr Certificat”) = Order
‘activez campul fldnrcet sa preia automat numerele
ActiveDocument.FormFields(„fldnrcert”).Result = Format(Order, „000#”)

‘se salveaza fisieul in formatul dorit unde order este numarul preluat din fisierul txt si „000#” este formatul.

‘daca se doreste adaugarea unui caracter, eventual nume, etc se realizeaza concatenare
ActiveDocument.SaveAs FileName:=Format(Order, „000#”)
‘protejez documentul pentru a parcurge celelalte campuri in parametri normali

‘asta am adaugat eu in codul initial. Rezolva problema cu protejarea documentului dupa ce se introduce numarul si se efectueaza salvarea
If ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True
End If

End Sub

Daca introduceti acest cod intr-un modul o sa aveti surpriza ca de fiecare cand deschideti fisierul se genereaza alt numar, ceea ce nu e prea corect in unele situatii.

Asa ca aici intervine Template-ul. Am introdus codul macro de mai sus in „Project” > „this document” si am salvat cu extensia dot.

De fiecare data cand se deschide template-ul creat de mine, el creaza un fisier cu extensia .doc sau .docx dupa caz (si acel macro nu se mai regaseste in document, el fiind utilizat doar de pe template. Smart, nu?

Binenteles ca acest cod se poate adapta sa se salveze cu ce denumire se doreste: data, ora, nume, etc

Daca nu am fost prea explicit, va rog intrebati-ma. Documentul este utilizabil, merge perfect (versiune finala).

2 Responses to Word – Salvare automata

  1. Pingback: Aplicatie Remat (casare masini uzate) « Ionut Sinescu

  2. Pingback: 2010 in review « Ionut Sinescu

Lasă un răspuns

Completează mai jos detaliile despre tine sau dă clic pe un icon pentru autentificare:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s

%d blogeri au apreciat asta: