Thema Datum  Von Nutzer Rating
Antwort
04.06.2008 06:32:58 Falk
NotSolved
Blau Aw:.csv Datei in Excel imoptieren
04.06.2008 23:08:21 jh
NotSolved
05.06.2008 06:17:59 Falk
NotSolved
08.02.2017 11:42:00 +
Solved

Ansicht des Beitrags:
Von:
jh
Datum:
04.06.2008 23:08:21
Views:
1200
Rating: Antwort:
  Ja
Thema:
Aw:.csv Datei in Excel imoptieren
Hallo,

ich habe mal mit deinem Code eine Testdatei mit 1000 Zeilen
zu je 255 Werten (Zahlen mit 2 Nachkommastellen) geladen.
Abgesehen davon, dass in der zweiten Sub die Variable
tabellenname nicht bekannt ist und ihre Verwendung als
Dateinummer deshalb einen Fehler verursacht, hat das 66
Sekunden gedauert. Das Problem mit den als Text gespeicherten
Zahlen kann ich nicht nachvollziehen, die entsprechende
Fehleroption habe ich aktiviert (Excel 2003).

Mit dem folgenden Code dauert das Einlesen derselben CSV-Datei
0,9 Sekunden, ist also ca. 75mal schneller:

Option Explicit
Public Sub LiesCSV()
Dim strPrompt As String ' InputBox
Dim strTitel As String ' dto.
Dim intType As Integer ' dto.
Dim vntDateiName As Variant
Dim vntBlattName As Variant
Dim wksNeu As Worksheet
Dim intFNr As Integer ' Dateinummer
Dim lngZeile As Long
Dim strInput As String
strPrompt = "Für welche Temperatur (30°C, 60°C, 90°C" _
& vbCrLf & "oder 120°C) wollen Sie Daten einfügen?"
strTitel = "Temperatur"
intType = 1 ' nur Zahlen
Do
vntBlattName = Application.InputBox(Prompt:=strPrompt, _
Title:=strTitel, Type:=intType)
Select Case CInt(vntBlattName)
Case 0, 30, 60, 90, 120 ' 0 = Abbrechen (False)
Exit Do
Case Else
Beep
strPrompt = strPrompt & vbCrLf & vbCrLf & _
"Bitte nur 30, 60, 90 oder 120 eingeben!"
End Select
Loop
If vntBlattName = False Then
Exit Sub
Else
vntDateiName = Application.GetOpenFilename( _
FileFilter:="Textdateien (*.csv), *.csv")
If vntDateiName = False Then
Exit Sub
Else
Set wksNeu = Worksheets.Add
wksNeu.Name = CStr(vntBlattName) & "°C"
intFNr = FreeFile
lngZeile = 0
Open CStr(vntDateiName) For Input As #intFNr
Do
lngZeile = lngZeile + 1
Line Input #intFNr, strInput
wksNeu.Cells(lngZeile, 2).Value = strInput
Loop Until EOF(intFNr)
wksNeu.UsedRange.TextToColumns Destination:=wksNeu. _
Range("B1"), DataType:=xlDelimited, Semicolon:=True
End If
End If
End Sub


Weil in deinem Code ab Spalte 2 eingelesen wird, habe ich
das so gelassen. Wenn deine Datei in manchen Spalten z. B.
Text oder Datum enthält, musst du bei TextToColumns eventuell
noch den Parameter FieldInfo ergänzen, wenn es nur Zahlen sind,
kann er entfallen. Das Problem mit als Text gespeicherten
Zahlen trat hier ebenfalls nicht auf.

Gruß

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
04.06.2008 06:32:58 Falk
NotSolved
Blau Aw:.csv Datei in Excel imoptieren
04.06.2008 23:08:21 jh
NotSolved
05.06.2008 06:17:59 Falk
NotSolved
08.02.2017 11:42:00 +
Solved