Es ist zugegebenermaßen ein spezielles Problem, aber wer häufiger Dokumente zur Veröffentlichung schreiben muss, stolpert immer wieder darüber. Meine Frau sprach mich an, weil sie ein Buchmanuskript in verschiedenen Word-Dokumenten bearbeitet. Um einen Überblick zu erhalten, wie groß der Umfang des bisher Geschriebenen in Druckseiten sein wird, musste sie jedes Dokument öffnen, Word die Zeichen zählen lassen und dann die Druckseitenzahl berechnen. Automatisierung tut not.
Was liegt näher, als ein kleines Skript zu bemühen. Und so löst das folgende VB-Skript diese Aufgabe.
Nötige Anpassungen: Im Wesentlichen müssen nur zwei Variablen am Skriptanfang angepasst werden.
- strDokumentpfad enthält den Pfad, in dem die Dokumente stehen (Unterordner werden nicht durchsucht)
- intNormseite gibt an, wie viele Zeichen durchschnittlich auf einer Druckseite stehen
Und hier das Skript:
-
'''''''''''''''''''''''''''''''''''''''''''''''''''''
-
' Word-Zeichenzaehler.vbs
-
' Zählt die Zeichen aller Word-Dokumente im angegebenen Ordner
-
' und stellt die Werte übersichtlich dar
-
'
-
' Version: 1.0
-
' Datum: 05.01.2006
-
' Autor: Nils Kaczenski (Vorname at Nachname .de)
-
' Letzte Änderungen:
-
'
-
' Nils Kaczenski stellt dieses Skript ohne jede
-
' Gewährleistung zur Verfügung.
-
' Die Verwendung geschieht auf eigene Gefahr.
-
'
-
'''''''''''''''''''''''''''''''''''''''''''''''''''''
-
-
Option Explicit
-
Dim strFarbe '
-
Dim intNormseite '
-
Dim intZaehler '
-
Dim intGesamtzahl '
-
Dim intZeichen
-
Dim objDatei '
-
Dim objDoc
-
Dim objDokumentordner '
-
Dim objExplorer
-
Dim objFSO '
-
Dim strHTML
-
Dim objWord '
-
Dim strDokumentpfad '
-
Dim strPfad '
-
-
Set objFSO = CreateObject("Scripting.FileSystemObject")
-
Set objWord = CreateObject("Word.Application")
-
-
strDokumentpfad = "D:\Dokumente\Buch\Kapitel"
-
intNormseite = 1500
-
-
strHTML = "<HTML><HEAD><TITLE>Word-Zeichenzähler</TITLE>" _
-
& "<STYLE type=""text/css""><!– " _
-
& "p, td, th {font-family:verdana;font-size:10pt;}" _
-
& " –></STYLE></HEAD>" _
-
& "<BODYonload=""this.focus();"">" _
-
& "<P><B>Anzahl der Zeichen in allen Word-Dokumenten in " & strDokumentpfad & "</B></P><BR>" _
-
& "<TABLE WIDTH=""100%"" CELLSPACING=""0"">" _
-
& "<TH align=""left"">Dokument</TH><TH align=""right"">Zeichen</TH><TH align=""right"">Normseiten</TH>"
-
-
intGesamtzahl = 0
-
-
Set objDokumentordner = objFSO.GetFolder(strDokumentpfad)
-
For Each objDatei In objDokumentordner.Files
-
If Right(LCase(objDatei.Path), 3) = "doc" AND Not Left(objDatei.Name, 2) = "~$" Then
-
ZaehleWorter objDatei.Path, objDatei.Name
-
End If
-
Next
-
-
strHTML = strHTML & "<TR><TD><B>Gesamt über alle Dokumente</B></TD>" _
-
& "<TD align=""right""><B>" & intGesamtzahl & "</B></TD>" _
-
& "<TD align=""right""><B>" & Round(intGesamtzahl/intNormseite, 1) & "</B></TD></TR>" _
-
& "</TABLE><BR></BODY></HTML>"
-
-
Set objExplorer = WScript.CreateObject("InternetExplorer.Application")
-
objExplorer.Navigate "about:blank"
-
objExplorer.ToolBar = 0
-
objExplorer.StatusBar = 0
-
objExplorer.Width=700
-
objExplorer.Height = 400
-
objExplorer.Left = 0
-
objExplorer.Top = 0
-
objExplorer.Visible = 1
-
objExplorer.document.writeln(strHTML)
-
-
-
Sub ZaehleWorter (strPfad, strName)
-
intZaehler = intZaehler+1
-
If intZaehler MOD 2 = 0 Then
-
strFarbe = "lightgrey"
-
Else
-
strFarbe = "white"
-
End If
-
' Dokumentname
-
strHTML = strHTML & "<TR><TD bgcolor=""" & strFarbe _
-
& """>" & strName & "</TD>"
-
Set objDoc = objWord.Documents.Open(strPfad)
-
intZeichen = objWord.ActiveDocument.Characters.Count
-
intGesamtzahl = intGesamtzahl + intZeichen
-
objDoc.Close
-
' Zeichen
-
strHTML = strHTML & "<TD bgcolor=""" & strFarbe _
-
& """ align=""right"">" & intZeichen & "</TD>"
-
' Normseiten
-
strHTML = strHTML & "<TD bgcolor=""" & strFarbe _
-
& """ align=""right"">" & Round(intZeichen/intNormseite,1) & "</TD></TR>"
-
-
End Sub
http://faq-o-matic.net/?p=657