Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBA Script überwacht Dokumentenlänge

Frage Microsoft Microsoft Office

Mitglied: Quinni

Quinni (Level 1) - Jetzt verbinden

15.07.2014, aktualisiert 16.07.2014, 1344 Aufrufe, 1 Kommentar, 1 Danke

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

01.
 Sub ZeichenZaehlen() 
02.
 
03.
Dim effW, effC, C As Variant 
04.
Dim maxW, maxC, W As Variant 
05.
Dim Wtxt, Ctxt As String 
06.
maxW = 5930 'Max Anzahl Worte 
07.
maxC = 5960 'Max Anzahl Zeichen 
08.
effW = ActiveDocument.BuiltInDocumentProperties(wdPropertyWords) 
09.
effC = ActiveDocument.BuiltInDocumentProperties(wdPropertyCharsWSpaces) 
10.
If maxW < effW Or maxC < effC Then 
11.
If maxW < effW Then 
12.
W = effW & " (statt max " & maxW & ")" 
13.
 
14.
Else 
15.
W = effW 
16.
End If 
17.
 
18.
If maxC < effC Then 
19.
C = effC & " (statt max " & maxC & ")" 
20.
Else 
21.
 
22.
C = effC 
23.
End If 
24.
 
25.
MsgBox "ACHTUNG! Sie habeny die maximale Anzahl Worte " & _ 
26.
"bzw. too many chars" & Chr(13) & Chr(13) & _ 
27.
"Verwendete Anzahl WORTE: " & W & Chr(13) & _ 
28.
"Verwendete Anzahl ZEICHEN: " & C 
29.
Else 
30.
 
31.
W = maxW - effW 
32.
C = maxC - effC 
33.
MsgBox "* Maximale Anzahl WORTE: " & maxW & Chr(13) & _ 
34.
"* Maximale Anzahl ZEICHEN: " & maxC & Chr(13) & Chr(13) & _ 
35.
"* Verwendete Anzahl WORTE: " & effW & Chr(13) & _ 
36.
"* Verwendete Anzahl ZEICHEN: " & effC & Chr(13) & Chr(13) & _ 
37.
"Sie können noch " & W & " WORTE bzw. " & C & " ZEICHEN eingeben" 
38.
End If 
39.
 
40.
End Sub

Mitglied: colinardo
LÖSUNG 15.07.2014, aktualisiert 16.07.2014
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.
01.
Sub CheckChars() 
02.
On Error Resume Next 
03.
    Dim longChars As Long, intLimit As Integer, oldLength As Long, intSecondsWait As Integer, doc As Document 
04.
    Set doc = ActiveDocument 
05.
    'Limit an Zeichen 
06.
    intLimit = 50 
07.
    ' Wartezeit zwischen den Überprüfungen 
08.
    intSecondsWait = 10 
09.
     
10.
    oldLength = 0 
11.
    ' kontinuierlich überwachen 
12.
    While True 
13.
        ' aktuelle Anzahl der Zeichen 
14.
        longChars = doc.BuiltInDocumentProperties(wdPropertyCharsWSpaces) 
15.
        ' Nur überprüfen wenn sich die Anzahl der Zeichen im Dokument geändert hat 
16.
        If oldLength <> longChars Then 
17.
            ' Wenn die Anzahl der Zeichen das Limit überschreitet, Msgbox anzeigen 
18.
            If longChars > intLimit Then 
19.
                MsgBox "Achtung du hast das LIMIT von " & intLimit & " Zeichen überschritten!" & vbNewLine & "Du hast aktuell: " & longChars - intLimit & " Zeichen zu viel!", vbExclamation 
20.
            End If 
21.
        End If 
22.
        ' aktuelle Zeichenanzahl zwischenspeichern 
23.
        oldLength = longChars 
24.
        ' Wartefunktion aufrufen 
25.
        pause intSecondsWait 
26.
    Wend 
27.
End Sub 
28.
 
29.
' Pause-Funktion 
30.
Sub pause(t As Integer) 
31.
    Start = Timer 
32.
    Do While Timer < Start + t 
33.
        DoEvents 
34.
    Loop 
35.
End Sub 
36.
 
37.
' Prüfenfunktion beim öffnen des Dokuments starten 
38.
Private Sub Document_Open() 
39.
    CheckChars 
40.
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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
VB for Applications
Powershell Script aus VBA heraus ausführen (2)

Frage von mcnico1978 zum Thema VB for Applications ...

VB for Applications
gelöst VBA-Makro verschwindet nach Speichern (5)

Frage von lupi1989 zum Thema VB for Applications ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (10)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (9)

Frage von 1410640014 zum Thema Backup ...