bacchida
Goto Top

csv Dateien als Text importieren

Hallo face-smile

ich habe ein Makro geschrieben, das .csv Dateien importiert. Nun habe ich folgendes Problem: In den importierten Dateien stehen fast ausschließlich Hexadezimalzahlen, die ich mittels Makro weiterverarbeite und umrechne. Aus Zahlen wie beispielsweise 7E025 macht Excel automatisch 7,00E+25 oder 637E4 wird 6,37E06. In meinem Makro formatiere ich die entsprechenden Zellen zu Text und rechne sie dann in Dezimalzahlen um, Fälle wie die beschriebenen verfälschen allerdings meine Ergebnisse.
Hier ein Ausschnitt aus meinem aktuellen Code, von dem ich denke, dass dort die entsprechende Formatierung reinmüsste:
    wbTarget.Worksheets(1).Name = "Summary"  
    wbTarget.Worksheets(1).Range("A:ZZ").Clear  
    For Each f In fso.GetFolder(csvpfad).Files
        If LCase(fso.GetExtensionName(f.Name)) = "csv" Then  
            Workbooks.OpenText Filename:=f.Path
            Set wbSource = ActiveWorkbook
            On Error Resume Next
            Set ws = wbTarget.Worksheets.Add(After:=wbTarget.Sheets(wbTarget.Sheets.count))
            ws.Range("A:ZZ").Clear  
            str = Right(f.Path, 32)
            str = Left(str, 22)
            ws.Name = str
            wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True  
            ws.Cells.NumberFormat = "@"  
            
            Call Evaluate
            Call chart
            wbSource.Worksheets(1).UsedRange.Copy Destination:=ws.Range("A1")  
            wbSource.Close False
        End If
    Next
Dort habe ich es mit
ws.Cells.NumberFormat = "@"  
versucht, was leider nicht funktioniert hat (falscher Befehl, falsche Stelle?).

Nachdem ich schon vergebens gesucht habe und keine Idee mehr habe wo oder wie ich es erreiche, dass die Hexadezimalzahlen schon beim Import als Text behandelt warden und so von Excel gar nicht erst umgewandelt werden, hoffe ich, dass mir hier jemand helfen kann.

Liebe Grüße

Content-Key: 314494

Url: https://administrator.de/contentid/314494

Printed on: April 23, 2024 at 21:04 o'clock

Mitglied: 129813
129813 Sep 06, 2016 at 08:54:42 (UTC)
Goto Top
falsche Stelle?
Yes. You should place it before the conversion.

Regards
Member: Bacchida
Bacchida Sep 06, 2016 at 09:20:33 (UTC)
Goto Top
Right now I can't check whether it is working that way because excel always crashes when I try. But I will give feedback as soon as I was able to test it. Thank you in advance for the fast answer!

Greetings
Member: Bacchida
Bacchida Sep 06, 2016 at 09:42:43 (UTC)
Goto Top
Okay, I changed the code to:
    wbTarget.Worksheets(1).Name = "Summary"  
    wbTarget.Worksheets(1).Range("A:ZZ").Clear  
    For Each f In fso.GetFolder(csvpfad).Files
        If LCase(fso.GetExtensionName(f.Name)) = "csv" Then  
            Workbooks.OpenText Filename:=f.Path
            Set wbSource = ActiveWorkbook
            On Error Resume Next
            Set ws = wbTarget.Worksheets.Add(After:=wbTarget.Sheets(wbTarget.Sheets.count))
            ws.Range("A:ZZ").Clear  
            ws.Cells.NumberFormat = "@"           
            str = Right(f.Path, 32)
            str = Left(str, 22)
            ws.Name = str
            wbSource.Worksheets(1).Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Semicolon:=True, TrailingMinusNumbers:=True  
            
            Call Evaluate
            Call chart
            wbSource.Worksheets(1).UsedRange.Copy Destination:=ws.Range("A1")  
            wbSource.Close False
        End If
    Next
I hope that was what you meant, but excel is still changing my hexadecimal instead of just accepting it as text.
Do you have any idea what else I could try?

Greetings
Mitglied: 129813
Solution 129813 Sep 06, 2016 updated at 09:45:58 (UTC)
Goto Top
Use a querytable instead of TextToColumns.
Member: Bacchida
Bacchida Sep 06, 2016 at 11:07:21 (UTC)
Goto Top
I'm sorry but I have absolutely no idea how to use querytables (I'm pretty new to vba and never heard of it) and I can't find any example which I understand. Could you please explain to me how I can use querytable or link me some examples?
Mitglied: 129813
129813 Sep 06, 2016 at 11:36:50 (UTC)
Goto Top
You can find multiple examples on the board, like this one:
Excel Makro um CSV Dateien auszuwerten und gesammelt anzuzeigen.
Member: Bacchida
Bacchida Sep 06, 2016 at 14:18:08 (UTC)
Goto Top
Thank you very much! After some trying I finally fixed it.

Greetings