Thema Datum  Von Nutzer Rating
Antwort
Rot ASCII Datei über Auswahlfenster in das Excel laden
27.06.2017 10:42:44 Konstantin
NotSolved
27.06.2017 17:09:11 Ben
NotSolved

Ansicht des Beitrags:
Von:
Konstantin
Datum:
27.06.2017 10:42:44
Views:
1051
Rating: Antwort:
  Ja
Thema:
ASCII Datei über Auswahlfenster in das Excel laden

Hallo,

ich habe mir ein Auswertemakro geschrieben, mit dem ich gern eine beliebige Textdatei meiner Messreihe einlese und anschließend eine Auswertung laufen lassen.

Problematisch stellt sich dabei allerdings noch das Einlesen der txt.Datei dar. Diese besteht aus ein paar Textzeilen zu Beginn und anschließend aus vier Spalten. Über den Standard-Import im Excel (ohne VBA) ist das kein Problem, es werden automatisch die Spalten zugeordnet. Nun soll das ganze natürlich auch im VBA funktionieren. Dazu der erste Gedanke:

 

Dim Quelle As Object, Ziel As Object
Dim Datei As String

    With Application
    .ThousandsSeparator = "."
    .DecimalSeparator = ","
    .UseSystemSeparators = False
    End With


On Error GoTo Fehler

'Dialog "Datei öffnen" anzeigen
Datei = Application.GetOpenFilename("Text-Dateien(*.txt),*txt")

'Abbrechen falls keine Datei ausgewählt
If Datei = "Falsch" Then
  MsgBox "keine Datei ausgewählt", , "Abbruch"
  Exit Sub
End If

'MsgBox "Ausgewählte Datei: " & Datei, , ""

'Ausgewählte Datei öffnen
Workbooks.Open Filename:=Datei

Set Quelle = ActiveWorkbook.Worksheets(1)
Set Ziel = ThisWorkbook.Worksheets(1)

'kopieren und einfügen
Quelle.UsedRange.Copy Ziel.Cells(1, 1)

ActiveWorkbook.Close

'Speicher freigeben
Set Quelle = Nothing
Set Ziel = Nothing


'
Fehler:
Set Quelle = Nothing
Set Ziel = Nothing
'
    MsgBox "FehlerNr.: " & Err.Number & vbNewLine & vbNewLine _
    & "Beschreibung: " & Err.Description _
    , vbCritical, "Fehler"
'End Sub

 

Den Quellcode habe ich aus dem Netz. Funktioniert auch wirklich super, allerdings kann Excel irgendwann Punkte und Kommata als Tausendertrennzeichen nicht unterscheiden. Das bedeutet, dass Werte die kleiner als -1 bzw. größer als +1 falsch interpretiert werden, wie folgendes Bsp zeigt:

Wert original: 1,4256

Wert importiert: 1425,6

 

Das Problem konnte ich nicht lösen, und habe deswegen folgendes probiert:

Dim varDatei As Variant
Dim Dateiname, Datei As Variant
    varDatei = Application.GetOpenFilename()
        If varDatei = False Then
            MsgBox "Der Benutzer hat abgebrochen.", vbInformation
        Else
            Datei = vbCrLf + varDatei
            
         End If

Dateiname = InputBox("Bitte den Dateinamen eingeben.")
Cells(1, 1) = Datei
Cells(2, 1) = Dateiname
Cells(3, 1) = varDatei
'Cells(4, 1) = fDatei.Name


    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" + Datei _
        , Destination:=Range("$A$1"))
        .Name = "2017_06_20_08_03_47.txt"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False

    End With

 

Damit wollte ich quasi über das Auswahlfenster einer Variable den Pfad zuweisen und anschließend auf diese Variable in dem Import zugreifen. Leider wenig erfolgreich. Folgender Fehler tritt auf:

"Laufzeitfehler '1004':

Auf die Datei konnte nicht zugegriffen werden. Versuchen Sie die folgenden Lösungsvorschläge:" (danach kommt, ob der Ordner vorhanden oder schreibgeschützt ist, bzw. ob unzulässige Sonderzeichen verwendet wurden.

 

Wie bekomme ich meine ASCII-Daten über ein Dateiauswahlfenster in korrekter Weise in meine Makro-Arbeitsmappe?

 

Besten Dank bereits im Voraus für die Hilfe.

Gruß Konstantin


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
Rot ASCII Datei über Auswahlfenster in das Excel laden
27.06.2017 10:42:44 Konstantin
NotSolved
27.06.2017 17:09:11 Ben
NotSolved