Sie sind vermutlich noch nicht im Forum angemeldet - Klicken Sie hier um sich kostenlos anzumelden Impressum 
Sie können sich hier anmelden
Dieses Thema hat 4 Antworten
und wurde 181 mal aufgerufen
 Skripte und Zusatzprogramme
lx2 Offline



Beiträge: 10

16.03.2011 10:05
RE: Vokabel-Eigenschaften per VBA ändern Zitat · Antworten

Hallo Forum und VBA-Profis

sobald ich eine neue Vokabel bei DNS11 Pro hinzufüge möchte ich die erweiteren Eigenschaften ändern.
Seht euch bitte als erstes die angehängte Grafik an.

Leider habe ich in den Grundeinstellungen des Programms nichts passendes gefunden, deswegen weiche Ich auf VisualBasic for Applications aus. Dort gibt es eine ActiveX-Komponente namens voctool.dll. (Vor Version 11 gab es anscheinend noch ein Programm namens Voctool.exe im Dragon-Verzeichnis, das auf ähnliche weise die Manipulation des Vokabulars erlaubte)

In VBA bin ich leider noch eine Laie, habe es aber schonmal soweit geschafft, dass meine neuen Vokabeln eingelesen werden. Jetzt benötige ich Eure Hilfe:
(Achtung, damit der Code ausgeführt werden kann muss man natürlch die Voctools-Referenz mit einbinden. Das geschieht in dem man im Textfeld des Befehlteditors Alt+Enter drückt oder Rechtsklick>Referenzen... und dann Dragon NaturallySpeaking Vocabulary Tools (1.0) anhackelt. Außerdem müsst ihr Euch die Datei 'C:/myVocList.txt' anlegen )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 

Sub Main
 
'################## Variablen Deklarieren ###################
 
'Überobjekt, das alle Funktionen zu verfügung stellt
Dim MyDragonVocabularyTool As New DgnVocTools.DgnVocTools
 
'Objekt, dass direkt auf das Vokabular zugreifen kann
Dim VocabularyManipulator As DgnVocTools.IDgnVocabularyBuilder
 
'Objekt, dass Dateien analysiert und daraus vokabeln generiert
Dim FileAnalyser As DgnVocTools.IDgnTextAnalyzer
 

 
'################### Programmstart ##############################
 
'Voctool initialisieren
MyDragonVocabularyTool.Initialize
 

'Dateianalyse- und Vokabelmanipulator-Objekte erstellen
Set FileAnalyser = MyDragonVocabularyTool.TextAnalyzer
Set VocabularyManipulator = MyDragonVocabularyTool.VocabularyBuilder
 
'Mit dem Dateianalyse-Objekt eine Vokableliste auslesen
Set WordsFromFile = FileAnalyser.ProcessWordList("C:/myVocList.txt")
 

'HIER FEHLT DER ENTSCHEIDENDE TEIL!!!
'Es sollen die ausgelesenen Vokabeln in das aktive Vokabular eingebaut werden
'Außerdem sollten die Erweiterten Eigenschaften angepasst werden. Leider weiß ich an der Stelle noch nicht welche Funktion dafür zuständig sein soll
'VocabularyManipulator.AddWords(WordsFromFile) 'Endet leider in einem: "(10090) ActiveX Automation error" warum???
 

 
'###################### Testausgabe ##############################
For Each Word In WordsFromFile
i=i+1
Next
MsgBox "Vokabeln in der Datei: " & CStr(i)& vbLf _
& "Erste Vokabel: " & WordsFromFile.Item(0).WrittenForm
 

 
'##################### PS ##########################################
' Übrigens an das aktuell geladene Vokabular kommt mann per
' Set WordsFromActiveVocabulary = VocabularyManipulator.GetWords
 
End Sub
 
 



Ps.: Um weitere Hintergrundinformationen zu dem Tehma und der eigentlichen Motivation zu erfahren, könnt ich Euch auch diesen Thread durchlesen, eventuell ergibt sich dadurch auch eine ganz andere Lösung:
http://dragon-spracherkennung.forumprofi...-vokabular.html

Angefügte Bilder:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
 f12t512p3617n93.jpg 
R.Wilke Offline



Beiträge: 6.337

16.03.2011 10:59
#2 RE: Vokabel-Eigenschaften per VBA ändern Zitat · Antworten

Meines Erachtens sind Sie kein Laie, und ich bin erstaunt, was Sie da vorbringen, aber der Code dürfte zunächst an der Zeile:

Set WordsFromFile = FileAnalyser.ProcessWordList("C:/myVocList.txt")

scheitern, weil "WordsFromFile" noch nicht definiert ist (als IDgnWords). Ihr spezielles Anliegen habe ich auf meiner Liste, und ich denke, es ist lizenztechnisch legitim, es so zu machen, komme aber nur abends dazu. Mal sehen, wie es weiter geht.

Gruß, R. Wilke

_______________________________________

Dragon Professional 16 auf Windows 10 Pro und Windows 11
SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo)
HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD

lx2 Offline



Beiträge: 10

