29. juli 2013 - 09:00Der er
11 kommentarer og 1 løsning
Programmering af BAT fil
Vi et lille program som køre via Windows opgavestyring en gang i døgnet. Det tager en kopi af en bestemt fil og tilføjer dagens dato. Men vi kunne rigtigt godt tænke os at den også tilføjer om det er Mandag, Tirsdag o.s.v. Er det muligt?
Const filDerKopieres = "Filen.txt" Dim sti As String, fraFil As String, tilFil As String Dim ugedag As String Private Sub Workbook_Open() ugedag = WeekdayName(Weekday(Date, vbMonday)) sti = ActiveWorkbook.Path
For ikke at lave lort i nogen af vores ting tro jeg den rigtige løsning vil være at lave en VBA som kan sætte Dags navnet sidst i enden på alle filerne i en mappe hvor CSV filerne ligger. Den skal altså ikke lave en kopi af filerne, men kun sætte Dagen ind. Hvordan vil en VBA se ud som sætter Dagen på alle filerne i en mappe?
Hvis det er nemt at gøre vil det være fint. Men ellers så vil det godt kunne fungere med at den sætter ugedag på alle filer. Det er en speciel mappe som de vil ligge i, og den vil blive tømt når man har kørt den rapport som du hjalp med at lave i sidste uge.
Dim ugedag As String Dim sti As String, filnavn As String, linje As String, tabel As Variant Dim dato As Date, ptNavn As String, nytNavn As String Public Sub tilsætUgedag() sti = ActiveWorkbook.Path & "\"
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(sti) Set fc = f.Files
Rem traverser den aktuelle mappe - find filer med extension .dat For Each f1 In fc filnavn = LCase(f1.Name) If LCase(Right(filnavn, 3)) <> "dag" And InStr(LCase(filnavn), "tilsætugedag") = 0 Then dato = Right(filnavn, 8) ugedag = WeekdayName(Weekday(dato, vbMonday))
ptNavn = sti & filnavn: nytNavn = sti & filnavn & ugedag Name ptNavn As nytNavn End If Next
Kan ikke helt få den til at fungere. Men kan også se i den grønne tekst at der står at at den finder filer med extension .dat Det er CSV filer som der skal laves om på.
Når jeg køre makroen er det denne linie som bliver GUL:
dato = Right(filnavn, 8)
Og når jeg holder musen henover står der følgende:
Const filDataSti = "C:\Users\peter\Desktop\Klas\" '<---- justeres Dim ugedag As String Dim sti As String, filnavn As String Dim filDato As String, dato As Date, ptNavn As String, nytNavn As String Public Sub tilsætUgedag() sti = filDataSti
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(sti) Set fc = f.Files
Rem traverser den aktuelle mappe - find filer med extension .dat For Each f1 In fc filnavn = Replace(LCase(f1.Name), ".csv", "")
If LCase(Right(filnavn, 3)) <> "dag" And InStr(LCase(filnavn), "tilsætugedag") = 0 Then filDato = Right(filnavn, 10) ugedag = WeekdayName(Weekday(filDato, vbMonday))
ptNavn = sti & filnavn & ".csv": nytNavn = sti & filnavn & "_" & ugedag & ".csv" Name ptNavn As nytNavn End If Next
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.