VB für Excel - Einlesen ASCII-Datei

Dieses Thema VB für Excel - Einlesen ASCII-Datei im Forum "Webentwicklung, Hosting & Programmierung" wurde erstellt von MasterQ, 10. März 2009.

Thema: VB für Excel - Einlesen ASCII-Datei Hallo, da ich so gut wie keine Ahnung von VB in Excel und Konsorten habe, möchte ich hier mal nachfragen, ob einer...

  1. Hallo,

    da ich so gut wie keine Ahnung von VB in Excel und Konsorten habe, möchte ich hier mal nachfragen, ob einer eine Lösung für mein Problem hat oder zumindest mich in die richtige Richtung stupsen kann.

    Ich habe immer wieder die Aufgabe in Excel bestimmte ASCII-Dateien einzuladen. Diese sind wie folgt aufgebaut:

    1. Zeile Header
    2. bis letzte Zeile zwei Spalten (X- und Y-Werte)

    folgendes müsste das Script leisten:

    *) FileDialogBox zur Auswahl der Datei(en)
    *) Die Anzahl der Zeilen ist Variabel.
    *) Der ursprüngliche Header (1. Zeile, ein Wort) müsste durch den Filenamen inkl. Pfad ersetzt werden.
    *) Dezimalpunkt (Period) in Dezimalkomma umwandeln

    Optional:

    *) Auswahl, ob erste und zweite Spalte in einer Excel-Spalte landen soll oder nur die zweite (Y).
    *) Gleichzeitiges Einlesen mehrerer Dateien in ein Sheet

    Gibt es so was irgendwo?

    Mir wäre mit einer rudimentären Struktur schon geholfen, die ich dann mit meinen spärlichen Kenntnissen erweitern kann. Nur bei Null anfangen kann ich nicht. Da kenn ich mich zu wenig aus.

    Wäre froh, mir könnte hier einer helfen

    Gruß

    MQ
     
  2. f1
    f1
    Mit dem Makrorecorder sollte sich auch ohne Kenntnisse in kurzer Zeit ein halbwegs funktionierendes (wenn auch unsauberes) Makro zurecht frickeln lassen.

     
  3. Hallo,

    mit dem Makrorekorder kann man schon einiges erschlagen. Ich denke, dass ich mich so langsam voranhangeln kann.

    *) Hat jemand einen Tipp für ein brauchbares Online-Tutorial für VB bzw VB-Script?
    *) Ich hätte gerne einen eigenen Menüpunkt in der Leiste oben, von dem ich das Makro aufrufen kann. Mit dem Makrorecorder werden die Scripts dem aktuellen Worksheet zugeordnet. Wie krieg ich die da raus und in die Menüleiste?

    Mir steht Visual Studio 2008 zur Verfügung. In wie weit könnte mir das weiterhelfen bzw. wie und wo gibt es da Überschneidungen zum VB-Editor, der mit Excel 2003 mitkommt?

    Ich habe hier ein Script von einem Dritten, das ähnliches leistet wie das was ich vor habe. Leider wird ein anderes Format gelesen und das Script ist Passwortgeschützt. Es gibt ein kleines Setup.exe, was dieses Script in die Menüleiste katapuliert. Genau sowas hätte ich für mein Script gerne auch.


    Gruß

    MQ
     
  4. f1
    f1
    Schau mal in Excel unter ->Extras->Anpassen->Befehle-Makros. Ich glaube da ist eine benutzerdef. Schaltfläche, der Du ein Makro zuweisen kannst. Wenn Du die Datei auf einem anderen Rechner öffnest, gibt es den Button nicht.

    Wenn Du die Buttons gerne mit der Datei weitergebn möchtest hast Du hier 2 Links:
    http://www.office-loesung.de/ftopic117656_0_0_asc.php
    http://www.schmittis-page.de/index.html?/excel/menue/t11.htm

    Füge ein Modul in Dein Projekt ein. Da den Code rein.
     
  5. Ich bin nun soweit, dass ich eine vorliegende Datei korrekt einlesen kann.

    Aufgrund des Befehls opentext wird eine neue Arbeitsmappe geöffnet, was ich eigentlich nicht will. Eigentlich möchte ich, dass die eingelesenen Daten in dem Sheet landen, in dem das Makro aufgerufen wird.

    Meine Lösung bisher war, zu versuchen, die Daten in der neuen Datei herauszukopieren und die jetzt neu geöffnete Datei zu löschen.

    Mir gelingt es allerdings nicht, die Daten in das Zielblatt zu kopieren. Die Spalte A der Quelle wird korrekt in die Zwischenablage kopiert. Das kann ich prüfen. Doch die Auswahl einer Spalte im Zielblatt scheitert mit Fehlermeldung 1004. Zur Not muss ich Zelle für Zelle kopieren, doch das ist zu umständlich. Ich verstehe im Moment nicht, warum ich mit select einen Fehler produziere.

    Ich kann im Zielsheet nix selektieren!


    Code:
    Option Explicit
    
    Sub Testmodul1()
    '
    ' 090310 
    '
    
    Dim f As Variant
    Dim fn() As Variant
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim wbZiel As Workbook
    Dim wsZiel As Worksheet
    Dim wcZiel As Range
    
    Set wbZiel = ThisWorkbook
    Set wsZiel = wbZiel.ActiveSheet
    
    FormCasImport.Show
    
    If FormCasImport.CheckMulti.Value = True Then
     fn = Application.GetOpenFilename(MultiSelect:=True)
    Else
     f = Application.GetOpenFilename(MultiSelect:=False)
     ReDim fn(0)
     fn(0) = f
    End If
     
    For Each f In fn
    
    Workbooks.OpenText f, _
              Origin:=xlWindows, _
              StartRow:=1, _
              DataType:=xlDelimited, _
              TextQualifier:=xlDoubleQuote, _
              ConsecutiveDelimiter:=False, _
              Tab:=True, _
              Semicolon:=False, _
              Comma:=False, _
              Space:=False, _
              Other:=False, _
              FieldInfo:=Array(Array(1, xlGeneralFormat), Array(2, xlGeneralFormat)), _
              DecimalSeparator:=., _
              ThousandsSeparator:= 
              
    Next
    
    Set wb = Workbooks(Workbooks.Count)
    Set ws = wb.ActiveSheet
    ws.Range(a1).Activate
    ActiveCell.Value = 
    ws.Range(B1).Activate
    ActiveCell.Value = wb.FullName
    
    ws.Columns(1).Select
    ws.Columns(1).Copy
    wsZiel.Columns(1).Select
    ws.Paste
    
    End Sub
    
    
    Warum klappt das nicht?


    MQ
     
Die Seite wird geladen...

VB für Excel - Einlesen ASCII-Datei - Ähnliche Themen

Forum Datum
Kann Excel Adressen automatisch erkennen und in die dafür vorgesehenen Spalten einfügen? Software: Empfehlungen, Gesuche & Problemlösungen 1. Feb. 2016
Excel '10 - Frage zu Option "AutoVervollständigen für Zellwerte!" Microsoft Office Suite 16. Juli 2012
Excel-Tabelle für OpenOffice Calc anpassen Windows XP Forum 30. Apr. 2012
Struktur-Fülleffekte auch für Excel möglich? Microsoft Office Suite 6. Nov. 2010
Re: Excel - Hilfe bei Datenstruktur für spätere UserForm Windows XP Forum 6. Aug. 2010