Avatar billede akyhne Nybegynder
11. februar 2008 - 11:23 Der er 32 kommentarer og
1 løsning

SAVEDATE i VBA kode

Hvad udfører "SAVEDATE \@ ""yyyy-MM-dd"""

i koden

        Y.Selection.Goto What:=wdGoToField, Which:=wdGoToFirst, Name:="DATE"
        Y.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
        Y.Selection.Fields.Add Range:=Y.Selection.Range, Type:=wdFieldEmpty, Text:= _
        "SAVEDATE \@ ""yyyy-MM-dd""", PreserveFormatting:=True
Avatar billede akyhne Nybegynder
11. februar 2008 - 11:25 #1
... og det er fra en makro i Word.
Avatar billede word-hajen Nybegynder
11. februar 2008 - 11:47 #2
Hvad mener du med "udfører"? Ovenstående er en feltkode, der kan indsættes i et Word-dokument, hvorefter dato, for hvornår dokumentet senest er gemt, vises (dog skal man huske selv at opdatere feltet, da Word ikke gør det automatisk - medmindre man indbygger det i kode).
Avatar billede akyhne Nybegynder
11. februar 2008 - 11:57 #3
Jeg har et dokument med følgende data:
Created 5. Februar 2008
Modified 5. Februar 2008
Accesed 11. Februar 2008

Ovenstående kode ændrer ovenstående DATE field fra til 11-02-08 til 2008-02-04, hvilket også er det rigtige format. Problemet er bare hvor 4. februar 2008 kommer fra?
Avatar billede word-hajen Nybegynder
11. februar 2008 - 12:07 #4
Det er den dato, hvor dokumentet senest er gemt (ser dog en smule spøjst ud, når du har en anden Modified-dato). Prøv at opdatere feltet, når det er sat ind.
Avatar billede akyhne Nybegynder
11. februar 2008 - 12:31 #5
Det virker tilsyneladende heller ikke. Det er en gammel makro jeg skal have ændret i, som jeg ikke selv har lavet.

Hvordan får jeg sat datofeltet til seneste gemte dato, og samtidig får sat en variabel med samme dato? Det behøver ikke at forblive et date field, men kan blot erstattes med ren tekst.
Avatar billede akyhne Nybegynder
11. februar 2008 - 12:37 #6
Jeg synes ikke jeg kan finde nogen datoer i ActiveDocument properties.
Avatar billede word-hajen Nybegynder
11. februar 2008 - 15:03 #7
Jeg vil hellere gå en helt anden vej. Hvad er det, du skal? Umiddelbart ser det ud til, at der åbenbart er et gammelt datofelt i et dokument, som du så skal have skiftet ud med "senest gemt-dato"? Har du mange af den slags dokumenter?

Hvad skal du bruge datoen til som variabel?

De datoer, som du har listet i kommentaren 11:57:18 står i dokumentets egenskaber. Du skal kigge i builtindocumentproperties:

ActiveDocument.BuiltInDocumentProperties("Last save time")

Obs! Jeg bruger 2007, så der kan være forskel på dokumentegenskabernes navne, men prøv.
Avatar billede akyhne Nybegynder
11. februar 2008 - 16:22 #8
Jeg kører en makro igennem Excel der gennemløber en folder for .doc's, åbner disse, tager nogle tekster ud fra nogle fields, bl.a et datofield. Derfor variablen (i et array).

I samme hug ændrer jeg datofeltet i dokumentet fra at være en dato for udfyldelsesdatoen for dokumentet, og til seneste dato for redigering(seneste gem) af dokumentet, udskriver til PDF med et nyt navn (hvor gem dato indgår i navnet), lukker .doc uden at gemme, og smider værdierne fra arrayet ind i Excel.

