Avatar billede oyejo Nybegynder
16. februar 2005 - 14:38 Der er 43 kommentarer og
2 løsninger

VBA Problemer med datoformat i windows xp

Har følgende kode som fugner utmerket på min windows 2000.

Public vTime(2) As Variant
SisteRad = ActiveSheet.Range("A10000").End(xlUp).Row
vTime(n) = ActiveSheet.Range(Cells(1, 1), Cells(SisteRad, 1))
Range(Cells(1 , 1),Cells(UBound(vTime(n), 1) , 1)) = vTime(n)

PROBLEMET OPPSTÅR NÅR JEG PRØVER SAMME MAKRO PÅ EN ANNEN MASKIN SOM KJØER WINDOWS XP.
Jeg åpner en csv. fil og leser data fra denne.
Kollonne A er dato tid.
Fila blir fortsatt åpnet korrekt, dato tid vises korekt i Csv fila.

Så blir dato kolonnen list til en vTime(), for deretter å bli lest til en kolonne i et excel ark.

MEN DA HAR DATOEN BLITT ANERLEDES, ISTEDET FOR 1.OKTOBER 2004, HAR DATOEN BLITT 10. JANUAR 2004.

Kan noen hjelpe?
Avatar billede oyejo Nybegynder
16. februar 2005 - 14:45 #1
Det ser ut til at vi har samme datoformater i Regionale instilliner på våre pc-er
Avatar billede kabbak Professor
16. februar 2005 - 15:24 #2
format(vTime(n),"DD-MM-YYYY")
Avatar billede oyejo Nybegynder
16. februar 2005 - 15:56 #3
Hei kabbak,
tror nok du er inne på det rette, men skal vTime() formateres før eller etter at den er fylt med data. har prøvd litt forskjellig uten å lykkes
oye
Avatar billede oyejo Nybegynder
16. februar 2005 - 16:08 #4
vTime(n) = ActiveSheet.Range(Cells(1, 1), Cells(SisteRad, 1))
msgbox vTime(n)(3,1) viser datoen i riktig format.

excel-fila som skal fylles med data ligger på felles server.
Når jeg benytter min egen pc, windows 2000 blir data lagret riktig på fila på serveren.

Hvis jeg gjør det samme med den samme fila fra en annen pc. XP, blir resultatet feil.
Avatar billede kabbak Professor
16. februar 2005 - 16:26 #5
du blir nok nødt til at fylde en celle af gangen,

For i = 1 To UBound(vTime(n))
Cells(i, 1) = Day((vTime(n)(i, 1))) & "-" & Month((vTime(n)(i, 1))) & "-" & Year((vTime(n)(i, 1)))
Next
Avatar billede oyejo Nybegynder
16. februar 2005 - 17:11 #6
Hei kabbak, for se på din løsning i morgen,
problemet er at jeg har liten tilgang til den andre pc'en.
Hvis det er slik du sier, kanskje jeg kan utføre det som en
array-operasjon i stedet?
For det er vel en bestemt differanse (ett tall ) mellom disse to systemene?
Avatar billede bak Forsker
16. februar 2005 - 17:32 #7
oyejo -> prøv at sende filen til mig. jeg har begge systemer.
excel@tbdl.dk
Avatar billede oyejo Nybegynder
17. februar 2005 - 10:42 #8
bak, det hadde vært flott hvis jeg kunne sende hele mappen,
slik at du kan teste det hele? (1,6MB)
Der ligger csv.filer som kan åpnes,
data.xls som skal motta data og vba.xls som koden ligger i.
Du bør teste det hele i Windows 2000 først, for der skal det fungere.
Det er vel så rotet og amatørmessig at du ikke skjønner noen ting :-)
oye
PS! sender ingen ting før jeg får tilbakemelding her.
Avatar billede kabbak Professor
17. februar 2005 - 10:45 #9
du må godt sende den til mig også,kan du ikke zippe hele mappen

kabbak snabela tiscali dot dk
Avatar billede kabbak Professor
17. februar 2005 - 10:46 #10
jeg har ikke win 2000, men XP
Avatar billede oyejo Nybegynder
17. februar 2005 - 10:49 #11
kabbak, det kan jeg gjerne, man jeg har aldri "zippet" noe før.
blir 1,6MB for mye?
oye
Avatar billede kabbak Professor
17. februar 2005 - 10:52 #12
nej, størrelsen gør ikke noget, så længe den er under 10 MB.

