20. februar 2004 - 13:15Der 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?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.
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?
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
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.
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
Dette script kan både hente fra csv og txt filer, du skal blot rette de steder jeg har skrevet csv til txt
Synes godt om
Ny brugerNybegynder
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.