• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Vreemde tekens bij import csv

Status
Niet open voor verdere reacties.

lam201

Gebruiker
Lid geworden
23 aug 2007
Berichten
515
Hi,


Ik heb een xlsm document met daarin een VBA code om een csv bestand te importeren.
De import gaat goed, maar bij bepaalde tekens gaat het mis.
Zij bijgevoegde lijst met Deense plaatsnamen.

Helsingør --> Helsingør
Næstved --> Næstved
Dråby --> DrÃ¥by

wat ik heb kunnen vinden is dat het met bepaalde UTF codering te maken heeft.
Maar hoe precies weet ik niet.

Hoe kan ik mijn code aanpassen om de juiste tekens te krijgen?
 

Bijlagen

  • ImportCsv.xlsm
    29 KB · Weergaven: 11
  • testFile.csv
    744 bytes · Weergaven: 17
Open het CSV bestand met Kladblok en sla het bestand op als Ansi in plaats van UTF-8.
Daarna importeren.
Clipboard01.png

En waarom zo'n extreem ingewikkelde manier van importeren?
Dubbelklik na bovenstaande actie op het CSV bestand.
 
Laatst bewerkt:
Hmm ja,
Dan moet ik alsnog elk csv bestand handmatig openen, opslaan en weer sluiten.
de macro moest dit juist automatiseren.

En ja, de macro (niet zelf geschreven) ziet er erg ingewikkeld uit.
Maar de kracht zit 'm wel in de flexibiliteit. Ongeacht aantal regels, kolommen, scheidingsteken kan ik deze telkens weer gebruiken.
Dubbelklik om te openen is geen optie, omdat deze macro deel uit maakt van een groter geheel van openen, filteren en bewerken.

Iemand nog een ander idee om dit op te lossen?
 
Je kent nu de oorzaak en daar ging het me om.
Er is maar 1 echte oplossing en dat is de partij die de CSV levert te vragen deze in ANSI formaat in plaats van UTF-8 te leveren.
 
Hallo,

Als ik de csv file inlees met power query dan is er geen "vuiltje" aan de lucht.
 

Bijlagen

  • TestFile.xlsx
    17,3 KB · Weergaven: 10
VBA leest tekst bestanden alleen in Ansi format.
Power Query gaat daar anders mee om.
Dus dat klopt wel :)
 
Staat het hier niet bij?
 
even een korte samenvatting van alle reacties in een macro via de macro-recorder, dus er zullen nog wel wat lijnen nog kunnen geschrapt worden en het getal wordt ook nog niet netjes ingelezen, het is hem om het idee te doen.

Code:
Sub Macro1()
     '
     ' Macro1 Macro
     '

     '
     ActiveWorkbook.Queries.Add Name:="testFile", Formula:="let" & Chr(13) & "" & Chr(10) & "    Bron = Csv.Document(File.Contents(""C:\Users\Eigenaar\Downloads\testFile.csv""),[Delimiter="";"", Columns=3, Encoding=65001, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Type gewijzigd"" = Table.TransformColumnTypes(Bron,{{""Column1"", type text}, {""Column2"", type text}, {""Column3"", Int64.Type}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Type gewijzigd"""
     ActiveWorkbook.Worksheets.Add

     With ActiveSheet.ListObjects.Add(SourceType:=0, Source:="OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=testFile;Extended Properties=""""", Destination:=Range("$A$1")).QueryTable
          .CommandType = xlCmdSql
          .CommandText = Array("SELECT * FROM [testFile]")
          .RowNumbers = False
          .FillAdjacentFormulas = False
          .PreserveFormatting = True
          .RefreshOnFileOpen = False
          .BackgroundQuery = True
          .RefreshStyle = xlInsertDeleteCells
          .SavePassword = False
          .SaveData = True
          .AdjustColumnWidth = True
          .RefreshPeriod = 0
          .PreserveColumnInfo = True
          .ListObject.DisplayName = "testFile_" & Format(Now, "hhmmss")
          .Refresh BackgroundQuery:=False
     End With

     With ActiveWorkbook
          .Queries(.Queries.Count).Delete
     End With

End Sub
 
Laatst bewerkt:
Code:
Sub M_snb()
    With ActiveSheet.QueryTables.Add("TEXT;J:\download\testFile.csv", Range("$A$1"))
        .TextFilePlatform = 65001
        .TextFileTabDelimiter = 0
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = 0
        .TextFileSpaceDelimiter = 0
        .Refresh 0
    End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan