Cum sa activezi remote desktop


1 Iti trebuie un user si o parola

2. Start > Control Panel > System, de unde se alege optiunea remote. Aici se bifeaza „Allow users to connect to this computer”. Se da Apply

3. Start > Control Panel > Windows Firewall (daca nu este activat si nu vreti sa activati, ati terminat), se  selecteaza Exeptions, se cauta Remote desktop si se bifeaza. Ok.

Intr-un post viitor, vor incerca sa explic cum se pot conecta mai multi utilizatori pe o singura masina prin remote desktop.

Info: Remote desktop va functiona doar daca sunteti in aceeasi retea cu calculatorul client, sau daca exista IP static. Pentru alte configuratii de internet se recomanda Team View, free

Import date in Access dintr-un Template Word


Acest template care l-am folosit la Salvarea automata in word are 2  intrebuintari. Care credeti ca a mai fost rolul lui?

1. Pentru completarea rapida si corecta a campurilor

As fi vrut sa astept un raspuns dar cum blog-ul meu este nou, nu prea are cine sa isi de-a cu parerea, asa ca spun si care e punctul 2

2. Pe baza informatiilor din acest document se fac 3 rapoarte. Rapoartele trebuie sa fie in excel.

Ce am facut eu (posibil sa fie variante mai usoare si mai bune):

a) Am facut o baza de date in acces (nenormalizata). Nu pentru ca nu as sti sa o normalizez, dar este mai usor asa si nici nu am avut timp cand am proiectat-o. Am facut intr-o noapte si baza de date si macro de import (plus ca nu mi-a iesit nimic financiar sa fiu motivat). Ma justific pentru specialisti, poate candva o sa citeasca si ei acest blog.

Arata cam asa:

Daca o sa fie cineva interesat sa fie atent la ambele imagini, o sa observe ca pentru fiecare camp din fisierul doc exista un corespondent in baza de date.

Recapitulam:

1. Avem un fisier word cu field-uri cu denumiri sugestive cum ar fi fldnume, flddata. Ex:

2. Avem o baza de date creata dupa campurile din document.

3. Creem un modul in Baza de date. Pentru necunoascatori, pentru a ajunge in Visual Basic cat mai usor si din toate versiunile de Office actionati combinatia de taste ALT+F11.

Codul arata cam asa:

„Option Compare Database

Public Sub getworddata()
Dim appWord As Word.Application
Dim doc As Word.Document
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strDocName As String
Dim blnQuitWord As Boolean

On Error GoTo ErrorHandling

strDocName = „D:\certificate distrugere\certificate distrugere\” & _
InputBox(„Enter the name of the Word contract ” & _
„you want to import:”, „Import Contract”)

Set appWord = GetObject(, „Word.Application”)
Set doc = appWord.Documents.Open(strDocName)

cnn.Open „Provider=Microsoft.Jet.OLEDB.4.0;” & _
„Data Source=D:\certificate distrugere\” & _
„Certificare distrugere.mdb;”
rst.Open „cert_distrugere”, cnn, _
adOpenKeyset, adLockOptimistic

With rst
.AddNew
!Nr_cert = doc.FormFields(„fldnrcert”).Result
!Data_cert = doc.FormFields(„flddatacert”).Result
!Numeprenume = doc.FormFields(„fldnumeprenume”).Result
!Nationalitate = doc.FormFields(„fldnationalitate”).Result
!Judet = doc.FormFields(„fldjudet”).Result
!Localitate = doc.FormFields(„fldlocalitate”).Result
!Adresa = doc.FormFields(„fldadresa”).Result
!Actidentitate = doc.FormFields(„fldactidentitate”).Result
!Serie = doc.FormFields(„fldSeria”).Result
!numar = doc.FormFields(„fldnumar”).Result
!Cnp = doc.FormFields(„fldcnp”).Result
!eliberat_de = doc.FormFields(„fldeliberat”).Result
!data_eliberarebuletin = doc.FormFields(„flddataeliberare”).Result
!categorie = doc.FormFields(„fldcategorie”).Result
!marca = doc.FormFields(„fldmarca”).Result
!tip = doc.FormFields(„fldtipmasina”).Result
!Ult_nr_inmatriculare = doc.FormFields(„fldnrinmatriculare”).Result
!Nr_seria = doc.FormFields(„fldseriacartii”).Result
!Nr_seria_cert_inmatriculare = doc.FormFields(„fldseriacertificatul”).Result
!nr_identificare = doc.FormFields(„fldnridentificare”).Result
!an_fabricatie = doc.FormFields(„fldanfabricatie”).Result
!comp_esentiale = doc.FormFields(„fldcomp”).Result
!an_prima_inmatriculare = doc.FormFields(„fldanprima”).Result
!capacitate_cilindrica = doc.FormFields(„fldcapcilindrica”).Result
!serie_motor = doc.FormFields(„fldseriemotor”).Result
!serie_ticket_valoric = doc.FormFields(„fldserietichet”).Result
!nr_ticket_valoric = doc.FormFields(„fldnrtichet”).Result
!greutate = doc.FormFields(„fldgreutate”).Result

.Update
.Close
End With
doc.Close
If blnQuitWord Then appWord.Quit
cnn.Close
MsgBox „Contract Imported!”

Cleanup:
Set rst = Nothing
Set cnn = Nothing
Set doc = Nothing
Set appWord = Nothing
Exit Sub
ErrorHandling:
Select Case Err
Case -2147022986, 429
Set appWord = CreateObject(„Word.Application”)
blnQuitWord = True
Resume Next
Case 5121, 5174
MsgBox „You must select a valid Word document. ” _
& „No data imported.”, vbOKOnly, _
„Document Not Found”
Case 5941
MsgBox „The document you selected does not ” _
& „contain the required form fields. ” _
& „No data imported.”, vbOKOnly, _
„Fields Not Found”
Case Else
MsgBox Err & „: ” & Err.Description
End Select
GoTo Cleanup
End Sub”

MORE INFO: Pentru a merge acest cod trebuie sa activati din Tools> Reference> Microsoft Word 12.0 object Library pentru Office 2007  sau Microsoft Word 11.0 object Library daca se folosete Office 2003.

Trebuie sa aveti selectata limba romana din Control Panel > Regional and Language settings (pentru data din formular, am avut mari batai de cap din cauza asta).

Revin mai tarziu cum un film, modul cum functioneaza. Nu stiu cat am fost de explicit in scris, va arat video si o sa fie mai interesant.

Update: http://www.youtube.com/watch?v=Q47M94G6CM0

Binenteles exportul in excel dintr-o baza de date access nu mai este o problema. Intr-un post viitor o sa pun si modul in care fac rapoartele.

Nu stiu pe cati o sa intereseze chestiile astea, dar eu am cautat mult solutii si nu am gasit pe nimeni sa ma ajute, asa ca daca cineva  doreste help…. sunt aici.

PS: Pentru ce am facut eu aici, merit undeva nota 7. Pentru cunoscatori se stie, ca se putea introduce tot acest cod in aplicatia principala (poate candva in viitorul apropiat o sa fac si asta)

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).