Office: Beim öffnen der Datei werden Kommas verschluckt...

Helfe beim Thema Beim öffnen der Datei werden Kommas verschluckt... in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen! Ich hoffe, daß mir hier jemand helfen kann, denn ich bin am verzweifeln! Suche schon zwei Tage nach der Lösung meines Problems. Ich... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von Franky, 27. April 2006.

  1. Franky User

    Beim öffnen der Datei werden Kommas verschluckt...


    Hallo zusammen!
    Ich hoffe, daß mir hier jemand helfen kann, denn ich bin am verzweifeln! Suche schon zwei Tage nach der Lösung meines Problems. Ich nutze Excel 97 und schreibe mit VBA ein Programm, welches Daten von Messmaschinen einliest und automatisch auswertet. Das Problem hier scheint aber nicht auf meinem Code zu beruhen, da es schon bei normaler Excel Nutzung auftritt.

    Zum Testen reicht es wenn ich im Editor eine .dat Datei erstelle in der ein paar durch tab voneinander getrennte Kommazahlen stehen.

    Nun das Problem:

    Wenn ich eine solche Datei aus dem Explorer mit ´öffnen mit´(Excel) öffne ,dann werden Ziffernfolgen mit mehr als zwei Nachkommastellen in ganze Zahlen umgewandelt. Beispiel: aus 45,3566892 wird 453.566.892 sind aber nur zwei nachkommastellen in der Ausgangsdatei bleibt die Zahl gleich 4,25 bleibt 4,25 :?:

    Habe ich aber Excel offen und lade die Datei aus excel herraus mit ´datei öffnen´ klappt alles wunderbar.

    Ich bin wirklich mit meinem Latein am Ende (..ist aber auch nur ein sehr kleines Latinum ;-)) Beim öffnen der Datei werden Kommas verschluckt... :oops:

    In der Hoffnung, daß mir möglichst schnell einer von Euch helfen kann, stelle ich jetzt erst mal das Haare ausrupfen ein und warte gespannt auf gute Ideen...

    Mit freundlichem Gruß, Frank
     
    Franky, 27. April 2006
    #1
  2. freaky
    freaky Erfahrener User
    Hi,

    also bei mir wird das alles so übertragen, wie es in der dat-Datei steht. Bis auf einen kleinen Absturz funktionierte das..

    Musst Du die denn überhaupt mit Excel öffnen? Wenn Du mit VBA was machen willst kannst du die Datei ja auch anders öffnen und auslesen (darum wird es doch wohl gehen...)?

    Du könntest mal nachsehen, wie die Einstellung bei Extras Optionen auf dem Registerblatt "International" bei "Behandlung von Zahlen" ist - Trennzahlen vom Betriebssystem übernehmen oder vielleicht etwas anderes?

    Wenn "vom Betriebssystem übernehmen" ausgewählt ist dann schau mal in der Systemsteuerung unter der Ländereinstellung, wie die Einstellungen für Zahlen ist...Dort ggf. die anzahl der Dezimalstellen erhöhen...
     
    freaky, 27. April 2006
    #2
  3. Franky User
    s.u.
     
    Franky, 27. April 2006
    #3
  4. Franky User

    Beim öffnen der Datei werden Kommas verschluckt...

    Tatsächlich öffne ich die Datei auch über VBA, doch da taucht das Problem auch auf und zwar noch viel kurioser aaalso:

    Ich habe eine Symbolleiste mit einem icon, das eine Sub startet, welche dann eine Userform zeigt. Auf dieser Userform UFStart ist ein Button der die DateiLaden Sub startet.

    Jetzt das interessante:
    Wenn ich die Userform im VB Editor mit f5 starte und dann über den Button und die DateiLaden Sub die Datei öffne werden die Zahlen richtig übernommen.

    Wenn ich die Userform aber über das Icon in der Symbolleiste starte und lade, werden die Zahlen falsch übernommen.

    Ich weiß wirklich nicht mehr weiter.... Hast Du das bei Dir auch mit Excel 97 probiert?

    Gruß, Frank

    Codes:

    Symbolleiste:
    Code:
    Sub SympolleisteErstellen()
        Dim AvMLeiste As CommandBar
        Dim ControlButton As CommandBarControl
        Set AvMLeiste = Nothing
        Set AvMLeiste = CommandBars.Add("AvM1", msoBarTop, , True)
        With AvMLeiste
            '.Top = 200
            .Left = 0
            .Visible = True
        End With
        Set ControlButton = AvMLeiste.Controls.Add(Type:=msoControlButton)
        With ControlButton
            .FaceId = 59
            .TooltipText = "Auswertung starten"
            .OnAction = "Start.start"
            .BeginGroup = False
        End With
        Set ControlButton = AvMLeiste.Controls.Add(Type:=msoControlButton)
        With ControlButton
            .FaceId = 67
            .TooltipText = "Alle Mappen ausser AvM schließen"
            .OnAction = "tools.arbeitsmappenschließen"
            .BeginGroup = False
        End With
    End Sub
     
    Sub Start.start:
    Code:
    Sub Start()
        UFStart.Show
    End Sub
     
    Der Datei Laden Button der UFStart:

    Code:
    Private Sub CommandButton1_Click()
        'Datei Öffnen
        UFStart.Hide
        MDateiOeffnen.DateiOeffnen (ActiveWorkbook.name)
        UFStart.Show
    End Sub
    
    Methode zum Datei öffnen:
    Code:
    Sub DateiOeffnen(zielmappe As String)
        Dim datei As Variant
        datei = Application.GetOpenFilename("Rohdaten *.dat;*tra,*.dat;*.tra,Alle Dateien *.*,*.*,Exceldateiein *.xls,*.xls")
        'On Error GoTo fehler:
        If datei = False Then
            Application.ScreenUpdating = True
            MsgBox ("Keine Datei ausgewählt!")
            Application.DisplayAlerts = False
            ActiveWorkbook.Close
            Application.DisplayAlerts = True
            Exit Sub
        End If
        Workbooks.OpenText Filename:=datei
        ActiveSheet.UsedRange.Select
        Selection.Copy
        quellmappe = ActiveWorkbook.name
        UFStart.TextBoxDateiname.Text = quellmappe 'Einfügen des Dateinamens in die Userform
        Windows(zielmappe).Activate
        Sheets("Rohdaten").Activate
        Cells(1.1).Activate
        ActiveSheet.Paste
        Application.DisplayAlerts = False
        Workbooks(quellmappe).Close
        Windows(zielmappe).Activate
        Application.DisplayAlerts = True
    Exit Sub
    fehler:
            UFStart.Show
    End Sub
     
     
    Franky, 27. April 2006
    #4
  5. freaky
    freaky Erfahrener User
    Hi,

    das nützt so natürlich nichts, da Du ja auch über VBA die Datei öffnest...das brauchst Du aber nicht, wenn Du einfach nur die Werte auslesen willst.

    Schau Dir mal dieses Beispiel an. Du musst auf die Deklaration des Array achten.

    Meine Testdatei besteht nur aus einer Zeile mit 4 Werten. Das ist aber egal. Du müsstest zum testen nur mal den Dateinamen und Pfad ändern. Und dann schau dir mal an, was in den Variablen "a,b,c,d" steht....

    Code:
    Public strArray()
    
    Sub Datei_oeffnen()
    Dim Datei
    Dim Zeile
    Dim a, b, c, d
    
    Datei = "c:\temp4\test.dat"
    
    Open Datei For Input As 1
    While Not EOF(1)
        x = x + 1
        Line Input #1, Zeile
        Call SplitA(Zeile, vbTab)
    Wend
    Close 1
    d = strArray(0)
    a = strArray(1)
    b = strArray(2)
    c = strArray(3)
    
    End Sub
    
    
    Function SplitA(strExpression As Variant, _
    Optional ByVal strZeichen As Variant = " ")
    
    'Splitfunktion selbst erstellt
    'gleiche Funktionalität wie die Split-Funktion ab Word 2000
    'eingeschränkt durch untergeodnete Zeichenfolgen (Limit)
    'und eingeschränkt durch die Angabe des Vergleichs (Compare)
    
    Dim Zahl        As Long
    Dim i           As Long
    Dim strErg      As Variant
    Dim strVar      As Variant
    
        Zahl = 0
        
        On Error Resume Next
        
        If InStr(1, strExpression, strZeichen) <> 0 Then
            For i = 0 To (Len(strExpression))
                strVar = Left(strExpression, Len(strExpression) - (Len(strExpression) - 1))
                If strVar <> strZeichen Then
                    strExpression = (Right(strExpression, Len(strExpression) - 1))
                    strErg = strErg & strVar
                Else
                    ReDim Preserve strArray(Zahl)
                    If IsEmpty(strErg) Then strErg = ""
                    strArray(Zahl) = strErg
                    Zahl = Zahl + 1
                    strErg = ""
                    strExpression = Right(strExpression, Len(strExpression) - 1)
                End If
            Next i
            
            ReDim Preserve strArray(Zahl)
            strArray(Zahl) = strErg
            
        End If
        
    
    
    End Function
    Die Split-Funktion steht leider in Office 97 nicht zur Verfügung, daher habe ich mal eine selbstgestrickte programmiert. Das Trennzeichen in der Zeile ist "vbTab" was praktisch die Tabtaste bedeutet. Bei einem anderen Trennzeichen musst Du einen anderen Wert angeben.

    Du kannst dann mit dem gefüllten Array machen was Du willst.

    Sieht vielleicht erstmal kompliziert aus - ist aber recht einfach....
     
    freaky, 27. April 2006
    #5
  6. Franky User
    ...klappt auch nicht...

    ...habe jetzt drei Stunden drangesessen - deinen Code verstanden und umgesetzt (bzw) eingefügt. Habe das Array immer die Zeile in der Tabelle auffüllen lassen und dann die nächste Zeile ausgelesen. Doch leider hilft mir das nicht weiter. Warum auch immer sind einige Zeileninhalte verloren gegangen und das Problem von vorher besteht immernoch. Gibts denn keine andere Möglichkeit bei der ich auch an meiner bisherigen Vorgehensweise festhalten kann? Denn an den Modulen zur Auswertung habe ich über einen Monat geschrieben und die sind auf das gegebene Ausgangsformat zugeschnitten....

    Das Problem muß doch bekannt sein... Oder liegt es vielleicht doch an den *.dat dateien?

    Das klappt nämlich an keinem der PC´s hier....

    Gruß, Franky
     
    Franky, 3. Mai 2006
    #6
  7. freaky
    freaky Erfahrener User
    Hi,

    was stand denn in den einzelnen Werten des Array? Es ging mir erstmal nur um die Formate selbst. In den Variablen sollte der Wert richtig dargestellt sein. Da wird nichts automatisch umgewandelt...

    Das ist vielleicht erstmal mühsam - Du müsstest als Beispiel mal einen Auszug aus Deiner dat-Datei benutzen - so 4 Zeilen. Und dann den Code Schritt für Schritt debuggen.

    Aber vieleicht könntest du mir mal eine dat-Datei zumailen. Dann kann ich es mir genauer ansehen (auch ggf. den Code mal anpassen...):

    freaky.forum@hoprah.de

    Datenschutz wird versichert!

    Hast Du Dir denn mal die Ländereinstellungen für Zahlen angeschaut? Dort kannst du auch etwas an den Formaten machen...

    Nicht aufgeben - das sollte doch zu lösen sein! ;-)
     
    freaky, 3. Mai 2006
    #7
  8. Franky User

    Beim öffnen der Datei werden Kommas verschluckt...

    Erst nochmal Danke, daß Du Dir die Zeit nimmst Dich meinem Problem zu widmen... Ich bin wirklich am Ende. Habe zwischendurch versucht an einem anderen Ende weiter zu programmieren, aber ohne das problemlose Einlesen der Dateien hab ich einfach keine Ruhe dafür.... Jetzt hab ich mal alles unwichtige rausgeworfen und hänge dir das Modul und eine mögliche abgespeckte Datei an. Diese Dateien sind sehr variabel. Manche sind mit Tab getrennt und manche - wie die angehängte mit ";". Auch ist der Aufbau höchst unterschiedlich. Mann kann also nicht bestimmte Felder mit bestimmten Formaten bestücken... Meist ist nämlich so eine Art Header (wie auch hier) vorhanden. Der kann aber zwischen einer und über 20 Zeilen lang sein oder auch garnicht vorhanden sein. Auch die Spaltenzahlen sind sehr unterschiedlich, da auch daten von anderen Maschinen eingelesen werden können müssen.

    So nun aber nochmal zum Beispiel:

    In dem Modul ist auch eine Symbolleistenmethode drin. Wenn ich mit excel97 über die Symbolleiste die Start Methode starte dann werden die Kommazahlen in der dritten Spalte zu riesen Zahlen mit Tausendertrennzeichen. Wenn ich die Start Methode aber mit F5 starte, dann klappts. Ich verstehe einfach nicht wo der Unterschied liegt.

    In die Ländereinstellungen habe ich auch schon reingeschaut aber keine Fehler gefunden... Wenn da was mit der Kommastellung falsch ist, dann müssten ja auch die kurzen Kommazahlen falsch übertragen werden...

    Hoffe, Du hast da noch eine zündende Idee...

    Mit Deinem Code hat es ja funktioniert (das da Teile gefehlt haben hätte man bestimmt auch noch hinbekommen) aber auch hier: wenn ich das über die Symbolleiste gestartet habe war der Fehler wieder da...

    Ich weiß einfach nicht weiter...

    Gruß, Frank

    Code:
    Sub SympolleisteErstellen()
        Dim AvMLeiste As CommandBar
        Dim ControlButton As CommandBarControl
        On Error GoTo Weiter:
            If CommandBars("AvM1").Enabled = False Then
                CommandBars("AvM1").Enabled = True
                Exit Sub
            Else: Exit Sub
            End If
       
    Weiter:
        Set AvMLeiste = Nothing
        Set AvMLeiste = CommandBars.Add("AvM2", msoBarTop, , True)
        With AvMLeiste
            .Left = 0
            .Visible = True
        End With
        Set ControlButton = AvMLeiste.Controls.Add(Type:=msoControlButton)
        With ControlButton
            .FaceId = 59
            .OnAction = "start"
        End With
        
    End Sub
    Code:
    Sub start()
        Workbooks.Add
        Dim Datei As Variant
        Datei = Application.GetOpenFilename("Alle Dateien *.*,*.*,Rohdaten *.dat;*tra,*.dat;*.tra,Exceldateiein *.xls,*.xls")
        'On Error GoTo fehler:
        If Datei = False Then
            Application.ScreenUpdating = True
            MsgBox ("Keine Datei ausgewählt!")
            Application.DisplayAlerts = False
            ActiveWorkbook.Close
            Application.DisplayAlerts = True
            Exit Sub
        End If
        Workbooks.OpenText FileName:=Datei, Origin:=xlWindows, _
            StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
            ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=True, Comma:=False, _
            Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1))
    End Sub
    
     
    Franky, 3. Mai 2006
    #8
  9. freaky
    freaky Erfahrener User
    Hi Frank,

    die Dateien sind angekommen...

    Ich schau es mir heute abend an - war nachmittags unterwegs....
     
    freaky, 3. Mai 2006
    #9
  10. Franky User
    Tausend Dank

    Vielen Dank für Deine Hilfe Freaky! Das Problem ist gelöst!!

    Woran es jetzt wirklich gelegen hat weiß ich immernoch nicht - aber mit folgendem Code funktioniert es :

    Code:
    Sub dateiOeffnen()
        Dim Datei As String                                         ' Name der Importdatei
        Dim Z1 As String                                                 ' ausgelesenes Zeichen aus ImportFile
        Dim Wert As String                                             ' ausgelesener Zellinhalt aus ImportFile
        Dim DoubleWert As Double
        Dim i  As Integer, j As Integer                               ' i =Zeilenzähler j = Spaltenzähler
        On Error GoTo TestRohdatenERROR:
        cells.Select                                             ' alle Zellen selektieren
        Selection.ClearContents                            ' alles löschen
        Selection.NumberFormat = "General"            ' Standard formatieren
        'Selection.NumberFormat = "@"                   ' Text formatieren
        Range("A1").Select
        Datei = Application.GetOpenFilename("alle Dateien *.*,*.*,Rohdaten *.tra,Rohdaten *.tra,*.tra,*.tra,ExcelFiles *.xls,*.xls")
        i = 1
        j = 1
     Open Datei For Input As #1                    ' Datei zum Einlesen öffnen
            Do While Not EOF(1)                                   ' Schleife bis Dateiende
                Z1 = Input(1, #1)                                  ' File zeichenweise auslesen
                NZ = True
                Select Case Asc(Z1)
                    Case 59, 9                                    ' Spalten-Trennzeichen 59 = Semikolon,9 = TAB
                        If IsNumeric(Wert) Then
                            cells(i, j) = CDbl(Wert)
                        Else
                            cells(i, j) = Wert    ' ermittelten Wert schreiben
                        End If
                        j = j + 1
                        Wert = ""
                    Case 10, 13                                     ' Zeilen-Trennzeichen = 0D0A
                        If Asc(Z1) = 13 Then
                            If IsNumeric(Wert) Then
                                cells(i, j) = CDbl(Wert) 'DoubleWert
                            Else
                                cells(i, j) = Wert    ' ermittelten Wert schreiben
                            End If
                            Wert = ""
                            i = i + 1                                 ' neue Zeile
                            j = 1                                     ' neue Spalte 1
                        End If
                    Case 34                                        ' Kommentar mit Gänsefüßchen
                    Case Else
                        Wert = Wert + Z1                       ' Zahlenwert zusammenbauen
                End Select
            Loop
            Close #1                                               ' Datei schließen
            If IsNumeric(Wert) Then                           ' den letzten ermittelten Wert schreiben
                cells(i, j) = CDbl(Wert)
            Else
                cells(i, j) = Wert
            End If
            Wert = ""
            Exit Sub
        End If
    TestRohdatenERROR:
        Select Case Err
            Case 53                                            ' FileName fehlt
                'X = MsgBox("Bitte eine Datei auswählen", vbExclamation, "FehlerNr " + Str(Err))
                Application.DisplayAlerts = False
                ActiveWorkbook.Close
                Application.DisplayAlerts = True
                Exit Sub
            Case Else
                MsgBox Err
        End Select
        
    End Sub
    
    
    Jetzt kann ich beruhigt ins Wochenende gehen... ;-)

    Nochmal Danke für die Hilfe!

    Gruß, Frank
     
    Franky, 12. Mai 2006
    #10
  11. freaky
    freaky Erfahrener User
    Hi,

    Danke für den Code....

    Ehrlich gesagt - ich hatte das völlig vergessen - sorry dafür. Hatte aber auch zu viel zu tun. Aber Gott sei Dank hast du es ja lösen können... ;-)
     
    freaky, 12. Mai 2006
    #11
