Tutorial Office Business – Formulare (II)

Articolul privind Formulare a arătat modul în care creați un formular în Microsoft Word 2007, dar nu a arătat și modul de colectare a datelor… după ce utilizatorul completează datele și salvează cu numele său fișierul, este rugat să-l trimită prin e-mail (documentul nostru este un .docx, dar așa cum spuneam în articolul trecut se poate folosi și în Word 2003). De aici urmează colectarea datelor.
Există mai multe variante… Să le vedem pe rând, fiecare cu părțile bune și rele… Aveți aici fișierele de lucru.

Extragerea datelor din fișierul .doc într-un fișier .txt

Problema constă în transformarea informațiilor din fișierul .doc în .txt doar cu datele din formulare. Pentru asta… executați Office Button, Word Options, Advanced și selectați Save form data as delimited text file. La salvare se va obține un fișier text cu datele separate prin punct și virgulă (în cazul de față).

mdfro

Probleme. Metoda aleasă mai sus crează foarte ușor fișierele .txt cu date, dar recuperarea ulterioară a tuturor informațiilor din fiecare .txt într-un singur fișier e mai anevoioasă.

Extragerea datelor din fiecare fișier .doc și crearea unui singur fișier .txt

Pentru asta trebuie utilizat un macro, al cărui cod este prezentat în continuare, dar mai întâi trebuie să vă creați două fișiere de lucru Sursa.txt și Destinatie.txt.

mdfro


‘ ExtractDataForm Macro
‘ Extragerea de date din formulare .doc în fisier .txt

Sub ExtractDataForm()
Dim DocList As String
Dim DocDir As String
Dim Sursa As Document
Dim Destinatie As Document
Dim fDialog As FileDialog
Set fDialog = Application.FileDialog(msoFileDialogFolderPicker)
On Error GoTo err_FolderContents
With fDialog
     .Title = “Selectati directorul care contine formularele completate si apasati OK”
     .AllowMultiSelect = False
     .InitialView = msoFileDialogViewList
     If .Show <> -1 Then
          MsgBox “Anulat de utilizator”
          Exit Sub
     End If
     DocDir = fDialog.SelectedItems.Item(1)
     If Right(DocDir, 1) <> “” Then DocDir = DocDir + “”
End With
If Documents.Count > 0 Then
     Documents.Close SaveChanges:=wdPromptToSaveChanges
End If
Application.ScreenUpdating = False
DocList = Dir$(DocDir & “*.doc?”)
Set Destinatie = Documents.Open(DocDir & “Destinatie.txt”, False)
Do While DocList <> “”
     ‘The form may contain automacros, not required
     ‘by this macro, so disable them
     WordBasic.DisableAutoMacros 1
     Documents.Open DocDir & DocList
     ‘Save the form with the save only data option
     With ActiveDocument
          .SaveFormsData = True
          .SaveAs FileName:=“Sursa.txt”, _
          FileFormat:=wdFormatText, _
          SaveFormsData:=True
          ‘Close the original form
          .Close SaveChanges:=wdDoNotSaveChanges
     End With
     ‘Now open the temporary saved text file containing the form data
     Set Sursa = Documents.Open(“Sursa.txt”, False)
     ‘And write its content into the data file
     Destinatie.Range.InsertAfter Sursa.Range.Text
     ‘Close the temporary file
     Sursa.Close SaveChanges:=wdDoNotSaveChanges
     ‘Save the data file
     Destinatie.Save
     DocList = Dir$()
     ‘Re-enable the automacros
     WordBasic.DisableAutoMacros 0
Loop
Application.ScreenUpdating = True
Exit Sub
err_FolderContents:
MsgBox Err.Description
WordBasic.DisableAutoMacros 0
End Sub

Ce trebuie să faceți în continuare? Copiați codul de mai sus, deschideți Microsoft Word, mergeți în Developer, Macros, creați un macro nou ExtractDataForm, faceți Paste în zona de cod fără să păstrați elementele inițiale.
Probleme. Doar puțină atenție dacă vreți să modificați codul sursă.

Dacă tot am creat fișierul .txt hai să obținem și datele pentru o prelucrare viitoare, în cazul de față în Excel. Deschideți Microsoft Excel, Data, Get External Data,… dar mai bine urmăriți imaginile (atenție, trebuie să selectați Semicolon).

mdfro

După toate acestea vă puneți problema de ce atâta bătaie de cap, când pot folosi un formular web de colectare a datelor. Inițial așa am spus și eu, ca într-un final să realizez că sunt firme și instituții care folosesc documente Word de câteva zeci de pagini ce conțin zone de validare sau câmpuri de completat, dar ele sunt trimise prin poșta obișnuită și apoi datele sunt introduse manual într-o formă, mai mult sau mai puțin, de bază de date.

10 thoughts on “Tutorial Office Business – Formulare (II)”

  1. Abia astept lectiile de acces. Poate mai scap si eu de atata citit. 😀 Ma chinui sa fac o chestie relativ simpla, dar nu ma lasa rabdarea si timpul. :-< Vreau sa fac o relationare intre orase si judete si apoi eventual strazi. Cand scriu orasul intr-un camp in urmatorul camp sa apara automat judetul, iar in urmatorul sa am obtiunea sa aleg strazile din orasul respectiv.
    PS: :-bd

  2. @yo9fah :) dacă vrei ceva anume dă un semn… și apropo de “Windows pentru începători” ce zici de o colaborare… pe Windows XP… instalare, configurare, administrare? Nu mai fac asta de mult, dar sunt sigur că sunt unii care utilizează și ar avea nevoie.

  3. “(atenție, trebuie să selectați Semicolon).”
    Trebuia sa zici asa: atentie, veti alege delimitatorul (semicolon sau comma) specificat de setarile regionale, pt. ca in functie de acele setari vei avea coloanele despartite de punct si virgula (semicolon) sau de virgula (comma).

Leave a Reply to Alexx Cancel reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>