Thema Datum  Von Nutzer Rating
Antwort
16.07.2007 22:03:58 Thomas
NotSolved
Blau Aw:Werte aus Textdatei auslesen
06.08.2007 10:12:57 Harry
NotSolved

Ansicht des Beitrags:
Von:
Harry
Datum:
06.08.2007 10:12:57
Views:
892
Rating: Antwort:
  Ja
Thema:
Aw:Werte aus Textdatei auslesen
Hallo,
Ich würde folgendes vorschlagen:
Den gesamten Word- Text in ein Tabellenblatt in Zelle A1 kopieren, dann wird in der Tabelle automatisch jede Zeile in eine Zelle kopiert.
Wenn garantiert ist, dass der Kommentar nie mit einem Minus oder einer Zahl als erstes Zeichen in der Zeile beginnt, brauchst Du nur in einer Schleife zu prüfen ob das erste Zeichen des Zelleninhaltes:

strErstesZeichen = Mid(Sheets(1).Cells(bytZeilenzähler, 1.Value, 1, 1)

ein Minus:

strErstesZeichen = “-“

oder eine Zahl:

isNumeric(strErstesZeichen)

ist.
Wenn das nicht der Fall ist löschst Du einfach die Zeile.
Sollte Diese Definition nicht möglich sein, hast Du nur noch die Variante, dass feststeht, wie viele Kommentar- Zeilen immer bestehen und löschst die entsprechende Anzahl Zeilen.
Sollte beides nicht möglich sein, wird es etwas kompliziert. Man müsste dann festlegen, welche Anzahl an Zeichen in der jeweiligen Zeile in welcher Anzahl von Kombinationen geprüft werden müssen, um eine ausreichend hohe Wahrscheinlichkeit zu erreichen, damit es nicht zu Verwechslungen zwischen Kommentar- und Datenzeilen kommt.
Da Excel die kopierten Zahlen in den Zellen in dieser Form „nur“ als Text erkennt würde ich als nächstes alle Zahlen über eine Schleife zur weiteren Verarbeitung in eine String- Variable verpacken:

bytZeilenzähler = 1
Do Until bytZeilenzähler = 9
strZahlensatz = strZahlensatz & “ “ & Sheets(1).Cells(bytZeilenzähler, 1)
Loop

Die kopierten Zeilen werden jetzt nicht mehr gebraucht und die gesamte Spalte A kann jetzt gelöscht werden.
Als nächster Schritt müssen die einzelnen Zahlen in einer Schleife aus der String- Variable extrahiert, in eine Double- Variable übernommen und dann in die entsprechende Zelle eingetragen werden. Dabei wird dann Zeichen für Zeichen ausgelesen und einfach auf das Leerzeichen geprüft:

bytZeilenzähler = 1
bytSpaltenzähler = 1
bytZeichenZähler = 1
Do Until bytZeichenZähler = 67
If bytZeichenzähler > 33 Then
bytSpaltenzähler = 2
End If
strZeichen = Mid(strZahlensatz, bytZeichenzähler, 1)
If strZeichen = " " Then
dblZahl = Cdbl(strZahl)
Sheets(1).Cells(bytZeilenzähler, bytSpaltenzähler).Value = dblZahl
strZahl = ""
bytZeilenzähler = bytZeilenzähler + 1
bytZeichenzähler = bytZeichenzähler + 1
else
strZahl = strZahl & strZeichen
bytZeichenzähler = bytZeichenzähler + 1
End If
Loop

Und das war’s "schon".
Ich gehe natürlich davon aus, dass alle verwendeten Variablen deklariert wurden.
Für die Richtigkeit der Code- Schnipsel übernehme ich keine gewähr, da ich sie nicht einzeln prüfen konnte. Es sollten sich aber maximal kleine Flüchtigkeitsfehler eingeschlichen haben.

Den Datei- Öffnen- Dialog kann man natürlich auch über VBA aufrufen:

Dim wbkName As Variant
Dim wbkNameKurz As Variant
Dim bExists As Boolean

ChDir "\"
ChDrive "c:\"
ChDrive "c:\Eigene Dateien\"
wbkName = Application.GetOpenFilename _
("Micrsoft Excel-Dateien (*.xls),*.xls")
If wbkName = False Then Exit Sub
wbkNameKurz = Dir(wbkName)

In der Variable wbkName wird der volle Dateiname mit Pfad erfasst und in wbkNameKurz der Dateiname mit Erweiterung.
... und öffnen:

bExists = False
With Application
For Each oWorkbook In .Workbooks
If UCase$(oWorkbook.Name) = wbkName Then
bExists = True
Exit Sub
Exit For
End If
Next
End With
' Mappe neu laden!
If Not bExists Then
On Error Resume Next
Workbooks.Open Filename:=wbkName, ReadOnly:=False
End If

Wenn Du dann Kopieren willst, nicht vergessen das Tabellenblatt wieder zu aktivieren, sonst gibt es Fehler.

Ich hoffe, dass hilft Dir weiter;

Grüße von Harry

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
16.07.2007 22:03:58 Thomas
NotSolved
Blau Aw:Werte aus Textdatei auslesen
06.08.2007 10:12:57 Harry
NotSolved