Suche von Wörtern in MS Word

Bild Fragen zu Integrationsproblemen anderer Programme in die Microsoft Dynamics Produkte

Suche von Wörtern in MS Word

Beitragvon Daniel_C » 17. Januar 2007 17:45

hi @ll,

ich hoffe diesen Beitrag gibts nicht schon, konnte ihn leider nicht finden.
Desahalb frag ich hier mal nach ...

Ich möchte ein Word Document (wenns geht im Hintergrund) öffnen und die Wörter zählen die sich dort befinden.

wörter sollen gezählt werden 1x für Fett gedruckte
1x für normale wörter

da es die funktion nicht gibt, wörter zählen fett bzw. normal, hab ich mir gedacht mit der suchfunktion das problem zu lösen.

nur wie ich das genau in NAV mache ist mir nicht wirklich klar.

Ich hoffe jemand kann mir helfen, bin leider noch ein anfänger :cry:

mfg

Daniel
Daniel_C
 
Beiträge: 5
Registriert: 17. Januar 2007 17:38

Beitragvon Kowa » 17. Januar 2007 19:25

[Beitrag aus dem Forum Dynamics NAV 4.xx nach Software- Integration verschoben.]

GruĂź, Kai
MSDynamics.de-Team
Benutzeravatar
Kowa
Moderator
Moderator
 
Beiträge: 7835
Registriert: 17. Juni 2005 17:32
Wohnort: Bremen
Realer Name: Kai Kowalewski
Arbeitsort: Osterholz-Scharmbeck
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics 365
Microsoft Dynamics Version: BC, NAV 2018 bis Navision 2.01

Beitragvon feri » 18. Januar 2007 10:30

Hi,

ich habe versucht, das im Word bzw. VB abzubilden. Leider kann der count Befehl selber nicht so ohne weiteres verwendet werden, da gewisse Sonderzeichen ebenfalls mitgezaehlt werden (z.b. Zeilenumbruch).

Als Alternative kann man die Dialogs-Funktion wdDialogToolsWordCount verwenden, die die Sonderzeichen etc. ignoriert. Beim Loop habe ich aber leider nicht rausgefunden, wie man die Sonderzeichen auslassen kann.
Der Loop ist notwendig, um unterscheiden zu koennen, ob ein Wort bold ist oder nicht.

Vielleicht hat ja noch jemand eine Idee, wie man das loesen kann...
Wenn es in VB moeglich ist, sollte es in Navision eigentlich auch machbar sein.

Code: Alles auswählen
Sub countwords()
    Dim i As Integer
    Dim bold_count As Integer
    Dim notbold_count As Integer
    Dim word_count As Integer
   
    bold_count = 0
    notbold_count = 0
       
    ActiveDocument.Select
   
    Set temp = Dialogs(wdDialogToolsWordCount)
    ' Execute the dialog box in order to refresh its data.
    temp.Execute
    word_count = temp.Words
       
    For i = 1 To word_count
        ActiveDocument.Range.Words(i).Select
        'ActiveDocument.Words(i).Select
        If Selection.Font.Bold Then
            bold_count = bold_count + 1
        Else
            notbold_count = notbold_count + 1
        End If
    Next i
               
End Sub


Gruesse
feri
feri
 
Beiträge: 261
Registriert: 16. März 2006 16:59
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon Daniel_C » 18. Januar 2007 11:15

danke fĂĽr die antwort, werds gleich mal versuchen ... wobei ich nicht wirklich weis wie ich das Dialog in Navision ansprechen soll.

wĂĽrde es nicht irgendwie mit Find gehen ?!
--> 'Microsoft Word 11.0 Object Library'.Find

bin offen fĂĽr jede hilfe

danke, mfg

Daniel
Daniel_C
 
Beiträge: 5
Registriert: 17. Januar 2007 17:38

Beitragvon feri » 18. Januar 2007 15:45

Hi,

ich habe kurz in die msdn reingeschaut, da ich die ActiveX Word Objekte selber noch nie verwendet habe. Leider kann es schon mal vorkommen, dass man die richtige Seite nicht findet.
Ich nehme an, dass man aehnlich wie bei Excel 2-3 Objekte benoetigt, um von Navision aus auf ein Dokument zugreifen zu koennen.

Ohne Anleitung ist das eher zaeh, hier die richtigen Sachen rauszufinden. Allerdings wuerde ich mich erst auf Navision konzentrieren, wenn die Suche in VB 100%ig funktioniert.