Så kort fortalt:
Åbn dokument
hent værdier
ændrer datofelt til seneste gem-dato (kun for PDF'ens skyld)
print PDF med nyt navn (også dato)
luk .doc uden at gemme
smid værdier i Excel.
Avatar billede word-hajen Nybegynder
11. februar 2008 - 16:39 #9
Så burde du kunne bruge ovennævnte BuiltInDocumentProperty i stedet for at smide datofeltet ind. Så slår du 2 fluer med et smæk.
Avatar billede akyhne Nybegynder
11. februar 2008 - 16:47 #10
Datofeltet skal stadig smides ind i dokumentet for printets skyld. Der skal seneste gemte dato stå i stedet.
Avatar billede word-hajen Nybegynder
11. februar 2008 - 17:14 #11
Det behøver du ikke datofeltet til. Når du har aflæst hvilken dato, der skal sættes ind i stedet for det eksisterende DATE-field, smider du "bare" datoen ind i stedet. Du har reelt ikke noget at bruge SAVEDATE-feltet til, da dokumentet ikke efterfølgende gemmes.

Når jeg skriver, at du slår 2 fluer med et smæk, er det:

1. skriv datoen i dokumentet
2. brug datoen videre i din kode
Avatar billede akyhne Nybegynder
11. februar 2008 - 18:01 #12
Ok. Jeg prøver i morgen.

Så det er vel bare

        Y.Selection.Goto What:=wdGoToField, Which:=wdGoToFirst, Name:="DATE"
        Y.Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
        Y.Selection.Fields.Add Range:=Y.Selection.Range, Type:=wdFieldEmpty, Text:= _
        EnVariabel, PreserveFormatting:=True
Avatar billede word-hajen Nybegynder
11. februar 2008 - 19:10 #13
Nej. Prøv dette:

*******
Public Sub SkiftDato()
    Dim strDate As String
   
    strDate = ActiveDocument.BuiltInDocumentProperties("Last save time")
   
    Selection.GoTo What:=wdGoToField, Which:=wdGoToFirst, Name:="DATE"
    Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
       
    Selection.Range.Text = VBA.Format(strDate, "yyyy-MM-dd")
End Sub
***********
Så har du SaveDate (inkl. tidspunkt) i strDate og kan bruge det andetsteds i din kode.
Avatar billede akyhne Nybegynder
12. februar 2008 - 09:19 #14
Det var ski da mærkeligt. Det giver samme mærkelige dato, og i locals kan jeg se den er god nok.
Avatar billede word-hajen Nybegynder
12. februar 2008 - 10:38 #15
Siger du, at der ikke er overensstemmelse med den dato, der bliver sat ind og den, du ser i locals?
Avatar billede akyhne Nybegynder
12. februar 2008 - 11:02 #16
Ja, det er det jeg siger!??! Mærkeligt.
Avatar billede word-hajen Nybegynder
12. februar 2008 - 11:15 #17
Har du styr på Regional Settings?
Avatar billede akyhne Nybegynder
12. februar 2008 - 12:27 #18
Det har jeg nok ikke, når jeg ikke ved hvad du mener :-)
Avatar billede word-hajen Nybegynder
12. februar 2008 - 12:55 #19
:-) Står regional settings (Control panel, regional settings) til danske formater?
Avatar billede akyhne Nybegynder
12. februar 2008 - 12:59 #20
Du mener "Regional and Language Options" i Control Panel?
Regional Options står til "Danish".
Avatar billede word-hajen Nybegynder
12. februar 2008 - 13:45 #21
Neeeeej, du fandt det. Til trods for at jeg ikke havde skrevet det helt rigtigt. (og ja, jeg er en smule sarkastisk, for du vidste jo godt, hvad jeg mente, ikk'?)

Jeg har aldrig oplevet, at en LastSaveDate har været forkert.
Avatar billede akyhne Nybegynder
12. februar 2008 - 14:10 #22
Nej, det vidste jeg ikke, men du skrev jo Control panel, og så var det ikke så svært at regne ud.

Dokumenterne bliver genereret ud fra et eller andet program eller database hos kunden. Vi får dem blot på mail.
Avatar billede word-hajen Nybegynder
12. februar 2008 - 14:15 #23
LastSave skulle jo gerne stadig være LastSave, selv om du vel får en anden LastSave, når du modtager dem på mail og gemmer dem (hvis det altså er en anden dag end den, hvor de er gemt hos kunden).

Du skrev før, at datoen var rigtig i Locals (er det strDate, du har der?). Er det så ved den efterfølgende formatering, at det går galt?
Avatar billede akyhne Nybegynder
12. februar 2008 - 14:17 #24
Er der ikke andre måder at trække den dato ud på?
Avatar billede akyhne Nybegynder
12. februar 2008 - 14:22 #25
Jeg mente den var rigtig i forhold til den dato den skriver tilbage i dokumentet, ikke i forhold til hvis du højreklikker på filen i stifinder.

Jeg kan nu godt se jeg misforstod 12/02-2008 10:38:15.

Personen der har udført jobbet har, efter højreklik på filen, gemt dem d. 05/02. I locals siger den d. 04/02! Klokkeslettet på de to datoer passer heller ikke!
Avatar billede word-hajen Nybegynder
12. februar 2008 - 14:38 #26
Nu er jeg forvirret. Er den dato, der bliver indsat i dokumentet rigtig eller ej?
Avatar billede akyhne Nybegynder
12. februar 2008 - 14:46 #27
Nej, for den burde være den dato for hvornår dokumentet sidst er gemt. Efter filsystemet...

Men den dato passer ikke med hvad ActiveDocument.BuiltInDocumentProperties("Last save time") fortæller.
Avatar billede word-hajen Nybegynder
12. februar 2008 - 14:55 #28
Kunne det være, fordi den dato, der står i dokumentegenskaberne, er den dato, hvor jeres kunde har gemt filen? Og den dato, der står i jeres filsystem, er den dato, hvor I har gemt den fra mailen?

Hvis du vil benytte filsystemets dato (og altså ikke den dato, hvor dokumentet mener, at det er blevet gemt), må du jo aflæse datoen der i stedet og sætte ind.
Avatar billede akyhne Nybegynder
12. februar 2008 - 15:02 #29
Det er jo det der er total forvirrende. Filen er gemt fra mail i g[r, den 11. Last modified dato er den 5. som det skal v;re.

Jeg tror jeg stopper med at spilde tid p[ det. Kunden har ikke klaget over det, s[ vi lader det k're s[dan, indtil videre.

Smid et svar.
Avatar billede akyhne Nybegynder
12. februar 2008 - 15:04 #30
åøæ virker vidst ikke for godt :-)
Avatar billede word-hajen Nybegynder
12. februar 2008 - 15:12 #31
Nu fik du da styr på æøå igen :-)
Avatar billede akyhne Nybegynder
12. februar 2008 - 15:29 #32
Tja, det sker en gang imellem. Tak for hjælpen.
Avatar billede word-hajen Nybegynder
12. februar 2008 - 15:47 #33
Velbekomme.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester