|
| åbning af tekstfil i excel vha. VBA Fra : Søren Thaaning Peder~ |
Dato : 11-06-01 17:10 |
|
Jeg har et problem med en tekstfil, som skal åbnes i excel og senere laves
databehandling på. Jeg har i excel optaget en kode vha. "indspil makro", som
gør nøjagtig det samme som hvis jeg manuelt åbner filen i excel. Mit problem
er at tekstfilen benytter kommaer som decimaltegn, men under åbningen bliver
alle kommaerne af en aller anden grund konverteret til tusindtalseparatorer
og mine kommatal bliver i stedet meget store tal. Jeg kan ikke forstå at
dette sker for når jeg manuelt gør samme procedure så er der ikke noget
problem.
Jeg benytter nedenstående kald til at åbne tekstfilen, men er der nogen som
ved havd man mere skal skrive for at excel ikke konverterer alle kommaer til
tusindtalsseparator ??
************************
Workbooks.OpenText fil _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, FieldInfo:=Array(1,
1)
************************
Manuelt åbning af filen giver nedenstående:
Date Time Value Status Value
Status
37023 0,958333333 14,017151 #2000 62,822352 #2000
37023 0,958564815 14,181951 #2000 62,85287 #2000
37023 0,958796296 14,548173 #2000 63,035981 #2000
37023 0,959027778 14,969329 #2000 63,035981 #2000
37023 0,959259259 14,49324 #2000 62,883389 #2000
37023 0,959490741 13,760796 #2000 62,822352 #2000
37023 0,959722222 13,376263 #2000 62,700278 #2000
37023 0,959953704 12,900174 #2000 62,547685 #2000
37023 0,960185185 12,533952 #2000 62,578204 #2000
37023 0,960416667 12,717063 #2000 62,547685 #2000
37023 0,960648148 12,222663 #2000 62,395093 #2000
Automatisk åbning af filen giver nedenstående:
Date Time Value Status Value
Status
37023 0,958333333 14.017.151 #2000 62.822.352 #2000
37023 0,958564815 14.181.951 #2000 62.852.870 #2000
37023 0,958796296 14.548.173 #2000 63.035.981 #2000
37023 0,959027778 14.969.329 #2000 63.035.981 #2000
37023 0,959259259 14.493.240 #2000 62.883.389 #2000
37023 0,959490741 13.760.796 #2000 62.822.352 #2000
37023 0,959722222 13.376.263 #2000 62.700.278 #2000
37023 0,959953704 12.900.174 #2000 62.547.685 #2000
37023 0,960185185 12.533.952 #2000 62.578.204 #2000
37023 0,960416667 12.717.063 #2000 62.547.685 #2000
37023 0,960648148 12.222.663 #2000 62.395.093 #2000
37023 0,960879630 11.801.508 #2000 62.456.130 #2000
På forhånd tak
Søren
| |
Harald Staff (11-06-2001)
| Kommentar Fra : Harald Staff |
Dato : 11-06-01 19:27 |
|
Søren
Det der kan du give op... Excel tenker skandinavisk, VBA tenker amerikansk.
Og de blir aldri enige om hvilke nummerstandard som gjelder, hvorvidt det er
, eller . som er decimalseparator etc etc... "Manuelt" er rimeligvis kun
skandinavisk, så der er ingen konflikter.
Se om du får bedre resultater med koden på
http://www.cpearson.com/excel/imptext.htm. Håper det...
Beste hilsen Harald
"Søren Thaaning Pedersen" <soren_p@vip.cybercity.dk> wrote in message
news:9g2qnf$15h5$1@news.cybercity.dk...
> Jeg har et problem med en tekstfil, som skal åbnes i excel og senere laves
> databehandling på. Jeg har i excel optaget en kode vha. "indspil makro",
som
> gør nøjagtig det samme som hvis jeg manuelt åbner filen i excel. Mit
problem
> er at tekstfilen benytter kommaer som decimaltegn, men under åbningen
bliver
> alle kommaerne af en aller anden grund konverteret til
tusindtalseparatorer
> og mine kommatal bliver i stedet meget store tal. Jeg kan ikke forstå at
> dette sker for når jeg manuelt gør samme procedure så er der ikke noget
> problem.
>
> Jeg benytter nedenstående kald til at åbne tekstfilen, men er der nogen
som
> ved havd man mere skal skrive for at excel ikke konverterer alle kommaer
til
> tusindtalsseparator ??
>
> ************************
> Workbooks.OpenText fil _
> , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
> :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
FieldInfo:=Array(1,
> 1)
> ************************
>
> Manuelt åbning af filen giver nedenstående:
>
> Date Time Value Status Value
> Status
> 37023 0,958333333 14,017151 #2000 62,822352 #2000
> 37023 0,958564815 14,181951 #2000 62,85287 #2000
> 37023 0,958796296 14,548173 #2000 63,035981 #2000
> 37023 0,959027778 14,969329 #2000 63,035981 #2000
> 37023 0,959259259 14,49324 #2000 62,883389 #2000
> 37023 0,959490741 13,760796 #2000 62,822352 #2000
> 37023 0,959722222 13,376263 #2000 62,700278 #2000
> 37023 0,959953704 12,900174 #2000 62,547685 #2000
> 37023 0,960185185 12,533952 #2000 62,578204 #2000
> 37023 0,960416667 12,717063 #2000 62,547685 #2000
> 37023 0,960648148 12,222663 #2000 62,395093 #2000
>
> Automatisk åbning af filen giver nedenstående:
>
> Date Time Value Status Value
> Status
> 37023 0,958333333 14.017.151 #2000 62.822.352 #2000
> 37023 0,958564815 14.181.951 #2000 62.852.870 #2000
> 37023 0,958796296 14.548.173 #2000 63.035.981 #2000
> 37023 0,959027778 14.969.329 #2000 63.035.981 #2000
> 37023 0,959259259 14.493.240 #2000 62.883.389 #2000
> 37023 0,959490741 13.760.796 #2000 62.822.352 #2000
> 37023 0,959722222 13.376.263 #2000 62.700.278 #2000
> 37023 0,959953704 12.900.174 #2000 62.547.685 #2000
> 37023 0,960185185 12.533.952 #2000 62.578.204 #2000
> 37023 0,960416667 12.717.063 #2000 62.547.685 #2000
> 37023 0,960648148 12.222.663 #2000 62.395.093 #2000
> 37023 0,960879630 11.801.508 #2000 62.456.130 #2000
>
> På forhånd tak
>
> Søren
>
>
| |
Lars Jakobsen (12-06-2001)
| Kommentar Fra : Lars Jakobsen |
Dato : 12-06-01 07:04 |
|
Søren,
Jeg er helt enig med Harald - giv op med det samme. Jeg har forgæves forsøgt
i årevis (såvidt jeg husker også med CPearson's kode). Det nærmeste gode
forsøg jeg har gjort (det er vidst også sådan CPearson's kode er) gik ud på
at åbne tekst filen med Open "filename.txt" For Input Access Read As #1 og
så læse samt evaluere hvert tegn (og vidst nok i den forbindelse konvertere
komma og punktum tegn, som det passede mig), men det er en lidt omstændig
proces som ikke virkede 100%.
Det eneste der virker hver gang for mig er at sætte pc'en op med amerikansk
standard.
Med venlig hilsen
Lars Jakobsen
"Harald Staff" <harald.staff@eunet.no> skrev i en meddelelse
news:9g32g5$fsq$1@oslo-nntp.eunet.no...
> Søren
>
> Det der kan du give op... Excel tenker skandinavisk, VBA tenker
amerikansk.
> Og de blir aldri enige om hvilke nummerstandard som gjelder, hvorvidt det
er
> , eller . som er decimalseparator etc etc... <---clip(lj)
> "Søren Thaaning Pedersen" <soren_p@vip.cybercity.dk> wrote in message
> news:9g2qnf$15h5$1@news.cybercity.dk...
> > Jeg har et problem med en tekstfil, som skal åbnes i excel og senere
laves
> > databehandling på. Jeg har i excel optaget en kode vha. "indspil makro",
> som
> > gør nøjagtig det samme som hvis jeg manuelt åbner filen i excel. Mit
> problem
> > er at tekstfilen benytter kommaer som decimaltegn, men under åbningen
> bliver
> > alle kommaerne af en aller anden grund konverteret til
> tusindtalseparatorer
> > og mine kommatal bliver i stedet meget store tal. <--clip(lj)
| |
Harald Staff (12-06-2001)
| Kommentar Fra : Harald Staff |
Dato : 12-06-01 09:37 |
|
Søren
Om du fordyper deg i Chip's kode, så kan du enkeltvis erstatte komma med
punktum underveis enkeltvis. Da skal du kunne få rigtig resultat:
Sub Test()
Dim LestString As String
LestString = "0,958333333"
MsgBox Val(Replace(LestString, ",", "."))
End Sub
Det er et stykke arbeid, men du har i alle fall kontroll på denne måte.
Beste hilsen Harald
Harald Staff <harald.staff@eunet.no> skrev i
news:9g32g5$fsq$1@oslo-nntp.eunet.no...
> Søren
>
> Det der kan du give op... Excel tenker skandinavisk, VBA tenker
amerikansk.
> Og de blir aldri enige om hvilke nummerstandard som gjelder, hvorvidt det
er
> , eller . som er decimalseparator etc etc... "Manuelt" er rimeligvis kun
> skandinavisk, så der er ingen konflikter.
>
> Se om du får bedre resultater med koden på
> http://www.cpearson.com/excel/imptext.htm. Håper det...
>
> Beste hilsen Harald
>
>
> "Søren Thaaning Pedersen" <soren_p@vip.cybercity.dk> wrote in message
> news:9g2qnf$15h5$1@news.cybercity.dk...
> > Jeg har et problem med en tekstfil, som skal åbnes i excel og senere
laves
> > databehandling på. Jeg har i excel optaget en kode vha. "indspil makro",
> som
> > gør nøjagtig det samme som hvis jeg manuelt åbner filen i excel. Mit
> problem
> > er at tekstfilen benytter kommaer som decimaltegn, men under åbningen
> bliver
> > alle kommaerne af en aller anden grund konverteret til
> tusindtalseparatorer
> > og mine kommatal bliver i stedet meget store tal. Jeg kan ikke forstå at
> > dette sker for når jeg manuelt gør samme procedure så er der ikke noget
> > problem.
> >
> > Jeg benytter nedenstående kald til at åbne tekstfilen, men er der nogen
> som
> > ved havd man mere skal skrive for at excel ikke konverterer alle kommaer
> til
> > tusindtalsseparator ??
> >
> > ************************
> > Workbooks.OpenText fil _
> > , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
> > :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
> FieldInfo:=Array(1,
> > 1)
> > ************************
> >
> > Manuelt åbning af filen giver nedenstående:
> >
> > Date Time Value Status Value
> > Status
> > 37023 0,958333333 14,017151 #2000 62,822352 #2000
> > 37023 0,958564815 14,181951 #2000 62,85287 #2000
> > 37023 0,958796296 14,548173 #2000 63,035981 #2000
> > 37023 0,959027778 14,969329 #2000 63,035981 #2000
> > 37023 0,959259259 14,49324 #2000 62,883389 #2000
> > 37023 0,959490741 13,760796 #2000 62,822352 #2000
> > 37023 0,959722222 13,376263 #2000 62,700278 #2000
> > 37023 0,959953704 12,900174 #2000 62,547685 #2000
> > 37023 0,960185185 12,533952 #2000 62,578204 #2000
> > 37023 0,960416667 12,717063 #2000 62,547685 #2000
> > 37023 0,960648148 12,222663 #2000 62,395093 #2000
> >
> > Automatisk åbning af filen giver nedenstående:
> >
> > Date Time Value Status Value
> > Status
> > 37023 0,958333333 14.017.151 #2000 62.822.352 #2000
> > 37023 0,958564815 14.181.951 #2000 62.852.870 #2000
> > 37023 0,958796296 14.548.173 #2000 63.035.981 #2000
> > 37023 0,959027778 14.969.329 #2000 63.035.981 #2000
> > 37023 0,959259259 14.493.240 #2000 62.883.389 #2000
> > 37023 0,959490741 13.760.796 #2000 62.822.352 #2000
> > 37023 0,959722222 13.376.263 #2000 62.700.278 #2000
> > 37023 0,959953704 12.900.174 #2000 62.547.685 #2000
> > 37023 0,960185185 12.533.952 #2000 62.578.204 #2000
> > 37023 0,960416667 12.717.063 #2000 62.547.685 #2000
> > 37023 0,960648148 12.222.663 #2000 62.395.093 #2000
> > 37023 0,960879630 11.801.508 #2000 62.456.130 #2000
> >
> > På forhånd tak
> >
> > Søren
> >
> >
>
>
| |
Søren Thaaning Peder~ (12-06-2001)
| Kommentar Fra : Søren Thaaning Peder~ |
Dato : 12-06-01 14:07 |
|
Hvad vil I istedet foreslå at jeg gør ved poblemet ?
Søren
Harald Staff skrev i meddelelsen <9g32g5$fsq$1@oslo-nntp.eunet.no>...
>Søren
>
>Det der kan du give op... Excel tenker skandinavisk, VBA tenker amerikansk.
>Og de blir aldri enige om hvilke nummerstandard som gjelder, hvorvidt det
er
>, eller . som er decimalseparator etc etc... "Manuelt" er rimeligvis kun
>skandinavisk, så der er ingen konflikter.
>
>Se om du får bedre resultater med koden på
> http://www.cpearson.com/excel/imptext.htm. Håper det...
>
>Beste hilsen Harald
>
>
>"Søren Thaaning Pedersen" <soren_p@vip.cybercity.dk> wrote in message
>news:9g2qnf$15h5$1@news.cybercity.dk...
>> Jeg har et problem med en tekstfil, som skal åbnes i excel og senere
laves
>> databehandling på. Jeg har i excel optaget en kode vha. "indspil makro",
>som
>> gør nøjagtig det samme som hvis jeg manuelt åbner filen i excel. Mit
>problem
>> er at tekstfilen benytter kommaer som decimaltegn, men under åbningen
>bliver
>> alle kommaerne af en aller anden grund konverteret til
>tusindtalseparatorer
>> og mine kommatal bliver i stedet meget store tal. Jeg kan ikke forstå at
>> dette sker for når jeg manuelt gør samme procedure så er der ikke noget
>> problem.
>>
>> Jeg benytter nedenstående kald til at åbne tekstfilen, men er der nogen
>som
>> ved havd man mere skal skrive for at excel ikke konverterer alle kommaer
>til
>> tusindtalsseparator ??
>>
>> ************************
>> Workbooks.OpenText fil _
>> , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
>> :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
>FieldInfo:=Array(1,
>> 1)
>> ************************
>>
>> Manuelt åbning af filen giver nedenstående:
>>
>> Date Time Value Status Value
>> Status
>> 37023 0,958333333 14,017151 #2000 62,822352 #2000
>> 37023 0,958564815 14,181951 #2000 62,85287 #2000
>> 37023 0,958796296 14,548173 #2000 63,035981 #2000
>> 37023 0,959027778 14,969329 #2000 63,035981 #2000
>> 37023 0,959259259 14,49324 #2000 62,883389 #2000
>> 37023 0,959490741 13,760796 #2000 62,822352 #2000
>> 37023 0,959722222 13,376263 #2000 62,700278 #2000
>> 37023 0,959953704 12,900174 #2000 62,547685 #2000
>> 37023 0,960185185 12,533952 #2000 62,578204 #2000
>> 37023 0,960416667 12,717063 #2000 62,547685 #2000
>> 37023 0,960648148 12,222663 #2000 62,395093 #2000
>>
>> Automatisk åbning af filen giver nedenstående:
>>
>> Date Time Value Status Value
>> Status
>> 37023 0,958333333 14.017.151 #2000 62.822.352 #2000
>> 37023 0,958564815 14.181.951 #2000 62.852.870 #2000
>> 37023 0,958796296 14.548.173 #2000 63.035.981 #2000
>> 37023 0,959027778 14.969.329 #2000 63.035.981 #2000
>> 37023 0,959259259 14.493.240 #2000 62.883.389 #2000
>> 37023 0,959490741 13.760.796 #2000 62.822.352 #2000
>> 37023 0,959722222 13.376.263 #2000 62.700.278 #2000
>> 37023 0,959953704 12.900.174 #2000 62.547.685 #2000
>> 37023 0,960185185 12.533.952 #2000 62.578.204 #2000
>> 37023 0,960416667 12.717.063 #2000 62.547.685 #2000
>> 37023 0,960648148 12.222.663 #2000 62.395.093 #2000
>> 37023 0,960879630 11.801.508 #2000 62.456.130 #2000
>>
>> På forhånd tak
>>
>> Søren
>>
>>
>
>
| |
Harald Staff (12-06-2001)
| Kommentar Fra : Harald Staff |
Dato : 12-06-01 14:38 |
|
Du leste vel ikke mitt forrige svar med spesiell interresse... Vel, gjør
følnede endring i Chip's kode, så den leser
TempVal = Mid(WholeLine, Pos, NextPos - Pos)
If IsNumeric(TempVal) Then
Cells(RowNdx, ColNdx).Value = Val(Replace(TempVal, ",", "."))
Else
Cells(RowNdx, ColNdx).Value = TempVal
End If
Pos = NextPos + 1
HTH. Beste hilsen Harald
Søren Thaaning Pedersen <soren_p@vip.cybercity.dk> skrev i
news:9g54di$1d0a$1@news.cybercity.dk...
> Hvad vil I istedet foreslå at jeg gør ved poblemet ?
>
> Søren
| |
bnj (13-06-2001)
| Kommentar Fra : bnj |
Dato : 13-06-01 13:08 |
|
Du kan indlæse filen linie for linie. Det er ikke så langsomt hvis men
benytter TextToColumns.
for eksempel:
'***************************************************************
Private Sub CommandButton1_Click()
'** Husk at tilføje Microsoft Scripting Runtime i Tools|References!!!
Dim fso As New FileSystemObject
Dim TextFile As TextStream
On Error GoTo OpenFileError
'** fil må du have defineret et eller andet sted!
Set TextFile = fso.OpenTextFile(fil, ForReading)
On Error GoTo 0
Dim CellNo As Integer
CellNo = 1
Dim FileLine As String
With TextFile
Do While Not .AtEndOfStream
FileLine = .ReadLine
Dim Pos As Integer
Pos = 1
Do
Pos = InStr(Pos, FileLine, ".")
If Pos > 0 Then Mid(FileLine, Pos) = ","
Loop Until Pos <= 1
' Perform any filtering.
Cells(CellNo, 1) = FileLine
CellNo = CellNo + 1
Loop
End With
Set fso = Nothing
Dim RangeStr As String
RangeStr = "A1:A" & CStr(CellNo - 1)
Application.DisplayAlerts = False
'** Se andre options for TextToColumns i Excel Help den ligner OpenText
meget!
Range(RangeStr).TextToColumns Tab:=True, DecimalSeparator:=","
Columns("A:I").AutoFit
Application.DisplayAlerts = True
Exit Sub
OpenFileError:
MsgBox "Fejl!" & vbCrLf & Err.Description, vbCritical
End Sub
'***************************************************************
"Søren Thaaning Pedersen" <soren_p@vip.cybercity.dk> wrote in message
news:9g2qnf$15h5$1@news.cybercity.dk...
> Jeg har et problem med en tekstfil, som skal åbnes i excel og senere laves
> databehandling på. Jeg har i excel optaget en kode vha. "indspil makro",
som
> gør nøjagtig det samme som hvis jeg manuelt åbner filen i excel. Mit
problem
> er at tekstfilen benytter kommaer som decimaltegn, men under åbningen
bliver
> alle kommaerne af en aller anden grund konverteret til
tusindtalseparatorer
> og mine kommatal bliver i stedet meget store tal. Jeg kan ikke forstå at
> dette sker for når jeg manuelt gør samme procedure så er der ikke noget
> problem.
>
> Jeg benytter nedenstående kald til at åbne tekstfilen, men er der nogen
som
> ved havd man mere skal skrive for at excel ikke konverterer alle kommaer
til
> tusindtalsseparator ??
>
> ************************
> Workbooks.OpenText fil _
> , Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
> :=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True,
FieldInfo:=Array(1,
> 1)
> ************************
>
> Manuelt åbning af filen giver nedenstående:
>
> Date Time Value Status Value
> Status
> 37023 0,958333333 14,017151 #2000 62,822352 #2000
> 37023 0,958564815 14,181951 #2000 62,85287 #2000
> 37023 0,958796296 14,548173 #2000 63,035981 #2000
> 37023 0,959027778 14,969329 #2000 63,035981 #2000
> 37023 0,959259259 14,49324 #2000 62,883389 #2000
> 37023 0,959490741 13,760796 #2000 62,822352 #2000
> 37023 0,959722222 13,376263 #2000 62,700278 #2000
> 37023 0,959953704 12,900174 #2000 62,547685 #2000
> 37023 0,960185185 12,533952 #2000 62,578204 #2000
> 37023 0,960416667 12,717063 #2000 62,547685 #2000
> 37023 0,960648148 12,222663 #2000 62,395093 #2000
>
> Automatisk åbning af filen giver nedenstående:
>
> Date Time Value Status Value
> Status
> 37023 0,958333333 14.017.151 #2000 62.822.352 #2000
> 37023 0,958564815 14.181.951 #2000 62.852.870 #2000
> 37023 0,958796296 14.548.173 #2000 63.035.981 #2000
> 37023 0,959027778 14.969.329 #2000 63.035.981 #2000
> 37023 0,959259259 14.493.240 #2000 62.883.389 #2000
> 37023 0,959490741 13.760.796 #2000 62.822.352 #2000
> 37023 0,959722222 13.376.263 #2000 62.700.278 #2000
> 37023 0,959953704 12.900.174 #2000 62.547.685 #2000
> 37023 0,960185185 12.533.952 #2000 62.578.204 #2000
> 37023 0,960416667 12.717.063 #2000 62.547.685 #2000
> 37023 0,960648148 12.222.663 #2000 62.395.093 #2000
> 37023 0,960879630 11.801.508 #2000 62.456.130 #2000
>
> På forhånd tak
>
> Søren
>
>
| |
|
|