Office: Geschlossene Excel Datei nach String durchsuchen

Helfe beim Thema Geschlossene Excel Datei nach String durchsuchen in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Ich komme wahrscheinlich erst heute am späteren Nachmittag oder morgen dazu es auszuprobieren aber ich gebe Bescheid sobald ichs versucht habe *Smilie Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von humic, 18. Juli 2017.

  1. Geschlossene Excel Datei nach String durchsuchen


    Ich komme wahrscheinlich erst heute am späteren Nachmittag oder morgen dazu es auszuprobieren aber ich gebe Bescheid sobald ichs versucht habe *Smilie
     
  2. Also habe es jetzt ausprobiert und es funktioniert auch mit der großen (2 GB) .txt Datei *Smilie
    bei großen Scannummern (um die 4000) dauert es halt um die 5 min bis es fertig ist, aber damit kann ich auf jedenfall leben *Smilie
    Theoretisch würde mich aber interessieren ob es möglich ist die Datei einfach von der anderen Seite her zu durchsuchen wenn die Scannummer größer ist als die als die Hälfte der größten Scannummer ist?
    Auf jeden Fall vielen Dank nochmal für die Hilfe und schöne Grüße nach Norddeutschland(? ^^) *Smilie
     
  3. Man kann in einer Textdatei nicht zu einer bestimmten Zeile springen, außer man hat sie vorher komplett in den Speicher eingelesen.
    Von daher bringt das nicht unbedingt etwas und könnte bei der Größe der Datei auch schief gehen.

    Man kann eine Textdatei auch nicht "vom Ende" her lesen.

    Man könnte die relevanten Daten allerdings in eine Datenbank oder neue kleinere Textdatei schreiben und dort dann schneller suchen.
    Das setzt ein einmaliges Durchlesen der kompletten Datei voraus, was dann wieder dauert.

    Wenn Du allerdings täglich oder häufiger eine "neue" Textdatei bekommst, ist fraglich, ob der Aufwand lohnt.

    PS Hier ist Code, eine Textdatei in einem Rutsch in einen String zu lesen.
    Das dürfte aber schief gehen, da Deine Datei einfach zu groß ist. Und für Excel brauchst Du ja auch no etwas Hauptspeicher ;-)
     
    Storax, 24. Juli 2017
    #33
  4. Geschlossene Excel Datei nach String durchsuchen

    Hallo,
    doch, das geht

    Der Gesamtbeitrag (siehe Link) enthält diverse andere Ansätze.

    Grüße
    EarlFred
     
    EarlFred, 24. Juli 2017
    #34
  5. Kannst Du den Code zeigen, wie man zeilenweise vom Ende her die Datei liest?
     
    Storax, 24. Juli 2017
    #35
  6. Wozu zeilenweise? Die Idee des Vorgehens ist doch im Text skizziert.
    Ich würde auch von vorne nicht zeilenweise lesen, sondern nachträglich teilen.
     
    EarlFred, 24. Juli 2017
    #36
  7. Dann zeig den Code, wie Du das Problem des OP löst.

    Update: Gerne kannst Du das hier umsetzen.
    Ansonsten sehe ich in dem Thread keine Ansätze, die das Problem des OP lösen könnten.
     
    Storax, 24. Juli 2017
    #37
  8. Geschlossene Excel Datei nach String durchsuchen

    Scheißtag gehabt?
     
    EarlFred, 24. Juli 2017
    #38
  9. Montag eben *grins

    Aber wenn Du nicht liefern willst ...
     
    Storax, 24. Juli 2017
    #39
  10. Bin doch kein Lieferjunge *wink.gif*

    Die Nachfrage des TE, wie man eine Textdatei "von hinten lesen" könnte, ist ja beantwortet. Mehr ist da auch nicht zu liefern.
     
    EarlFred, 24. Juli 2017
    #40
  11. Sehe ich nicht so, man kann nicht in gleicher Weise von "hinten" zeilenweise lesen wie von "vorne", aber wie dem auch sei ...

    Viel interessanter wäre, wie man mein Vorgehen performanter gestalten könnte, denn aus einer 2GB großen Textdatei sollen bestimmte Zeilen gelesen werden.
    Und bei meinem Ansatz geht die Performance runter, je größer die Anzahl der Zeilen ist, die ich überlese/skippe. Und da ich zeilenweise lese/skippe, ist das eben nicht schnell.

    Ich kann mir auch nicht vorstellen, dass es wesentlich schneller wird, wenn ich die Datei in größeren Happen einlese, wie hier z.B.

    Da wären Ideen gefragt ...
     
    Storax, 24. Juli 2017
    #41
  12. Hallo,

    ein Code ohne zeilenweises Lesen. Der setzt voraus, wie in meinem verlinkten Beitrag beschrieben, dass man die Datensatzlänge abschätzen kann, d. h., dass sie in etwa ähnliche Länge aufweisen. Verschätzt man sich dabei, wird der Fehler zum Ende hin immer größer.

    In der zur Verfügung gestellten Musterdatei haben die Datensätze Längen zwischen 4658 und 4705 Byte, im Mittel 4689.
    Const MinLenDATASET As Long = 4658 'kleinste Datensatzlänge
    Const MidLenDATASET As Long = 4689 'mittlere Datensatzlänge
    Const MaxLenDATASET As Long = 4705 'kleinste Datensatzlänge


    Das mache ich mir im Code zunutze, um den Startpunkt und die Länge der auszulesenden Zeichenkette abzuschätzen.
    lngStartGuess = HEADER - (MaxLenDATASET - MinLenDATASET) + MidLenDATASET * (lngDatensatz - 1)
    lngLenGuess = MaxLenDATASET + (MaxLenDATASET - MinLenDATASET)

    Erhält man keine Treffer, kann man die Formeln "nachjustieren".

    Geprüft wird das hier:
    i = InStr(s, """scan=" & lngDatensatz & """")
    If i > 0 Then

    Sprich: Der Scan"Nummer" muss enthalten sein.
    i ist dabei der Startpunkt, an dem die Scannummer gefunden wurde. Ist i sehr groß, kann man ebenfalls nachjustieren.
    Bei Veränderung des Startpunkts muss auch die ausgelesene Länge nachgeregelt werden.

    Weniger auf Leistung, dafür auf mehr Sicherheit eingestellt, ist diese Abstimmung:
    lngStartGuess = HEADER + MinLenDATASET * (lngDatensatz - 1)
    lngLenGuess = MaxLenDATASET + (MidLenDATASET - MinLenDATASET) * (lngDatensatz - 1)



    Der Code ist erstmal unsauber, nur zum Testen. In der Musterdatei, die ich durch Kopieren der Datensätze auf rund 300 MB habe anwachsen lassen, entspricht die mittlere Datensatzlänge logischerweise dem Muster, so dass der Startpunkt mit hoher Genauigkeit getroffen wird (Abweichung gerade mal 187 Byte).
    Code:
    Man muss also noch etwas Zeit für eine Datenanalyse investieren, die Lesezeiten variieren über die Größe der Datei dann aber nur noch wenig.

    Grüße
    EarlFred
     
    EarlFred, 24. Juli 2017
    #42
  13. Geschlossene Excel Datei nach String durchsuchen

    Das ist doch ein guter Vorschlag, bei der kleinen Datei funktioniert es, also bei mir.

    Spannende Frage, was passiert bei der "großen" Datei?

    Update: Basierend auf EarlFreds Ansatz, könnte man auch folgendes machen. Man muss vorher allerdings die Zeilen mit dem Header löschen. Code:
    Das geht allerdings für das Beispiel schon bei MY_REC=8 schief, weil die Länge eben nicht fix ist.
    Das könnte man "etwas" retten, indem man das erhöht, z.B. Dim line As String * 4689, aber früher oder später liegt man sicher wieder daneben :-(
    Von daher ist schon spannend zu wissen, was bei der großen Datei passiert?
     
    Storax, 25. Juli 2017
    #43
  14. Solange die Datensatzlängen nicht sonderlich stark variieren (so wie im Beispiel), sollte es klappen. Selbst wenn man vorher und nachher +/- 10^6 Zeichen zusätzlich einliest, ist das immer noch bedeutend schneller als 2*10^9 Zeichen einzulesen.
     
    EarlFred, 25. Juli 2017
    #44
  15. Klar, Dein Ansatz ist schneller, schließlich wird "binär" gelesen, man kann also direkt zur richtigen Position "springen".
    Und das ist ja gleichzeitig die Crux, IMHO. Wir schleßen ja von der Beispieldatei auf die Struktur, die könnte ja bei der Originaldatei noch anders sein
    Mal sehen, ob der OP nochmal reagiert, denn Dein Ansatz ist, wenn er die Daten richtig trifft, bedeutend schneller.
     
    Storax, 25. Juli 2017
    #45
Thema:

Geschlossene Excel Datei nach String durchsuchen

Die Seite wird geladen...
  1. Geschlossene Excel Datei nach String durchsuchen - Similar Threads - Geschlossene Excel Datei

  2. geschlossene .xlsm zu .pdf konvertieren

    in Microsoft Excel Hilfe
    geschlossene .xlsm zu .pdf konvertieren: Hallo VBA´ler Ich brauche wieder einmal euer VBA Wissen. Ich habe eine geöffnete xlsm. Anahnd einer VBA Prozedur wird eine andere geschlossene .xlsm vom Ordner A zu Ordner B verschoben und...
  3. Zugriff auf Zellen in geschlossenen Arbeitsmappen

    in Microsoft Excel Hilfe
    Zugriff auf Zellen in geschlossenen Arbeitsmappen: Ich möchte gerne auf Zellen in anderen Arbeitsmappen zugreifen, ohne diese dabei öffnen zu müssen. Vom Prinzip her soll dies analog zur "INDIREKT-Funktion" ablaufen (die leider nur bei geöffneten...
  4. Bestimmte Zellen aus geschlossenen Dateien in eine Master Liste hineinkopieren VBA

    in Microsoft Excel Hilfe
    Bestimmte Zellen aus geschlossenen Dateien in eine Master Liste hineinkopieren VBA: Hallo, ich bin an meiner Thesis dran und möchte Protokolle auswerten. Dazu habe ich Dateien, die Tageswerte enthalten. Ich möchte aus jeder Datei die gleichen Zellen kopieren und in eine...
  5. Excel VBA aus einem Formular Daten in eine geschlossen Arbeitsmappe zu übertragen

    in Microsoft Excel Hilfe
    Excel VBA aus einem Formular Daten in eine geschlossen Arbeitsmappe zu übertragen: Hallo, ich bräuchte mal eure Hilfe Ich habe ein Solaranlage, wo ich jede Woche neu Daten bekomme, die ich in der Arbeitsmappe SolarStrom 2020_01_01 speichere. Die Daten werden in eine Formular...
  6. Wenn Excel Datei geschlossen wird, dann....

    in Microsoft Excel Hilfe
    Wenn Excel Datei geschlossen wird, dann....: Hallo zusammen, ich hänge an einen Problem Fest... Ich würde gerne, Falls eine bestimmte Excel Datei geschlossen wird, eine Msgbox ausgeben lassen. Versucht habe ich es mit dem folgendem Code,...
  7. Word/Excel Formulare mit dynamischen Abruf von Daten aus geschlossenen Excel Dateien

    in Microsoft Excel Hilfe
    Word/Excel Formulare mit dynamischen Abruf von Daten aus geschlossenen Excel Dateien: Hallo zusammen, ich hoffe bei euch ist alles gut. Ich möchte verschiedene gesicherte Formulare in denen lediglich bestimmte Felder/Zellen bearbeitet werden können (Word oder Excel, am liebsten...
  8. Eine Automatische sortierung in andere geschlossenen Tabellen

    in Microsoft Excel Hilfe
    Eine Automatische sortierung in andere geschlossenen Tabellen: Hallo, ich bin neu hier und habe eine frage/bitte.. gibt es eine möglischkeit sich eine excel tabelle zu erstellen in der ich dann datum, artikelnummer und menge eingeben kann und die...
  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