16.03.2011 13:57
#3 RE: Vokabel-Eigenschaften per VBA ändern Zitat · Antworten

Ok ich bin jetzt wieder ein Stück weiter, und versuch es jetzt mal genau andersherum:
Jede Vokabel soll von Grund auf immer diese Sondereinstellung (keine Leerstelle danach, Neue Zeile danach) haben und nur die Ausnahmen bleiben auf der Standarteinstellung.

Das mit den Ausnahmen könnte man eventuell über Select/Case machen. Aber nun erstmal zum einstellen des gesammten Vokabulars auf die Sondereinstellung:

(Achtung: 1. Voctool.dll einbinden nicht vergessen 2.VORSICHT, aktives Vokabular wird auf Sondereinstellungen geändert)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 

Sub Main
On Error GoTo Error_Abfangen
 
'################## Variablen Deklarieren ###################
Dim MyDragonVocabularyTool As New DgnVocTools.DgnVocTools
Dim VocabularyManipulator As DgnVocTools.IDgnVocabularyBuilder
Dim Word As DgnVocTools.IDgnWord
Dim i As Integer
 

'################### Programmstart ##############################
MyDragonVocabularyTool.Initialize
 
Set VocabularyManipulator = MyDragonVocabularyTool.VocabularyBuilder
Set WordsFromActiveVocabulary = VocabularyManipulator.GetWords
 
For Each Word In WordsFromActiveVocabulary
i=i+1
VocabularyManipulator.SetWordFormating(Word ,dgnwfmtNoSpaceAfter) 'Keine Leerstelle nach dem Wort
VocabularyManipulator.SetWordFormating(Word ,dgnwfmtReturn ) 'Neue Zeile nach dem Wort
Next
 
Exit Sub
Error_Abfangen:
MsgBox "Es ist ein Fehler bei der " & i & "-(s)ten Vokabel aufgetreten"
End Sub
 
 



Das ganze funktioniert schon einigermaßen. Mein Vokab ca. 850 Wörter und bei ca 800 Wortern kommt es zu einem Fehler. Kann jemand mal die Funktion bei sich testen? Passiert da Ähnliches, oder läuft sie komplett durch???

Ach ja übrigens, wenn man im Vokabular alle Wörter markiert und dann auf Eigenschaften klickt, werden ebenfalls die Eigenschaften auf alle markierten Wörter angewendet.

lx2 Offline



Beiträge: 10

16.03.2011 15:49
#4 RE: Vokabel-Eigenschaften per VBA ändern Zitat · Antworten

Na wenn das mal nicht ne schwere Geburt war:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
 

Sub Main
On Error GoTo Error_Abfangen
 
'################## Variablen Deklarieren ###################
Dim MyDragonVocabularyTool As New DgnVocTools.DgnVocTools
Dim VocabularyManipulator As DgnVocTools.IDgnVocabularyBuilder
Dim nIndex As Long
 
Dim Ausnahmen(20) As String
 
Ausnahmen(1) = "ein"
Ausnahmen(2) = "zwei"
Ausnahmen(3) = "drei"
Ausnahmen(4) = "vier"
Ausnahmen(5) = "fünf"
Ausnahmen(6) = "sechs"
Ausnahmen(7) = "sieben"
Ausnahmen(8) = "acht"
Ausnahmen(9) = "neun"
Ausnahmen(10) = "zehn"
 
Ausnahmen(11) = "fünfundzwanzig"
Ausnahmen(12) = "fünfzig"
Ausnahmen(13) = "fünfundsiebzig"
Ausnahmen(14) = "hundert"
 
Ausnahmen(15) = "kilo"
Ausnahmen(16) = "kilogramm"
Ausnahmen(17) = "gramm"
Ausnahmen(18) = "liter"
Ausnahmen(19) = "milliliter"
 
Ausnahmen(20) = "bis"
 

'################### Programmstart ##############################
MyDragonVocabularyTool.Initialize
 
Set VocabularyManipulator = MyDragonVocabularyTool.VocabularyBuilder
Set WordsFromActiveVocabulary = VocabularyManipulator.GetWords
 
geanderteVokabeln=0
ungeaenderteVokabeln=0
 
For i=0 To WordsFromActiveVocabulary.Count-1
 
nIndex = IsInArray(Ausnahmen(), WordsFromActiveVocabulary.Item(i).WrittenForm)
If nIndex >= 0 Then
ungeaenderteVokabeln = ungeaenderteVokabeln + 1
Else
'Erweiterte Einstellung andern
VocabularyManipulator.SetWordFormating(WordsFromActiveVocabulary.Item(i) ,dgnwfmtNoSpaceAfter) 'Keine Leerstelle nach dem Wort
VocabularyManipulator.SetWordFormating(WordsFromActiveVocabulary.Item(i) ,dgnwfmtReturn ) 'Neue Zeile nach dem Wort
geanderteVokabeln=geanderteVokabeln+1
End If
 
Next i
 