hvis du har Winzip, så højreklik på mappen, vælg add to zip, og send så zipfilen.
Avatar billede oyejo Nybegynder
17. februar 2005 - 10:58 #13
Hei kabbak, tror zippinen gikk greit.
mappen ble sendt i dette øyeblikk
oye
Avatar billede kabbak Professor
17. februar 2005 - 10:59 #14
tak
Avatar billede oyejo Nybegynder
17. februar 2005 - 11:01 #15
kabbak, det er jeg som skal takke :-)
bak, jeg sendt mappen til deg også
oye
Avatar billede oyejo Nybegynder
17. februar 2005 - 11:59 #16
Det virker også som om Windows XP ikke blir enig med seg selv.
Den benytter et format/system, når den fyller cellene med data
og et annet format/system når den skal sette min og max verdier
på datoskalaen i diagrammene.
Avatar billede kabbak Professor
17. februar 2005 - 12:01 #17
jeg har ikke fået nogen mail endnu, er den på vej
Avatar billede oyejo Nybegynder
17. februar 2005 - 12:05 #18
..hadde skrevet feil i adressen.
prøver igjen
Avatar billede kabbak Professor
17. februar 2005 - 12:35 #19
jeg får en fejl her

lDyNr(2) = vTime(2)(2, 1)


vTime(2)(2, 1) har værdien

2004-05-01 00:00; -836; -168; -253; -476; -601; -563; -542; -370; -885; -433; -395; -220; -207; -285; -319; -270; -352; -167; -751; -119; -334; -206;    0;    0

men det er vel kun datoen du er intresseret i, så den har vel læst forkert
Avatar billede oyejo Nybegynder
17. februar 2005 - 12:49 #20
vTime(2)(2, 1) skal ha verdien: 2004-05-01 00:00.
eller rettere sagt, tallet som representerer dato og klokkeslett.
Det fungerer på min windows 2000.

Benyttes til å sette .MinimumScale i diagrammene D1, D2 også videre.
Hvilken verdi er det på MinimumScale i D1, etter at programmet har kjørt.
Avatar billede oyejo Nybegynder
17. februar 2005 - 12:50 #21
kom til å tenke på en ting.
har danmark og norge samme datoformat?
Avatar billede kabbak Professor
17. februar 2005 - 12:50 #22
vi bruger dd-mm-yyyy
Avatar billede oyejo Nybegynder
17. februar 2005 - 12:53 #23
hvordan skriver du det manuelt i excel? Hvis du går inn på egendefinert format?
tror vi har dd.mm.åååå, men dette er jeg usikker på.
skal prøve å undersøke saken.
Avatar billede kabbak Professor
17. februar 2005 - 13:10 #24
så vidt jeg kan se, er problemet at den ikke splitter dataerne på kolonner, men læser dem ind i A kolonnen, hvor de så står med ; imellem, derfor har vTime(2)(2, 1) data for hele rækken i sig.
Avatar billede kabbak Professor
17. februar 2005 - 13:19 #25
der kan være problemer med at bruge .CSV filer, for excel vil gerne bestemme hvordan de læses ind.

jeg omdøbte dine .CSV filer til .DAT og ændrede denne linie, så kørte det perfekt.
sTxtF = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".Csv")

til

sTxtF = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".Dat")
Avatar billede oyejo Nybegynder
17. februar 2005 - 13:21 #26
Det ser ikke ut til å være noe problem her.
hverken på xp eller w2000
skal sjekke det nærmere
Avatar billede oyejo Nybegynder
17. februar 2005 - 13:22 #27
ops så ikke din siste beskjed :-)
Avatar billede kabbak Professor
17. februar 2005 - 13:31 #28
hvilken excel version kører i, jeg har kørt koden i excel 2000 og 2003, det kørte fint begge steder, bortset fra at 2003 ikke forstod mai i A4
Avatar billede oyejo Nybegynder
17. februar 2005 - 13:43 #29
excel 2000 og 2003 på XP maskinen
er det en enkel metode for å endre filendelsen fra csv til dat i VBA?
det rename eller noe slikt?
Avatar billede oyejo Nybegynder
17. februar 2005 - 14:26 #30
prøvde med filendelsen .dat
har det samme problemet
Avatar billede kabbak Professor
17. februar 2005 - 14:32 #31
jeg tror at vi skal vente på bak, det kan være han har en løsning.

Han er jo NR 1, i excel ;o))
Avatar billede oyejo Nybegynder
17. februar 2005 - 14:43 #32
nå blir jo datoene lagt i en varaiant-matrise, det er jo overskrift i først celle
kanskje, jeg skulle prøve å overføre dataene til en annen matrise før jeg legger dem i excel?
Avatar billede bak Forsker
17. februar 2005 - 17:24 #33
jeg skulle have læst det hele inden jeg åbnede arkene og testede.
Kabbak har ret i at indlæsning i excel XP ikke fungerer (i danmark)
jeg valgte så at kopiere csv filerne til txt filer. (vidste ikke om de skulle bruges videre i forløbet som csv-filer)

    sTxtF = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".CSV")
    stxtF1 = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".txt")
    'Rename sTxtF as stxtF1
    FileCopy sCsvFld & sTxtF, sCsvFld & stxtF1
    sTxtF = stxtF1

Så åbnede excel XP dem fint.
Og du har ret oyejo, xl2000 opfører sig anderledes. Her er ingen problemer :-)
    Call OpenTextF
