1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Wörter aus Dokumenten nach Excel kopieren

Discussion in 'Office-Programme' started by bnbre, Jan 27, 2009.

Thread Status:
Not open for further replies.
  1. bnbre

    bnbre Byte

    Hallo liebe MS-Word Experten,
    ich suche nach einer Makro bzw. VBA Lösung um aus einem Word Dokument alle Wörter in eine Datenbank - Excel oder Access - zu bringen.
    Vorab würde es mir reichen, ein Beispiel für das Suchen nach Wörtern mit Anfangsbuchstabe a oder A > kopieren nach Excel in Spalte A zu bekommen.
    Ps: Brieftext aus Wort 97 bzw. Wort 2000
    Wer kann/mag mir hierzu eine Hilfestellung geben.
    Danke ...
     
  2. Urs2

    Urs2 Megabyte

    Da kann ich lange überlegen... ich kann mir keine Verwendung für so etwas vorstellen... aus einem Word-Brief alle Wörter einzeln in einzelne Excel-Zellen bringen...
    Mit einem so seltsamen Wunsch solltest Du schon erklären, was damit bezweckt werden soll, dann kann man sich auch etwas Vernünftiges ausdenken (wenn möglich).

    Das Prinzip ist klar >

    1. Den Word-Brief als reinen Text speichern

    2. Diese Textdatei als "Daten" in Excel importieren, mit dem Datentrennzeichen "Leerzeichen"

    Jetzt stehen alle Wörter eines Absatzes in einer Zeile in einzelnen Zellen.
    Wenn mehr Wörter im Absatz sind als Excel Spalten hat (Excel2003 = 256), dann füllt er einfach eine zweite Zeile...

    Hier kann man jetzt sortieren, zählen, anmalen oder sonst was Unvernünftiges tun...
    Probiere es aus und Du wirst die vielen Möglichkeiten entdecken...

    Automatisieren kann man das wohl auch.
    Zuerst in Word das Speichern als Textdatei, und nachher der Import und das Verarbeiten in Excel.

    Solange ich aber keinen Sinn in der Sache erkennen kann... denke ich nicht so weit.

    Gruss Urs
     
  3. bnbre

    bnbre Byte

    Danke für dein Interesse in dieser Angelegenheit
    Sorry, natürlich zur statistischen Analyse
    Gruß
    bnbre
     
  4. Urs2

    Urs2 Megabyte

    Soweit bin ich mit meiner Phantasie schon gekommen... aber was soll denn analysiert werden?

    Die Wortwahl in Briefen zu verschiedenen Zeiten?

    Dann dürfte aber nicht das ganze Word-Dokument analysiert werden, sondern nur das, was zwischen den "Sehr geehrten Damen und Herren" und den "freundlichen Grüssen" steht.

    Sonst wird die Analyse ja verfälscht mit repetitiven Begriffen wie Ort, Name, Datum, Adresse, Funktion usw.

    Hast Du eine in Word gespeicherte Textdatei als "Daten" in eine Excel-Datei importiert und geprüft, ob das eine gangbare Zwischenstufe sein könnte?

    Sollen gezielt einzelne Dokumente oder ganze Epochen als Ganzes analysiert werden?

    Gruss Urs
     
    Last edited: Jan 28, 2009
  5. Hascheff

    Hascheff Moderator

    Ich würde in Word alle Leerzeichen durch Absatzmarken ersetzen, dann hast du in Excel gleich alle Begriffe in einer Spalte. So lassen sie sich leichter sortieren. Wenn du nicht über die Zwischenablage gehen willst, musst du in Word die Datei im Format "Nur Text + Zeilenwechsel" speichern. Das müsste sich dann sowohl in Excel als auch in Access importieren lassen.

    Ich hab mal schnell den Text aus #4 in Word bearbeitet. Dabei ist mir aufgefallen, dass die Satzzeichen ein Problem sind. In Excel kann man das Problem schon beim Import entschärfen, in Access kann man sicher auch mit Aktionsabfragen arbeiten.

    In Excel könnte dir das Tool PCWFindenInv helfen.
     
    Last edited: Jan 28, 2009
  6. Urs2

    Urs2 Megabyte

    @Hascheff >>> ...hatte geahnt, dass Dich das Problem interessiert.

    Solange der TO nur mit einem nichts sagenden Einzeiler antwortet, dürfen wir über Prinzipien disputieren.

    Das pcwFindenInv entspricht wohl den VBA-Befehlen InStr <> InStrInv?

    Mein Plan war, die Wörter auf dem schnellsten Weg in einzelnen Excel-Zellen zu haben. Excel ist ja wohl der unbestrittene Meister im Bearbeiten einzelner (Zell)-Werte...

    Das Bearbeiten umfasst ja nicht nur das Entfernen der Satzzeichen, sondern auch anderer überflüssiger Zeichen, wie Anführungszeichen oder ähnlichem und eventuell Apostroph, Bindestrich usw.
    Möglicherweise ebenso das Verwerfen bestimmter "Hilfswörter" (und, in, sind, ist....), vordefinierter anderer Wörter, Abkürzungen oder Zahlen.

    Ein Problem, das mit Makros nicht lösbar ist, wäre das Sammeln der verschiedenen Konjugationen oder Deklinationen in ihren jeweiligen Stammformen.

    Der TO will wohl kaum verschieden lange Kolonnen betrachten wollen... sondern die Anzahl der Vorkommen zählen, also kann man sich das aufwändige Schreiben der Kolonnen gleich sparen und direkt im Speicher die Buchhaltung nachführen.

    Solange diese Prozeduren zur Hauptsache in Schleifen im Speicher ablaufen, ohne dauernden Zugriff auf die Datei, wird sich auch die Rechenzeit in Grenzen halten.

    Deine Idee bringt mich jedoch auf eine andere... aber die Leerzeichen nicht durch Absatzmarken ersetzen, sondern umgekehrt, die Absatzmarken durch Leerzeichen... dann ist der ganze Brief in einer einzigen Excel-Zelle und kann direkt als String effizient im Speicher verarbeitet werden. Oder so ähnlich...

    Das voll automatisierte Auswählen der Word-Briefe und des gewünschten Textbereichs kann ich mir dagegen nicht so recht vorstellen. Anrede und Grussformel sind wohl nicht überall gleich. Und welchen Wert haben in der Statistik Einzeiler, Serienbriefe,verwendete Textbausteine und andere Floskeln?
    Da muss wohl der Mensch entscheiden.

    Aber wer weiss schon... vielleicht will er ja nur die Wörter nach Anfangsbuchstaben sortieren und diese so zählen...

    Gruss Urs
     
  7. Hascheff

    Hascheff Moderator

    Hallo Urs,
    Ich bin mir jetzt nicht ganz sicher. Das PC-Welt-Tool kann jedenfalls einen String rückwärts schreiben, so dass man nach der alphabetischen Sortierung der umgekehrten Strings die Begriffe mit Anführungszeichen beisammen hat, um sie zu behandeln.
    Ich kann mir nicht vorstellen, dass das Problem der Rechenzeit so brennt, dass man diese Verzweiflungstat nötig hat. Mein Excel2000 ist da übrigens auf 255 Zeichen pro Zelle begrenzt.

    Gruß Hascheff
     
  8. Urs2

    Urs2 Megabyte

    Mmh... habe erst jetzt auch darüber gelesen, auch für mein Excel2003 wird das geschrieben... es weiss nur nichts davon...
    Allerdings wird übers Bearbeiten geschrieben, das mache ich nicht.
    Ich kopiere einen Fliesstext mit über 6000 Zeichen in eine Zelle, lese ihn sofort in einen VBA-String und brauche ihn nie mehr.

    Der TO hat das Interesse offenbar verloren, aber ich wollte doch wissen, ob es geht... kann man auch anderswo brauchen.

    Wenn du Lust hast... es braucht dazu >
    - eine Exceldatei mit Tabellenblatt1 + 2
    - einen grossen Word-Text >
    markieren > Suchen/Ersetzen: Absatz durch Leerschlag > Kopieren Einfügen in Excel-Blatt 1 in eine Zelle

    Diese Zelle markieren und Makro starten...

    Code:
    Option Explicit
    
    Sub WortAnalyse()
    
    Dim strText As String, removeChars As String, thisChar As Long
    Dim aQ(), aQ1, strProv, z, y, x, i
                            
                            'aus dem Text zu entfernende Zeichen
    removeChars = "-_.:,;<>\§°+¦""@*#%&¬/|()„“=?`~{}[]$£¨!]1234567890"
                            'am Ende Leerzeichen für Suche
    strText = Trim(LCase(ActiveCell.Value)) & " "
                            'entfernt Zeichen
        For thisChar = 1 To Len(removeChars)
            strText = Replace$(strText, Mid(removeChars, thisChar, 1), "")
        Next
    
        'ersetzt ' durch Leerschlag >>> je nach Sprache, woher das Apostroph stammt,
        'müsste auch der vorhergehende Rest des Artikels entfernt werden (zB l'apostrophe)
    strText = Replace$(strText, "'", " ")
    
                            'entfernt doppelte Leerzeichen
    strText = Replace$(strText, "  ", " ")
    
    z = 1
    ReDim aQ(1 To 2, 1 To 1)
    
    Do
        y = InStr(strText, " ")
        strProv = Trim(Left(strText, y))
        For i = 1 To z
            If aQ(1, i) = strProv Then
                aQ(2, i) = aQ(2, i) + 1
                x = True
                Exit For
            End If
        Next
        If x = False Then
            z = z + 1
            ReDim Preserve aQ(1 To 2, 1 To z)
            aQ(1, z) = strProv
            aQ(2, z) = 1
        End If
        x = False
        strText = Right(strText, Len(strText) - y)
    Loop While strText <> ""
    
    aQ(1, 1) = "Vorkommen der im Text enthaltenen Wörter"
    aQ(2, 1) = ""
                            'kehrt den Array um
    aQ1 = Application.WorksheetFunction.Transpose(aQ)
                            'füllt Blatt
        Sheets("Tabelle2").Activate
        ActiveSheet.Range("A1").Select
        Selection.Resize(z, 2).Select
        Selection.Value = aQ1
    
    End Sub
    
    Im Blatt2 stehen jetzt alle Wörter mit der Anzahl der Vorkommen - blitzartig.

    Das Automatisieren und Auswerten wäre dann Arbeit und macht keinen Spass mehr.

    Gruss Urs
     
  9. bnbre

    bnbre Byte

    Hallo lb. Urs
    zu deiner Frage, ich habe den Lösungsvorschlag zu Access von Eberhard
    ausbrobiert, es war ein voller Erfolg. Ich habe mich dafür auch gleich bedankt.
    "Blut geleck" möchte ich auch das Wort Makro ausführen können
    Gruß Karl
     
Thread Status:
Not open for further replies.

Share This Page