Avtomatsko vstavljanje datuma v obrazce worda

Pomoč pri delu z MS Wordom
Odgovori
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Avtomatsko vstavljanje datuma v obrazce worda

Odgovor Napisal/-a bluespeed »

Kako lahko avtomatsko vstaviš v polja obrazca datume, ki se nanašajo na nek datum, ki je pravtako v nekem drugem vnosnem polju obrazca.
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Če želite imeti en datum na večih mestih dokumenta potem se morate tam nanj sklicevati in ne dovoliti vnosnega polja... Ali je to tisto kar želite?
lp,
Matjaž Prtenjak
Administrator
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Odgovor Napisal/-a bluespeed »

Delno ja, vendar bi želel, da se mi datumi nadaljujejo za željeni teden.
Npr. nekam vpišem prvi dan in mi potem avtomatsko zapolni recimo za cel teden na točno določena mesta.
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Tole pa po moje ne bo šlo brez majhnega makra. Postopek pa je sledeč. Na obrazec vnesite vnosno polje, ki mu nastavite sledeče lastnosti (Vrsta == Datum, omogočite vpis in zahtevajte preračun ob izhodu).

Potem na vsa mesta v dokumentu, kjer želite te datume vnesite dokumentne spremenljivke - Vstavljanje/Polje/DocVariable in jih poimenujet Datum1, Datum2....Datum7.

Nato v dokument skopirajte naslednji makro:

Koda: Izberi vse

'
' www.matjazev.net
'   maj 2009
'
Sub makroObIzhodu()
    Dim dat
    
    dat = ActiveDocument.Fields(1).Result
    
    ActiveDocument.Variables("datum1").Value = dat
    ActiveDocument.Variables("datum2").Value = DateValue(dat + 1)
    ActiveDocument.Variables("datum3").Value = DateValue(dat + 2)
    ActiveDocument.Variables("datum4").Value = DateValue(dat + 3)
    ActiveDocument.Variables("datum5").Value = DateValue(dat + 4)
    ActiveDocument.Variables("datum6").Value = DateValue(dat + 5)
    ActiveDocument.Variables("datum7").Value = DateValue(dat + 6)

    ActiveDocument.Fields.Update
End Sub
Pojdite nazaj na vnosno polje in postavite Makro ob izhodu na ta makro.

To je to! Opozoril bi vcas samo še na eno pomembno "malenkost". Word se "ne zna" sklicevati na ime polja, zato se je nanj potrebno sklicevati po indeksu.

Koda: Izberi vse

    dat = ActiveDocument.Fields(1).Result
To je pomembno pi gornji vrstici, kjer morate namesto 1 pač napisati zaporedno številko vašega vnosnega polja glede na celoten obrazec.
lp,
Matjaž Prtenjak
Administrator
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Odgovor Napisal/-a bluespeed »

Napaka! Nobena spremenljivka dokumenta ni na voljo.

To mi napiše, ko aktiviram ta makro. Kaj je narobe?
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Kje se makro ustavi? Ali ste v dokument vstavili VSAJ ENO vnosno polje in VSAJ 7 dokumentnih spremenljivk poimenovanih od Datum1..Datum7?
lp,
Matjaž Prtenjak
Administrator
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Odgovor Napisal/-a bluespeed »

Sub makroObIzhodu()
Dim dat

dat = ActiveDocument.Fields(1).Result

ActiveDocument.Variables("datum1").Value = dat
--tu se ustavi-- ActiveDocument.Variables("datum2").Value = DateValue(dat + 1)
ActiveDocument.Variables("datum3").Value = DateValue(dat + 2)
ActiveDocument.Variables("datum4").Value = DateValue(dat + 3)
ActiveDocument.Variables("datum5").Value = DateValue(dat + 4)
ActiveDocument.Variables("datum6").Value = DateValue(dat + 5)
ActiveDocument.Variables("datum7").Value = DateValue(dat + 6)
ActiveDocument.Variables("datum8").Value = DateValue(dat + 7)

ActiveDocument.Fields.Update
End Sub

Imam več vnosnih polj. Prvo je to v katero vpišem željeni datum. Imam pa osem dokumentnih spremenljivk, ker zaključim z prvim dnem naslednjega tedna. Je potrebno dok.spremenljivke pisati z veliko Datum1...ali je vseeno?
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Hm... Zdajle ne vem, preizkusiti pa ne morem... Mislim, da velikost črk nima veliko zveze, možno pa da je temu tako. Za vsak slučaj ime spremenljivk zapišite v VBA natanko tako kot ste jih v dokument.
lp,
Matjaž Prtenjak
Administrator
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Odgovor Napisal/-a bluespeed »

Sem poizkusil, pa je očitno vseeno.
Zanima me samo, če je mogoče težava zaradi tega, ker imam dokument zaklenjen in zato to ne deluje?
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

:(... Ko že nič več ne pomaga, je pa potrebno preizkusiti lastno kodo... In napaka je v makru... Uporabite tale makro (bila je napaka pri formiranju datumov, saj sem seštevanje po pomoti prestavil v oklepaje...):

Koda: Izberi vse

'
' www.matjazev.net
'   maj 2009
'
Sub makroObIzhodu()
    Dim dat
   
    dat = ActiveDocument.Fields(1).Result
   
    ActiveDocument.Variables("datum1").Value = dat
    ActiveDocument.Variables("datum2").Value = DateValue(dat) + 1
    ActiveDocument.Variables("datum3").Value = DateValue(dat) + 2
    ActiveDocument.Variables("datum4").Value = DateValue(dat) + 3
    ActiveDocument.Variables("datum5").Value = DateValue(dat) + 4
    ActiveDocument.Variables("datum6").Value = DateValue(dat) + 5
    ActiveDocument.Variables("datum7").Value = DateValue(dat) + 6

    ActiveDocument.Fields.Update
End Sub 
lp,
Matjaž Prtenjak
Administrator
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Odgovor Napisal/-a bluespeed »

Super za pomoč, deluje ko bomba ....Sem zelo hvaležen. :D
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Odgovor Napisal/-a bluespeed »

Še eno vprašanje :oops:
Kako vstaviš v wordu vsebino iz inputboxa nekam v dokument...npr. v fields(19).

Hvala
admin
Site Admin
Prispevkov: 3704
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Relativno preprosto (pač glede na že napisano kodo). V dokumentu potrebujete neko mesto, kamor boste tekst vstavili, (npr Field19):

Koda: Izberi vse

  ActiveDocument.Variables("Field19").Value = InputBox(...)
lp,
Matjaž Prtenjak
Administrator
bluespeed
Prispevkov: 47
Pridružen: Po Nov 20, 2006 8:25 pm

Odgovor Napisal/-a bluespeed »

Še enkrat hvala.
Sem se matral sam, pa vidim da sem sicer logiko imel pravo, samo mi je delale težave pravilni zapis kode. 8)
Odgovori