Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

dif-Datei mit Zahlen öffnen

dif-Datei mit Zahlen öffnen
25.11.2008 10:11:00
Susanne
Hallo,
ich versuche eine dif-Datei mittels VBA-Makro zu öffnen .Wenn ich die Datei manuell öffne ist alles ok.
Benutze ich abe den Befehl "Workbooks.Open Filename:=Verzeichnissave & "\" & Dateinamedia"
werde die Zahlen nicht richtig übernommen.
Statt Komma gibt es Punkte, oder aber gar keine Trennzeichen.
Aus 2,35464 wird 235664 und 0,345 wird dann hin und wieder richtig als 0,345 erkannt.
Ich kann da jedenfalls leider kein System
entecken warum der Imort der Zahlen schief geht.
Im Forum gibt es einen Beitrag , wo mir geraten wirt , die Datei
Zeilenweise über Datei open auszulesen.
Das ist mir aber zu umständlich, denn die Einträge stehen in der Dif-Datei alle untereinander.
Und meine Dif-Dateien haben unterschiedlich viele Spalten, die auch unterschiedlich lang sind,
je nach Messdauer, die in der Datei abgelegt ist.
Gibt es kein Möglichkeit die Zahlen aus der Dif Datei korrekt einzulesen,
ohne jede Zahl einzelt anzupacken und eine eigene Open-Rotiene zu Schreiben?
Ich wäre für etwas Hilfe sehr Dankbar
MFG
Susanne

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dif-Datei mit Zahlen öffnen
25.11.2008 13:39:16
fcs
Hallo Susanne,
scheinbar gibt es bei DIF-Dateien unter VBA ähnliche Probleme wie mit CSV-Dateien, bei denen die Konversion unter VBA auch Kopfzerbrechen bereiten kann.
Probiere mal die DIF-Dateien mit dem folgenden Makro zu öffnen, dass von der DIF-Datei eine temporäre Kopie mit Endung TXT erstellt und diese Öffnet.
Die Parameter für Trennzeichen etc. muss du ggf. an das DIF-Format anpassen.
Gruß
Franz

Sub DIF_Oeffnen()
Dim varAuswahl, strDateiTXT As String, wbTXT As Workbook
varAuswahl = Application.GetOpenFilename(Filefilter:="DIF(*.dif),*dif")
If Not varAuswahl = False Then
strDateiTXT = Left(varAuswahl, Len(varAuswahl) - 3) & "txt"
'DIF-Datei kopieren als TXT
VBA.FileCopy varAuswahl, strDateiTXT
Workbooks.OpenText Filename:=strDateiTXT, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, _
DecimalSeparator:=",", ThousandsSeparator:="."
Set wbTXT = ActiveWorkbook
'Tabellenblatt in leere Arbeitsmappe kopieren
wbTXT.Worksheets(1).Copy
'Textdatei schliessen und wieder löschen
wbTXT.Close savechanges:=False
VBA.Kill strDateiTXT
Set wbTXT = ActiveWorkbook
End If
End Sub


Anzeige
AW: dif-Datei mit Zahlen öffnen
27.11.2008 09:01:00
Susanne
Hallo,
Das Makro funktioniert.
Danke. Ich bekomme jetzt die Zahlen in Excel eingelesen ,allerdings als String.
Nach CDbl(c.Value) bekomme ich die Kommazahlen angezeigt, aber leider,
nicht dargestellt.
Wenn ich jetzt eine XY-Diagramm erstelle , funktioniert das zwar manuell gut, aber
per aufgezeichnetem Makro wieder mal nicht.
Die Zahlen werden ohne Trennzeichen als 9Stellige Ziffern in die Grafik eingetragen.
Hat Jemand vielleicht noch eine Idee?
Danke im Vorraus.
Susanne
AW: dif-Datei mit Zahlen öffnen
27.11.2008 10:09:00
fcs
Hallo Susanne,
versuche es mit folgender Anpassung. Diese konvertiert zusätzlich alle als Datum oder Zahlen vorhandenen Text in Zellen in entsprechende Excel Zahlen- bzw. datumswerte.
Gruß
Franz

Sub DIF_Oeffnen()
Dim varAuswahl, strDateiTXT As String, wbTXT As Workbook, Zelle As Range
varAuswahl = Application.GetOpenFilename(Filefilter:="DIF(*.dif),*dif")
If Not varAuswahl = False Then
strDateiTXT = Left(varAuswahl, Len(varAuswahl) - 3) & "txt"
'DIF-Datei kopieren als TXT
VBA.FileCopy varAuswahl, strDateiTXT
Workbooks.OpenText Filename:=strDateiTXT, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, _
DecimalSeparator:=",", ThousandsSeparator:="."
Set wbTXT = ActiveWorkbook
'Tabellenblatt in leere Arbeitsmappe kopieren
wbTXT.Worksheets(1).Copy
'Textdatei schliessen und wieder löschen
wbTXT.Close savechanges:=False
VBA.Kill strDateiTXT
Set wbTXT = ActiveWorkbook
With wbTXT.Worksheets(1)
.UsedRange.EntireColumn.NumberFormat = "General"
For Each Zelle In .UsedRange
If IsNumeric(Zelle) Then
If IsDate(Zelle) Then
Zelle.Value = CDate(Zelle)
Else
Zelle.Value = CDbl(Zelle)
End If
End If
Next
End With
End If
End Sub


Anzeige

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige