Avatar billede BentSmidt Novice
16. oktober 2016 - 11:56 Der er 2 kommentarer og
1 løsning

Beregne formler ved åbning af csv-fil

Jeg har en VBA macro der læser en excel-fil og på grundlag af indholdet dannes en output csv-fil hvor nogle af kolonnerne indeholder formler.
Når csv-filen åbnes med excel beregnes formlerne ikke før jeg stiller mig i de enkelte celler og taster return - og der der desværre mange :-(

Csv-filen ser sådan ud:

5101745;001;SEK;01-01-2016;30-12-2015;3;77541615,00;0,85;5417,29
5101745;001;SEK;=D1+1;=E1+1;3;77541615,00;0,85
5101745;001;SEK;=D2+1;=E2+1;3;77541615,00;0,85
5101745;001;SEK;04-01-2016;02-01-2016;3;77554553,21;0,85;5418,19
5101745;001;SEK;=D4+1;=E4+1;3;77554553,21;0,85
5101745;001;SEK;=D5+1;=E5+1;3;77554553,21;0,85

Når jeg åbner filen med excel ved at klikke på filenavnet ser det således ud:

5101745    1    SEK    01-01-2016    30-12-2015    3    77541615    0,85    5417,29
5101745    1    SEK    42371    42369    3    77541615    0,85   
5101745    1    SEK    42372    42370    3    77541615    0,85   
5101745    1    SEK    04-01-2016    02-01-2016    3    77554553,21    0,85    5418,19
5101745    1    SEK    42374    42372    3    77554553,21    0,85   
5101745    1    SEK    42375    42373    3    77554553,21    0,85   

Kan man få excel til at udføre beregningen/fomateringen? Jeg går ud fra at det er det der sker når jeg taster på de enkelte celler med formlerne da excel åbenbart allerede ved indlæsningen har beregnet datoværdierne..
Jeg har prøvet Beregn Ark men det løser ikke problemet som nok er rimelig simpelt.
På forhånd tak :-)
Avatar billede jkrons Professor
16. oktober 2016 - 13:01 #1
Prøv at lægfge denne ind i slutningen af makroen, efter selve åbningen - eller kør den som en separat makro.

For Each c In Range("a1:I6").Cells
c.FormulaR1C1 = "=R[-1]C+1"
Next

Ret området, så det passer til det område,. du aktuelt har formler i.
Avatar billede BentSmidt Novice
16. oktober 2016 - 15:07 #2
Hej jkons,
tak for forslaget, men min VBA macro DANNER en csv-fil som brugeren så åbner ved at klikke på filen så der er ingen macro i csv-filen - kun i det værktøj der danner den.
Jeg har fundet ud af at hvis jeg efter åbning af csv-filen formatterer dato kolonnerne som dato ser det ok ud så jeg vil lige se om jeg har lægge noget formattering ind ud over selve formularen.
Avatar billede BentSmidt Novice
16. oktober 2016 - 18:17 #3
Nå, jeg fandt en løsning selv :-)
Mit primære mål er at præsentere data for brugerne uden at den selv skal fedte alt for meget rundt med formater så for at alle data i dato-kolonnerne står korrekt har jeg rettet min VBA macro til at danne følgende data i den csv-fil som den opretter:

5101745;001;SEK;"=TEKST(""01-01-2016""; ""dd-mm-åååå"")";"=TEKST(""30-12-2015""; ""dd-mm-åååå"")";3;77541615,00;0,85;5417,29
5101745;001;SEK;"=TEKST(D1+1; ""dd-mm-åååå"")";"=TEKST(E1+1; ""dd-mm-åååå"")";3;77541615,00;0,85
5101745;001;SEK;"=TEKST(D2+1; ""dd-mm-åååå"")";"=TEKST(E2+1; ""dd-mm-åååå"")";3;77541615,00;0,85
5101745;001;SEK;"=TEKST(""04-01-2016""; ""dd-mm-åååå"")";"=TEKST(""02-01-2016""; ""dd-mm-åååå"")";3;77554553,21;0,85;5418,19
5101745;001;SEK;"=TEKST(D4+1; ""dd-mm-åååå"")";"=TEKST(E4+1; ""dd-mm-åååå"")";3;77554553,21;0,85
5101745;001;SEK;"=TEKST(D5+1; ""dd-mm-åååå"")";"=TEKST(E5+1; ""dd-mm-åååå"")";3;77554553,21;0,85

Når brugeren åbner filen ved at klikke på den ser der umiddelbart således ud:

5101745    1    SEK    01-01-2016    30-12-2015    3    77541615    0,85    5417,29
5101745    1    SEK    02-01-2016    31-12-2015    3    77541615    0,85   
5101745    1    SEK    03-01-2016    01-01-2016    3    77541615    0,85   
5101745    1    SEK    04-01-2016    02-01-2016    3    77554553,21    0,85    5418,19
5101745    1    SEK    05-01-2016    03-01-2016    3    77554553,21    0,85   
5101745    1    SEK    06-01-2016    04-01-2016    3    77554553,21    0,85   

Bare hvis der er nogen der er interesseret så ser VBA koden for et enkelt dato felt således ud:

strDato = ranData.Cells(i, 2).Value
strDato = """""" & strDato & """"""
strDato1 = """=TEKST(" & strDato & "; """"dd-mm-åååå"""")"""

Og for felterne med formularen:

strDato1 = """=TEKST(D" & taeller & "+1" & "; """"dd-mm-åååå"""")"""
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

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



Seneste spørgsmål Seneste aktivitet
I går 20:46 opkaldside Af hagbartm i Mobiltelefoner
I går 16:05 win 10 vil ikke boote Af bb69 i Windows
I går 11:20 Lenovo x390 Af tobberjas i PC
I går 10:14 Alder i Excel Af Nanarsi i Excel
I går 09:00 Flere linier på faneblad Af Peder Lund Nielsen i Excel