MsgBox "Vokabular mit "& WordsFromActiveVocabulary.Count & " Woertern erfolgreich manipuliert!" & vbLf & vbLf & _
"Es wurden "& geanderteVokabeln &" Vokabeln geaendert" & vbLf & _
"Es wurden "& ungeaenderteVokabeln &" Vokabeln beibehalten"
 
Exit Sub
Error_Abfangen:
MsgBox "Es ist ein Fehler bei der " & i & "-(s)ten Vokabel aufgetreten"
End Sub
 

 
Public Function IsInArray(ByRef sArray() As String, _
ByVal sItem As String, _
Optional ByVal nStart As Variant, _
Optional ByVal nEnd As Variant) As Long
 
' Prüfen, ob das Element "sItem" im Array "sArray" enthalten ist
' Rückgabewert: Index des Elements bzw. -1, wenn nicht vorhanden
Dim i As Long
Dim nIndex As Long
Dim nLen As Long
 
On Error GoTo ErrHandler
nIndex = -1
 
If IsMissing(nStart) Then nStart = LBound(sArray)
If IsMissing(nEnd) Then nEnd = UBound(sArray)
 
nLen = Len(sItem)
For i = nStart To nEnd
If Len(sArray(i)) = nLen Then
If sArray(i) = sItem Then
nIndex = i: Exit For
End If
End If
Next i
On Error GoTo 0
 
ErrHandler:
IsInArray = nIndex
End Function
 
 



Geh zwar nicht mit jedem Vokabular, aber bei meinem, das nur aus Benutzerdefinierten Vokabeln besteht (mit rotem Plus vor dem Wort) geht es bestens!

Angefügte Bilder:
Aufgrund eingeschränkter Benutzerrechte werden nur die Namen der Dateianhänge angezeigt Jetzt anmelden!
 f12t512p3624n94.jpg 
R.Wilke Offline



Beiträge: 6.337

17.03.2011 01:53
#5 RE: Vokabel-Eigenschaften per VBA ändern Zitat · Antworten

Alle Achtung vor dem, was Sie das geleistet haben, aber ohne es zu schmälern zu beabsichtigen habe ich meine derzeitige Auseinandersetzung mit dem Thema für heute Abend, na für den letzten Teil davon, mal ein wenig umgelenkt und die Idee aufgegriffen, die Sie weiter oben schon angesprochen haben, nämlich: wie kann ich eine Wortliste (neue Wörter) importieren und für die neu importierten Wörter zugleich die Worteigenschaften entsprechend einstellen.

Das Resultat in Form eines ausführbaren Programms sende ich Ihnen als Installationsroutine per E-Mail zu, zur freien Verwendung - das ist eh nicht vermarktungsfähig und bei Lichte betrachtet wenig produktiv.

Die Oberfläche sieht derzeit so aus:




Uploaded with ImageShack.us


Sorry for the English, ich arbeite "international". Für Sie ist da insbesondere der Button "Do specials" vorgesehen, wenn Sie darauf klicken, können Sie eine TXT-Datei mit Wörtern auswählen, deren Inhalt, sofern neu, ins Vokabular übernommen wird mit den betreffenden Einstellungen.

Hinweis: die Wörter sollten nur in einfacher Form, also nur mit geschriebener Form, vorliegen, auch wenn solche Wörter schon zuvor im Vokabular vorhanden waren und gelöscht worden sind, werden sie wieder eingefügt. Sind sie aber im Vokabular vorhanden, werden sie übersprungen. Auch das könnte man noch entsprechend zweigleisig behandeln - später vielleicht.

Happy further coding!

Rüdiger

_______________________________________

Dragon Professional 16 auf Windows 10 Pro und Windows 11
SpeechMike Premium (LFH3500); Office 2019 Pro + Office 365 (monatliches Abo)
HP ZBook Fury 17 G8 - i7-11800H - 24 MB SmartCache - 32 GB RAM - 1 TB SSD

Ähnliche Themen Antworten/Neu Letzter Beitrag⁄Zugriffe
Verhinderung von automatischer Großschreibung nach "Klammer zu"
Erstellt im Forum Fragen zur Anwendung von Erhard Kausch
2 30.01.2023 18:58
von Erhard Kausch • Zugriffe: 285
Umstieg von DNS12 auf DPI15
Erstellt im Forum Berichte und Tipps von Maik Horam-eK
6 13.02.2023 15:14
von Harald • Zugriffe: 311
Groß- und Kleinbuchstaben gemischt im Wort
Erstellt im Forum Fragen zur Anwendung von Wuerfelspeck
5 29.04.2022 17:53
von Wuerfelspeck • Zugriffe: 213
Mikrofon in einem Profil geht, in einem anderen nicht
Erstellt im Forum Fragen zur Anwendung von huutsch
0 12.01.2021 22:37
von huutsch • Zugriffe: 404
"Mikrofon prüfen" - Empfindlichkeit nachträglich erhöhen
Erstellt im Forum Geräte und Hardware von Udo Weik
1 15.12.2020 16:14
von R.Wilke • Zugriffe: 584
 Sprung  
Xobor Ein Kostenloses Forum | Einfach ein Forum erstellen
Datenschutz