Thema:

Beim öffnen der Datei werden Kommas verschluckt...

Die Seite wird geladen...
  1. Beim öffnen der Datei werden Kommas verschluckt... - Similar Threads - öffnen Datei Kommas

  2. Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA

    in Microsoft Excel Hilfe
    Datei in mehreren Ordnern suchen und wenn gefunden öffnen?! Macro / VBA: Hallo Leute, Hoffentlich könnt ihr mir hier helfen, ich krieg den Syntax einfach nicht hin (wahrscheinlich ist es auch totaler käse den ich programmiert habe). Also im Grunde soll eine Datei...
  3. Dateien bei Öffnen aus der Cloud schreibgeschützt

    in Microsoft Excel Hilfe
    Dateien bei Öffnen aus der Cloud schreibgeschützt: Hallo zusammen, eine weiteres Problem... Ich habe Office 365 auf dem MAC und nutze auch One Drive. Nun habe ich folgendes Problem: Ich Speicher eine Excel Datei in der Cloud (automatisches...
  4. Zugriff auf andere Excel Datei ohne aktives Öffnen

    in Microsoft Excel Hilfe
    Zugriff auf andere Excel Datei ohne aktives Öffnen: Liebe Community, ich habe mir eine Formel geschrieben um Werte aus einer anderen Excel Datei in meine Haupt Excel Datei einzufügen. Leider muss die Datei aus der ich die Daten haben will immer...
  5. Öffnen einer pptx Datei endet mit "unbekannter Fehler"

    in Microsoft Teams Hilfe
    Öffnen einer pptx Datei endet mit "unbekannter Fehler": Beim öffnen einer Datei in MS Teams erscheint ein leeres Fenster mit dem Dateinamen als Überschrift und im Fenster erscheint die Meldung "unbekannter Fehler". Die Dateien legen in der Standard...
  6. sharepoint - Dateien in Desktopapps öffnen

    in Sonstiges
    sharepoint - Dateien in Desktopapps öffnen: Huhu, scheinbar habe ich ein recht bekanntes Problem mit sharepoint und office-online. Allerdings konnte ich leider bisher keine funktionierende Lösung finden. Dateilinks sollen mit den lokalen...
  7. Öffnen einer bestimmten Seite einer pdf-Datei

    in Microsoft Access Hilfe
    Öffnen einer bestimmten Seite einer pdf-Datei: Hallo zusammen, ich möchte in einer Access365-Anwendung über die Taste F1 eine pdf-Datei (Benutzerhandbuch) öffnen und dort zu einer bestimmten Seite springen. Im Acrobat-Reader geht das auch...
  8. Powerpoint kann Datei nicht lesen

    in Microsoft PowerPoint Hilfe
    Powerpoint kann Datei nicht lesen: Ich verwende Office 19 und Windows 10, beide mit aktuellsten Updates. Mein Problem: Bei jedem Versuch, eine Powerpoint-Datei zu öffnen, erhalte ich die Info: Powerpoint kann Datei ncht lesen....
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden