VBA Script überwacht Dokumentenlänge
Hallo allesamt,
ich suche seit einigen Stunden ein Script das permanent das Word Dokument überwacht und eine message box bringt wenn das Dokument eine Zeichenzahl von X überschreitet.
Leider finde ich nichts was genau dem entspricht. (WORD 2010 - 2013)
Diese Überprüfung müsste so aussehen: WENN Zeichenanzahl über "LIMIT" UND seit "x" Sekunden nichts weiter geschrieben, DANN Box: "Achtung, "LIMIT" überschrieben. Du hast "XXX" Zeichen ( Summe("LIMIT" - "XXX")) zu viel ANSONSTEN prüfe wieder in "X" Sekunden
Ich habe eine Limitierung bereits für Formulare in Word gefunden. Allerdings dürfen es keine Formularfelder sein. Es muss über das gesamte Word Dokument gehen.
Zudem kommt erschwerend hinzu, dass Ich leider kein Programmierer sondern Gestalter bin. Benötige dieses Skript in meiner .dotx Vorlage da diese fertigen Word Dokumente dann in InDesign Dokumente importiert werden.
Daher bin ich gezwungen, fachkundige Office-Gurus darum zu bitten mir ein solches Script zur Verfügung zu stellen.
Danke schonmal im Voraus für diejenigen die sich dazu bereit erklären.
P.s. ich hatte zwar was gefunden. Aber dieser Code ist aus Word 2000 und wenn ich das bei VBA Script einfüge kommt eine Fehlermeldung von wegen Fehler bei Kompilieren: Erwartet Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende
ich suche seit einigen Stunden ein Script das permanent das Word Dokument überwacht und eine message box bringt wenn das Dokument eine Zeichenzahl von X überschreitet.
Leider finde ich nichts was genau dem entspricht. (WORD 2010 - 2013)
Diese Überprüfung müsste so aussehen: WENN Zeichenanzahl über "LIMIT" UND seit "x" Sekunden nichts weiter geschrieben, DANN Box: "Achtung, "LIMIT" überschrieben. Du hast "XXX" Zeichen ( Summe("LIMIT" - "XXX")) zu viel ANSONSTEN prüfe wieder in "X" Sekunden
Ich habe eine Limitierung bereits für Formulare in Word gefunden. Allerdings dürfen es keine Formularfelder sein. Es muss über das gesamte Word Dokument gehen.
Zudem kommt erschwerend hinzu, dass Ich leider kein Programmierer sondern Gestalter bin. Benötige dieses Skript in meiner .dotx Vorlage da diese fertigen Word Dokumente dann in InDesign Dokumente importiert werden.
Daher bin ich gezwungen, fachkundige Office-Gurus darum zu bitten mir ein solches Script zur Verfügung zu stellen.
Danke schonmal im Voraus für diejenigen die sich dazu bereit erklären.
P.s. ich hatte zwar was gefunden. Aber dieser Code ist aus Word 2000 und wenn ich das bei VBA Script einfüge kommt eine Fehlermeldung von wegen Fehler bei Kompilieren: Erwartet Zeilennummer oder Sprungmarke oder Anweisung oder Anweisungsende
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
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
Sub ZeichenZaehlen()
Dim effW, effC, C As Variant
Dim maxW, maxC, W As Variant
Dim Wtxt, Ctxt As String
maxW = 5930 'Max Anzahl Worte
maxC = 5960 'Max Anzahl Zeichen
effW = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)
effC = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces)
If maxW < effW Or maxC < effC Then
If maxW < effW Then
W = effW & " (statt max " & maxW & ")"
Else
W = effW
End If
If maxC < effC Then
C = effC & " (statt max " & maxC & ")"
Else
C = effC
End If
MsgBox "ACHTUNG! Sie habeny die maximale Anzahl Worte " & _
"bzw. too many chars" & Chr(13) & Chr(13) & _
"Verwendete Anzahl WORTE: " & W & Chr(13) & _
"Verwendete Anzahl ZEICHEN: " & C
Else
W = maxW - effW
C = maxC - effC
MsgBox "* Maximale Anzahl WORTE: " & maxW & Chr(13) & _
"* Maximale Anzahl ZEICHEN: " & maxC & Chr(13) & Chr(13) & _
"* Verwendete Anzahl WORTE: " & effW & Chr(13) & _
"* Verwendete Anzahl ZEICHEN: " & effC & Chr(13) & Chr(13) & _
"Sie können noch " & W & " WORTE bzw. " & C & " ZEICHEN eingeben"
End If
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 243714
Url: https://administrator.de/forum/vba-script-ueberwacht-dokumentenlaenge-243714.html
Ausgedruckt am: 13.04.2025 um 17:04 Uhr
1 Kommentar
Hallo Quinni,
das überwachen der Useraktivität, also ob er schreibt oder nicht, geht schon mal nicht so einfach da es dafür kein Event gibt. Dies lässt sich jedoch durch überprüfen der Textlänge umgehen. Was mit VBA nicht so resourcenschonend geht, ist das kontinuierliche Überwachen. Das geht zwar mit unten stehendem Code, verbraucht dann aber etwas mehr Resourcen. Besser ginge dies mit einem richtigen Managed- oder COM-Plugin.
Probier es einfach mal aus:
(Zeile 6 und 8 kannst du nach deinen Anforderungen anpassen). In der aktuellen Konfiguration werden Leerzeichen mitgezählt, das lässt sich aber leicht ändern wenn gewünscht. Dazu muss in Zeile 14 die Konstante auf wdPropertyCharacters abgeändert werden.

Grüße Uwe
das überwachen der Useraktivität, also ob er schreibt oder nicht, geht schon mal nicht so einfach da es dafür kein Event gibt. Dies lässt sich jedoch durch überprüfen der Textlänge umgehen. Was mit VBA nicht so resourcenschonend geht, ist das kontinuierliche Überwachen. Das geht zwar mit unten stehendem Code, verbraucht dann aber etwas mehr Resourcen. Besser ginge dies mit einem richtigen Managed- oder COM-Plugin.
Probier es einfach mal aus:
(Zeile 6 und 8 kannst du nach deinen Anforderungen anpassen). In der aktuellen Konfiguration werden Leerzeichen mitgezählt, das lässt sich aber leicht ändern wenn gewünscht. Dazu muss in Zeile 14 die Konstante auf wdPropertyCharacters abgeändert werden.
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
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
Sub CheckChars()
On Error Resume Next
Dim longChars As Long, intLimit As Integer, oldLength As Long, intSecondsWait As Integer, doc As Document
Set doc = ActiveDocument
'Limit an Zeichen
intLimit = 50
' Wartezeit zwischen den Überprüfungen
intSecondsWait = 10
oldLength = 0
' kontinuierlich überwachen
While True
' aktuelle Anzahl der Zeichen
longChars = doc.BuiltInDocumentProperties(wdPropertyCharsWSpaces)
' Nur überprüfen wenn sich die Anzahl der Zeichen im Dokument geändert hat
If oldLength <> longChars Then
' Wenn die Anzahl der Zeichen das Limit überschreitet, Msgbox anzeigen
If longChars > intLimit Then
MsgBox "Achtung du hast das LIMIT von " & intLimit & " Zeichen überschritten!" & vbNewLine & "Du hast aktuell: " & longChars - intLimit & " Zeichen zu viel!", vbExclamation
End If
End If
' aktuelle Zeichenanzahl zwischenspeichern
oldLength = longChars
' Wartefunktion aufrufen
pause intSecondsWait
Wend
End Sub
' Pause-Funktion
Sub pause(t As Integer)
Start = Timer
Do While Timer < Start + t
DoEvents
Loop
End Sub
' Prüfenfunktion beim öffnen des Dokuments starten
Private Sub Document_Open()
CheckChars
End Sub
Benötige dieses Skript in meiner .dotx Vorlage
dann benötigst du aber ab jetzt das *.dotm Format wegen der Makros Grüße Uwe