Avatar billede spoi Nybegynder
14. august 2007 - 11:43 Der er 13 kommentarer og
1 løsning

hente dato fra tekstfil

jeg har behov for at hente dato fra hvornår en tekstfil sidst er gemt

Nogen der kan hjælpe med dette. Henter data fra tekstfilen via en querry.

LN
Avatar billede gider_ikke_mere Nybegynder
14. august 2007 - 19:47 #1
Sub test()
Dim NySti, Fil
NySti = "C:\"
Fil = "test.txt"
Navn = NySti & Fil
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(Navn)
SidsteDato = f.DateLastModified
End Sub
Avatar billede gider_ikke_mere Nybegynder
14. august 2007 - 19:57 #2
Sub test()
Dim NySti, Fil
NySti = "C:\"
Fil = "test.txt"
Navn = NySti & Fil
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFile(Navn)
Attributen = f.Attributes
OprettetDato = f.DateCreated
SidsteDato = f.DateLastModified
Sidståbnet = f.DateLastAccessed
Typen = f.Type
FilNavn = f.ShortName
FilStørrelse = f.Size

MsgBox "Oprettet " & OprettetDato & vbLf _
    & "Sidst rettet " & SidsteDato & vbLf _
    & "Sidst åbnet " & Sidståbnet & vbLf _
    & "Typen " & Typen & vbLf _
    & "Filnavn " & FilNavn & vbLf _
    & "Størrelse " & FilStørrelse & " byte"
End Sub
Avatar billede spoi Nybegynder
15. august 2007 - 10:14 #3
Jeg har tre forskellige filer, hvor jeg skal hente datoen, Den henter fint, men i messagebox er der ikke linieskift og det ser ikke pænt ud
Hvorledes laves dette?
Gar kaldt filerne f1,f2 og f3(filerne er altid de samme)
Og det er bare lastmodified.
Kan man for øvrigt nøjes med kun at få datoen og ikke klokkeslettet?

LN
Avatar billede gider_ikke_mere Nybegynder
15. august 2007 - 15:43 #4
& vbLf _ laver linieskift.
Avatar billede gider_ikke_mere Nybegynder
15. august 2007 - 15:51 #5
Sub test()
Dim NySti, Fil
NySti = "C:\"
Fil = Array("f1.txt", "f2.txt", "f3.txt")

For I = 0 To UBound(Fil)
    Navn = NySti & Fil(I)
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.GetFile(Navn)
    SidsteDato = SidsteDato & Chr(10) & Fil(I) & " - Sidst rettet: " & Left(f.DateLastModified, 11)
Next

MsgBox SidsteDato
End Sub
Avatar billede spoi Nybegynder
20. august 2007 - 08:04 #6
Ok det virker fint. Hvorledes kan man flette en fejlmeddelese ind såfremt filen ej findes og som gør at fterfølgende kode ej avikles?

Læg svar så jeg kan give point

LN
Avatar billede gider_ikke_mere Nybegynder
20. august 2007 - 08:14 #7
Således:

Sub test()
Dim NySti, Fil
NySti = "C:\"
Fil = Array("f1.txt", "f2.txt", "f3.txt")

For I = 0 To UBound(Fil)
    Navn = NySti & Fil(I)
    Set fs = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    Set f = fs.GetFile(Navn)
    If Err.Number = 53 Then
        Err.Clear
        MsgBox "Fejl!" & vbLf _
        & "Filen """ & Navn & """ eksisterer ikke!"
        Exit Sub
    End If
    SidsteDato = SidsteDato & Chr(10) & Fil(I) & " - Sidst rettet: " & Left(f.DateLastModified, 11)
Next

MsgBox SidsteDato
End Sub
Avatar billede gider_ikke_mere Nybegynder
20. august 2007 - 08:17 #8
Evt. sådan for din fejlboks:

        MsgBox "Fejl!" & vbLf _
        & "Filen """ & Navn & """ eksisterer ikke!" & vbLf _
        & Chr(10) & "Øvrige data: " & vbLf _
        & SidsteDato
Avatar billede gider_ikke_mere Nybegynder
20. august 2007 - 08:22 #9
Metoden der finder filen er ikke case sensitive og finder eksempelvis filen f1.txt, hvadenten den skrives F1.txt f1.TXT o.s.v. Hvis du vil have vist det rigtige navn (hvilket er mest korrekt), skal koden være:

Sub test()
Dim NySti, Fil
NySti = "C:\"
Fil = Array("f1.txt", "f2.txt", "f3.txt")

For I = 0 To UBound(Fil)
    Navn = NySti & Fil(I)
    Set fs = CreateObject("Scripting.FileSystemObject")
    On Error Resume Next
    Set f = fs.GetFile(Navn)
    If Err.Number = 53 Then
        Err.Clear
        MsgBox "Fejl!" & vbLf _
        & "Filen """ & Navn & """ eksisterer ikke!" & vbLf _
        & Chr(10) & "Øvrige data: " & vbLf _
        & SidsteDato
        Exit Sub
    End If
    SidsteDato = SidsteDato & Chr(10) & f.Name & " - Sidst rettet: " & Left(f.DateLastModified, 11)
Next

MsgBox SidsteDato
End Sub

f.Name gør forskellen.
Avatar billede spoi Nybegynder
20. august 2007 - 11:04 #10
Åh min kode ser ikke så fin ud som din

Kunne du evt hjælpe mig med at lægge koden ind i mit ;O|

Private Sub CommandButton1_Click()
'Application.ScreenUpdating = False

Rem tjekker hvornår data er trukket ud af Axapta

Navn = "\\sti\Inventsum.txt"
Navn2 = "\\sti\OpenSalesLines.txt"
Navn3 = "\\sti\PurchLines.txt"


Set fs = CreateObject("Scripting.FileSystemObject")

Set f = fs.GetFile(Navn)
Set f2 = fs.GetFile(Navn2)
Set f3 = fs.GetFile(Navn3)

SidsteDato = f.DateLastModified
SidsteDato2 = f2.DateLastModified
SidsteDato3 = f3.DateLastModified



MsgBox "Data er sidst trukket ud af Axapta d. " & Chr(10) & Chr(10) _
& "Beholdning " & SidsteDato & vbLf _
& "Salg " & SidsteDato2 & vbLf2 & Chr(10) _
& "Indkøb " & SidsteDato3 & vbLf3

Rem færdig med at tjekke



Rem henter beholdning
    Sheets("Beholdning").Select

Osv osv med at hente data ind og behandle dem

Men findes filerne ikke skal det hele bare stoppe der og der skal komme en fejlmeddelse

Mange tak for hjælpen

LN
Avatar billede gider_ikke_mere Nybegynder
20. august 2007 - 16:43 #11
Hvad skal der ske her:

Rem henter beholdning
    Sheets("Beholdning").Select
Avatar billede gider_ikke_mere Nybegynder
20. august 2007 - 17:06 #12
Jeg kan ikke lige se hvad jeg skal flette. Du skal blot rette filstierne til i min kode.
Avatar billede spoi Nybegynder
21. august 2007 - 06:31 #13
Uhh der skal ske en hel masse. alle tekstfilerne skal hentes, pivottabeller etc skal opdateres osv osv

Ok ja jeg roder lidt med det. Tak for hjælpen

LN
Avatar billede gider_ikke_mere Nybegynder
21. august 2007 - 08:55 #14
Ellers sig til.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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