Alle Rechtschreibfehler markieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Alle Rechtschreibfehler markieren

Re: Alle Rechtschreibfehler markieren

von komma4 » So, 26.08.2012 10:39

Bei mir klappt es auch ohne die Definition*.

aprop() habe ich in diversen Makros der STANDARD Bibliothek definiert - allerdings mit DIM, nicht mit GLOBAL (oder so).

Die Erklärung von hol.sten ist einleuchtend - was mir aber nicht erklärt, warum es hier läuft.

Egal - Hauptsache bei Lara funktioniert es jetzt



*Gerade nochmal OOo neu gestartet, mein Testdokument (mit angehängtem Makro) geöffnet und Makro laufen lassen

Re: Alle Rechtschreibfehler markieren

von hol.sten » Sa, 25.08.2012 20:06

Lara hat geschrieben:Habe nun das Makro mit verschiedenen OO-Versionen probiert und mit verschiedenen Wörterbüchern. Ich erhalte immer die gleiche Fehlermeldung :(
Ich bekam die Fehlermeldung auch. Bei mir habe ich es unter Ubuntu mit LO 3.3.1 und mit OOo 3.2.0 probiert. Beide Mal der gleiche hier bereits gemeldete Fehler.

Die Analyse der Codezeile

Code: Alles auswählen

If Not oSpellChk.isValid(oTextCursor.getString(), oTextCursor.getPropertyValue("CharLocale").Language, aProp()) Then
hat bei mir gezeigt, dass OOo Basic es nicht mag, dass aProp() nicht definiert ist. Ich habe daher aProp() wie folgt definiert:

Code: Alles auswählen

Dim aProp() as new com.sun.star.beans.PropertyValue
Damit ist der Fehler weg und in meinem Textbeispiel wurden alle Worte, die rot unterkringelt waren, gelöscht.

Die Definition von aProp() habe ich als eigene Zeile hinter der Codezeile

Code: Alles auswählen

oTextCursor.gotoStart(False)
eingefügt. Aber man kann sie auch woanders im Code hinpacken, solange sie vor der ersten Verwendung von aProp() durchlaufen wird. Wie der Code ohne die Zeile laufen kann, verstehe ich nicht.

Re: Alle Rechtschreibfehler markieren

von komma4 » Fr, 24.08.2012 14:24

Welche OOo Version?
Betriebssystem?
Welcher Dokumententyp? Ist die Rechtschreibprüfung aktiviert? Die Worte sind in Deutsch/Englisch/was geschrieben?
Wie rufst Du das Makro auf (nicht aus dem Basic-Editor wäre richtig)


Funktioniert hier wie gewünscht

Re: Alle Rechtschreibfehler markieren

von komma4 » Do, 23.08.2012 09:22

Hast Glück - habe ein Makro, dass die von der Rechtschreibprüfung markierten ins Wörterbuch übernimmt und einen Kontrollliste erstellt...


habe das schnell mal geändert, sodass die unbekannten Wörter löscht.
Nutzung auf eigene Verantwortung - komm' mir hinterher nicht, dass Deine Texte weg sind :D

Verwendet wird zur Prüfung das Standard-Wörterbuch standard.dic. Im Code kann ein anderes eingestellt werden.

Code: Alles auswählen

Sub delUnknownWords
' ===============================================
' !!!
' Name des Wörterbuchs
' !!!
sWordBook = "standard.dic"
' ===============================================

sMakroName = "delUnknownWords"
sMakroVersion = "1.0.0"
sMakroTitel = _
 sMakroName & "-" & sMakroVersion

oDocModel = _
 StarDesktop.CurrentFrame.Controller.getModel()

If IsNull(oDocModel) Then
  ' Kein aktives Dokument
  MsgBox _
  "Kein aktives Dokument gefunden; beende Makro" ,_
  ,_
  sMakroTitel
  ' MsgBox("There's no active document")
  Exit Sub
End If

If Not HasUnoInterfaces ( _
 oDocModel, _
 "com.sun.star.text.XTextDocument") Then

 MsgBox _
 "Kein Textdokument; beende Makro" ,_
 ,_
 sMakroTitel
 ' MsgBox("This document doesn't support the 'XTextDocument' interface." + Chr(13))
 Exit Sub
End If

' service
oWBListe = _
 createUnoService ("com.sun.star.linguistic2.DictionaryList")

' Wörterbuch (WB)
' Name des Standards: standard.dic
oWB = _
 oWBListe.getDictionaryByName( sWordBook )

If IsNull( oWB ) Then
  ' Wörterbuch nicht gefunden
  MsgBox _
  "Wörterbuch " & sWordBook & " nicht gefunden; beende Makro" ,_
  ,_
  sMakroTitel
  ' MsgBox("There's no active document")
  Exit Sub
End If



oTextCursor = oDocModel.Text.createTextCursor()
oTextCursor.gotoStart(False)

oLinguSvcMgr = _
 createUnoService( _
 "com.sun.star.linguistic2.LinguServiceManager" _
 )

If Not IsNull(oLinguSvcMgr) Then
 oSpellChk = oLinguSvcMgr.getSpellChecker()
End If

If IsNull (oSpellChk) Then
 msgbox _
 "Zugriff auf Rechtschreibprüfung fehlgeschlagen; beende Makro",_
 ,_
 sMakroTitel
 ' MsgBox("It's not possible to access to the spellcheck." + Chr(13))
 Exit Sub
End If


' Schleife
Do
 ' Wort markieren
 If oTextCursor.isStartOfWord() Then
    oTextCursor.gotoEndOfWord(True)
    
    If Not isEmpty _
    (oTextCursor.getPropertyValue("CharLocale")) Then
     '
     If Not _
      oSpellChk.isValid(oTextCursor.getString(), _
      oTextCursor.getPropertyValue("CharLocale").Language, _
      aProp()) Then
         oTextCursor.setString( "" )
      End If
    End If
 End If

Loop While oTextCursor.gotoNextWord(False)

End Sub

Viel Erfolg damit!

OOoWiki:
Makros installieren
Makros mit einem Klick

Nach oben