Eine spontane Idee habe ich noch. Vielleicht kannst du beim Oeffnen des Dokumentes saemtliche Sonderzeichen (auch <CR> usw. ) loeschen, damit saemtliche Woerter in einer Zeile stehen. Dann muesste die FOR Schleife eigentlich nicht durcheinander kommen?

Wenn die VB Sache passt, kannst du dich danach ja auf der msdn Seite ueber die ganzen ActiveX Word Objekte informieren.

Gruesse
feri
feri
 
Beiträge: 261
Registriert: 16. März 2006 16:59
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon Daniel_C » 18. Januar 2007 16:07

danke fĂĽr die hilfe feri.

ich muss mich aber leider mit navision mehr befassen da es nicht wirklich (oder ich kanns nur nicht) 1:1 ĂĽbernommen werden kann ins navision.

was mir echt helfen wĂĽrde ist wenn mir wer sagt welche Automation ich verwenden soll bzw. wie kann ich einfach alle Daten die in einem Word Document drinnen sind in Navision importieren ... um sie dann eventl. in eine tabelle zu speichern.

mfg
Daniel
Daniel_C
 
Beiträge: 5
Registriert: 17. Januar 2007 17:38

Beitragvon Daniel_C » 18. Januar 2007 18:27

Hier die Lösung:

Name DataType Subtype Length
wordApp Automation 'Microsoft Word 11.0 Object Library'.Application
wordDocs Automation 'Microsoft Word 11.0 Object Library'.Documents
wordDoc Automation 'Microsoft Word 11.0 Object Library'.Document
wordWords Automation 'Microsoft Word 11.0 Object Library'.Words
wordRange Automation 'Microsoft Word 11.0 Object Library'.Range
i Integer
bold_count Integer
notbold_count Integer

--------------------------------------------------------

IF NOT CREATE(wordApp,TRUE) THEN
ERROR('Word exestiert nicht');

bold_count := 0;
notbold_count := 0;

wordDocs := wordApp.Documents;
wordDoc := wordDocs.Open(Datei);
wordWords := wordDoc.Words();

FOR i := 1 TO wordWords.Count DO BEGIN
wordRange := wordWords.Item(i);
IF (wordRange.Bold = -1) THEN BEGIN
IF (wordRange.Text <> '.') THEN bold_count += 1;
END ELSE BEGIN
IF (wordRange.Text <> '.') THEN notbold_count += 1;
END;
END;

MESSAGE('Normal: %1\Fett: %2', notbold_count, bold_count);
wordDoc.Close;
wordApp.Quit;
-----------------------------------------

Was halt noch nicht geht ist bei normalen Wörtern nimmt er mir leerzeichen und zeilenumbrüche noch mit ... aber diese sollte man abfangen können mit "wordRange.Text"
Daniel_C
 
Beiträge: 5
Registriert: 17. Januar 2007 17:38

Beitragvon feri » 19. Januar 2007 12:44

Hi,

danke fuer deinen Navision code. Ich habe das gleich mal bei mir ausprobiert.
Das mit den Zeilenumbruechen ist wirklich aergerlich, ich sehe keinen plausiblen Grund, warum die das in der Funktion mitzaehlen :evil:. Zumindest ein zusaetzlicher Parameter, mit dem man steuern kann, ob man Sonderzeichen mitzaehlen will oder nicht, waere fein gewesen.
Ich habe das jetzt mal mit einer Abfrage auf die Laenge getestet.

Code: Alles auswählen
FOR i := 1 TO wordWords.Count DO BEGIN
  wordRange := wordWords.Item(i);
  IF (wordRange.Bold = -1) THEN BEGIN
    IF (STRLEN(wordRange.Text) > 1) THEN
      bold_count += 1;
  END ELSE BEGIN
    IF (STRLEN(wordRange.Text) > 1) THEN
      notbold_count += 1;
  END;
END;

Ein Wort sollte eignetlich immer mind. 2 Buchstaben haben, von daher hat er mein Testdokument richtig ausgelesen. :-D

Gruesse
feri
feri
 
Beiträge: 261
Registriert: 16. März 2006 16:59
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Beitragvon Daniel_C » 22. Januar 2007 11:17

hi feri,

ja das is ne schöne idee ... und erleichtert mir meine arbeit ne neue Tabelle hinzuzufügen wo ich alle "Zeichen", "Buchstaben" bzw. "Sonderzeichen" eintrage die nicht gezählt werden sollen :P

danke für die zusammenarbeit, bis zum nächsten mal

CU
Daniel_C
 
Beiträge: 5
Registriert: 17. Januar 2007 17:38


ZurĂĽck zu Software-Integration

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste