Avatar billede stuf99 Nybegynder
20. februar 2004 - 13:15 Der er 7 kommentarer og
1 løsning

Forkert tolkning af CSV fil, tolker , som separator istedet for ;

Hej
Jeg har et lille problem med excel 97. Jeg har lavet en csv fil hvor separatoren er semikolon. Men det ser ud til at excel tolker komma i mine data som seperator. Når jeg laver filen om til at have hvor en kommaseperator så virker det fint nok med excel 97. Men så virker det f.eks. ikke med Excel XP.
Hvad gør jeg for at få Excel 97 til at makke ret?
Avatar billede bak Forsker
20. februar 2004 - 13:37 #1
XL97 er indrettet således at hvis man gemmer filen manuelt som csv fil bliver filer semicolon separeret.
Hvis man gemmer som csv fil med en makro bliver den komma-separeret
En fil der er dannet manuelt kan så kun indlæses korrekt manuelt og en fil der er dannet med makro indlæses kun korrekt med makro.

Dette kan ikke overstyres. (dog i kontrolpanel-international kan man sætte en anden seperator, men det gælder så for alle programmer)
Hvis du vil have det anderledes, må du kode eller gemme filen som noget andet end csv.

Når det er sagt, så har XP en ny feature, hvor man kan vælge regionsindstillinger og her sætte den seperator man ønsker at bruge.
Avatar billede stuf99 Nybegynder
20. februar 2004 - 14:13 #2
bak>> Ok, det virker fint nok hvis jeg fjerner extension, læser filen ind og derefter bruger "tekst til kolonner" og her bruger semikolon som seperator.
Men det er ikke noget jeg forventer at kunne få mine brugerer til at acceptere. Udfra det du skriver så skulle min csv fil være gemt med en makro, for ellers ville jeg jo ikke have problemet. Men min fil er en ren tekst fil!?
Har du et foreslag til en evt. holdbar løsning?
Avatar billede bak Forsker
20. februar 2004 - 14:20 #3
Du har ret i, at det er selve extensionen, der gør udslaget.
Hvordan vil du have den ? (med komma eller semicolon)
Avatar billede stuf99 Nybegynder
20. februar 2004 - 14:38 #4
semikolon.
Avatar billede bak Forsker
20. februar 2004 - 15:24 #5
Avatar billede bak Forsker
20. februar 2004 - 15:34 #6
List forkert, men her er en makro hvor du først skal markere området du ønsker at eksportere og derfeter angiver et filnavn.

Sub EksportAsCSV()
Const Delim    As String = ";"  'afgrænser (delimiter)
Dim y          As Long          'tæller
Dim x          As Long          'tæller
Dim strTemp    As String        'streng til de enkelte rækker
Dim lRows      As Long          'antal rækker
Dim lCols      As Long          'antal kolonner
Dim lFno      As Long          'fil nummer
Dim CSVFilename As String
Dim rngOmr As Range

Set rngOmr = Application.InputBox("Marker området der skal eksporteres :", "Marker Område", , , , , , 8)
CSVFilename = Application.GetSaveAsFilename(fileFilter:="CSV Files (*.csv), *.csv")
If CSVFilename = "False" Then Exit Sub

lFno = FreeFile
lRows = rngOmr.Rows.Count
lCols = rngOmr.Columns.Count
Open CSVFilename For Output As #lFno

For x = 1 To lRows
    strTemp = ""
    For y = 1 To lCols
        strTemp = strTemp & rngOmr(x, y).Text
        If y < lCols Then
            strTemp = strTemp & Delim
        Else
            Print #lFno, strTemp
        End If
    Next

Next
Close #lFno

End Sub
Avatar billede stuf99 Nybegynder
22. marts 2004 - 09:57 #7
undskyld den lange svartid.
En anden ting som jeg har bemærket når jeg åbner *.csv filen i excel er formateringen af felterne. Hvis jeg smider en talværdi ind med formatet 999,9999, så tolker excel det som 9.999.999. Hvorfor gør den det?
Det er da mærkelig at excel ignorerer kommaet.
Avatar billede weaponx Nybegynder
17. maj 2004 - 16:20 #8
Du mangler at få scriptet til at tolke decimaltal. Du kan bruge .TextFileDecimalSeparator = ","

Jeg ville iøvrigt vælge at lave scriptet på en anden måde:

Sub Importer CSV fil()
   
' Åbner en CSV fil og importerer den til excel
   
    Flt = Flt & "CSV Filer(*.csv),*.csv"
    Titel = "Vælg fil, som skal bearbejdes"
    fileToOpen = Application _
    .GetOpenFilename(Flt, , Titel)
  If fileToOpen <> False Then
   
    Worksheets("ARKNAVN").Activate
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & fileToOpen, Destination _
        :=Range("A1"))
        .Name = "ARKNAVN"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 2, 2, 2, 2, 2)
        .TextFileDecimalSeparator = "."
        .TextFileThousandsSeparator = "'"
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    End If
 
End Sub

Dette script kan både hente fra csv og txt filer, du skal blot rette de steder jeg har skrevet csv til txt
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