Avatar billede bak Forsker
17. februar 2005 - 17:34 #34
Kom vist til at blande lidt:-)
PS. i XL97 virker det slet ikke, men her er det noget helt andet der er galt.   

    sTxtF = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".CSV")
    stxtF1 = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".txt")
    'Rename sTxtF as stxtF1
    FileCopy sCsvFld & sTxtF, sCsvFld & stxtF1
    sTxtF = stxtF1
    Call OpenTextF
Avatar billede oyejo Nybegynder
17. februar 2005 - 17:49 #35
hei bak!
det som skjer er at vi har et dosprogram som genererer csv-filer.
Hvis jeg hadde en prosedyre som døpet om alle csv-filene i en katalog til
txt-filer. Ville jeg da kunne åpne txt-filene også i xl2000?
eller er det en enklere løsning?
jeg har ikke bruk for csv-filene, hvis jeg kan åpne filene som txt-filer.
Avatar billede oyejo Nybegynder
17. februar 2005 - 17:52 #36
jeg prøver å gi filene -txt endelse, så prøver jeg å åpne dem fra begge pc-ene.
må bare bort en liten time først.
Avatar billede bak Forsker
17. februar 2005 - 18:02 #37
Du kan omdøbe sådan her her.
 
    sTxtF = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".CSV")
    stxtF1 = vPreOpenF(n)(i) & Format(dDate(n), "yymm"".txt")
    Rename sTxtF as stxtF1
    sTxtF = stxtF1

Jeg er bare bange for at det ikke løser dit problem...Det løser det problem vi (kabbak og jeg) har med at åbne filerne korrekt i xlXP og xl2003, hvor hele llinier bliver læst ind i een celle. Det er åbenbart større forskel på norsk og dansk end umiddelbart antaget.
Jeg er sikker på at dit datoproblem hænger sammen med overførslen til array. Det er set før. Det er bare ikke samme problem vi har haft.
Avatar billede oyejo Nybegynder
17. februar 2005 - 19:41 #38
jaaaaaa...... det virker på  pc'enen her
løsningen ble å benytte en variabel av datoformat.: dTmpDate
benyttet denne til å lese datoverdiene gjennom og det fungerte.

koden ble slik...
Dim dTmpDate  AS Date
Set wsht = Sheets(Sht)
    With wsht
      .Cells(lRwOffst, 1) = vTime(n)(1, 1) ' kun for overskrif i første celle
      For r = 2 To UBound(vTime(n), 1)
        dTmpDate = vTime(n)(r, 1)
        .Cells(r + lRwOffst, Cln) = dTmpDate
      Next 'r


har sendt over en revisjon, slik at dere kan prøve om det fungerer hos dere, men det gjør det trolig ikke.

Takker så mye. Kan ikke dere se raskt gjennom koden og komme med forslag til forbedriger, så kan dere dele pointene? 
Dere har jo gjennom Eksperten skrevet det meste av koden ;-o

Takker så mye
oye
Avatar billede bak Forsker
17. februar 2005 - 20:16 #39
Jeg undrer mig lidt over at du ikke læser csv filerne direkte ind via Data->Importer eksterne Data således at opdatringen kan ske lidt mere automatisk. Hvad er begrundelsen for at benytte arrays ??
Avatar billede bak Forsker
17. februar 2005 - 20:24 #40
Ellers må jeg sige at koden er ved at være imponerende og meget hurtig
Umiddelbart ser jeg ikke det store potentiale for forbedringer, udover at du totalt mangler at kommentere din kode, hvilket vil gøre fejlsøgning meget svært (især for andre, men det er måske med vilje  :-) )
Avatar billede oyejo Nybegynder
18. februar 2005 - 08:16 #41
hei bak og kabbak.
må nok skjerpe meg når det gjelder å kommentere koden.
Kan nok tenkes jeg får problemer med å huske det selv etter en stund.

jeg får se litt nærmere på dette med Data->Importer eksterne Data
årsaken til at jeg ikke har benyttet det, er manglende kunnskaper.
ser ikke bort fra at nest spørsmål dreier seg om import av eksterne Data :-)

Da mangeler jeg bare et svar fra deg og kabbak, slik vi får litt sirkulasjon av pointene her på Eksperten.


takker så mye
oye
Avatar billede bak Forsker
18. februar 2005 - 19:36 #42
ok :-)
Avatar billede kabbak Professor
18. februar 2005 - 23:38 #43
ok :-)
Avatar billede oyejo Nybegynder
21. februar 2005 - 07:37 #44
Takker for hjelpen :-)
bare et kort spørsmål angående Data -> importer Data.
Jeg har 19 forskjellige prosjekter som benytter caller de samme funksjonene
Mange av prosjetene har mange csv-filer hver måned.
jeg importerer aldri den samme filen hver gang, og mangen ganger kommer kolonner fra forskjellige filer om hverandere.

Bør jeg likevel se på Importer Eksterene Data ?
Avatar billede bak Forsker
21. februar 2005 - 09:06 #45
Nej, hvis de ikke hedder det samme hver gang, kan det ikke betale sig.
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