Syntax | Po polsku | English | Zamiast CV | Polecam | Licznik znaków | Makra


Makro liczące znaki
- A character counting macro

Jak instalować? | Installation tips | Co poprawiono | Bug fixes .

Nowość: Liczenie znaków w wielu otwartych dokumentach:
New: Count characters in many open documents:


W Polsce wielu, jeśli nie większość tłumaczy otrzymuje honorarium na podstawie ilości znaków w przetłumaczonym tekście. Najpopularniejszy (niestety) edytor tekstu to MS Word. W Menu "Narzędzia" ma on opcję "Statystyka wyrazów". Po co więc jeszcze makro? Niestety, Word nie liczy znaków znajdujących się w polach tekstowych i autokształtach zawierających tekst. Poniższe makro powstało w odpowiedzi na pilną potrzebę ustalenia ilości znaków w dokumencie składającym się w większości z pól tekstowych, czego nie potrafiła zrobić agencja, dla której wykonałem to tłumaczenie. Dla pożytku innych tłumaczy i agencji, poniżej zamieszczam kod źródłowy makra. Bardzo proszę o przestrzeganie warunków podanych w komentarzach.

Makro liczy również znaki w polach tekstowych obiektów typu rysunek, po otwarciu obiektu do edycji.

Sub Characters()
' Characters Makro
' Makro zapisane onegdaj przez Piotr Bieńkowski
' 
' To makro nie może być przedmiotem obrotu handlowego
' Kopiowanie i dystrybucja wyłącznie bez pobierania opłat
' Proszę nie usuwać komentarzy.
' This macro can be freely copied and distributed.
' No fees can be charged for copying and distribution
' Do not remove the comment lines

       charcount = ActiveDocument.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces, IncludeFootnotesAndEndnotes:=True)
       scount = ActiveDocument.Shapes.Count
       'MsgBox ActiveDocument.Shapes.Count
       znaki = 0
       For x = 1 To scount
       ActiveDocument.Shapes(x).Select
       If ActiveDocument.Shapes(x).TextFrame.HasText = True Then
       ActiveDocument.Shapes(x).TextFrame.TextRange.Select
       chars = Selection.Characters.Count
       chars = chars - 2
       znaki = znaki + chars
       End If
       Next x
       znaki = znaki + charcount
       InputBox "We wszystkich polach tekstowych jest znaków:", , znaki

End Sub

Now a little bit in English
This macro was born out of a need to count characters in a MS Word 97 document containing text fields (Word does not normally count these), so that the agency for whom I did the translation could pay me for my job. This macro is published here for the benefit of other translators and agencies. Please abide by the conditions set out in the comment lines. If you prefer English text in the message box, please replace the last line of the macro before End Sub with the following:

       InputBox "The character count with text fields is:", , znaki

Liczenie znaków w wielu otwartych dokumentach

Count characters in many open files

Oto kod udoskonalonego makra:

Sub LicznikWsadowy()
ReturnValue = Shell("EXCEL.EXE", 1)   ' Run Microsoft Excel.
    
For z = 1 To Application.Documents.Count
Application.Documents(z).Activate
charcount = ActiveDocument.ComputeStatistics(Statistic:=wdStatisticCharactersWithSpaces, IncludeFootnotesAndEndnotes:=True)
scount = ActiveDocument.Shapes.Count
'MsgBox ActiveDocument.Shapes.Count
znaki = 0
For x = 1 To scount
ActiveDocument.Shapes(x).Select
If ActiveDocument.Shapes(x).TextFrame.HasText = True Then
ActiveDocument.Shapes(x).TextFrame.TextRange.Select
chars = Selection.Characters.Count
znaki = znaki + chars
End If
Next x
znaki = znaki + charcount
NazwaPliku = ActiveDocument.Name
AppActivate ReturnValue
SendKeys NazwaPliku
SendKeys "{Tab}"
SendKeys znaki
SendKeys "{ENTER}"
SendKeys "{LEFT}"
Next z
End Sub

Użycie:Jeżeli Excel jest uruchomiony, wyłącz go. Otwórz dowolną liczbę dokumentów do policzenia. Uruchom makro. Makro włączy arkusz Excel i wpisze do niego liczbę znaków z uwzględnieniem pól tekstowych. Aby zamknąć wszystkie pootwierane dokumenty bez zapisywania, użyj makra CloseAllNoSave, dostępnego tu. Makro LicznikWsadowy dostępne w szablonie. Działanie makra sprawdzone tylko w programie Word 2002 (XP). Będę wdzięczny, jeśli możesz potwierdzić działanie tego makra w innych wersjach MS Office.

Usage:Exit Excel if it is running. Open as many documents for counting as you want. Run the macro. It will launch Excel and type the character count for each file (including text boxes). To close all open documents without saving, use the CloseAllNoSave macro, available here. The „LicznikWsadowy” (batch count) macro can also be found in the template. This macro was tested only in Word 2002 (XP). Ill appreciate feedback on whether you could run it without errors in other versions of MS Office.


Jak zainstalować to makro?

Pobierz zamieszczony tutaj szablon licznik.dot (lub makra.dot), a następnie skopiuj go do foldera szablonów programu Word. (Zapisz go podobnie jak plik licznik.bas — bezpośrednie kliknięcie na łączu szablonu spowoduje wyświetlenie obiektu programu Word w oknie przeglądarki, jeśli jest nią Internet Explorer). Aby makro było dostępne, trzeba szablon dołączyć za pomocą polecenia „Szablony i Dodatki” w menu „Narzędzia”. W tym szablonie makro nazywa się „LicznikZnakowZPolami”. Makro będzie dostępne po naciśnięciu Alt+F8, pod nazwą „LicznikZnakowZPolami”. Podobnie można uruchamiać makra z szablonu „makra.dot”.

Makro można również przypisać do skrótu klawiszowego, lub umieścić jako przycisk na pasku narzędzi. Aby się dowiedzieć jak to zrobić, zapytaj spinacza, albo inną kreaturę. (;-)

Oczywiście zawsze chętnie odpowiem na wszelkie pytania, uwagi, propozycje i prośby dotyczące tego lub innych zamieszczonych tu makr.


How to install this macro?

Dowload the licznik.dot template. Use the popup menu command to save the template, cause if you click it directly in Internet Explorer, a Word object will be displayed in MSIE's frame. If you use a different browser, use an equivalent procedure instead of directly clicking the link. Copy the template to Word's template folder and include it using the 'Templates' command in the 'Tools' menu. The macro's name in this template is „LicznikZnakowZPolami”. To change it to something more meaningful in your language, you need to edit the template.

You can also assign the macro to a keyboard shortcut, or place it as a button on the toolbar. To learn how to do that, ask the paper clip, or another lizard (;-).

I will be happy to have your feedback about this and other macros that I published here.


Co poprawiono

  1. Usunięto błąd powodujący bardzo zawyżoną liczbę znaków, gdy pola tekstowe znajdowały się w komórkach tabeli.
  2. Usunięto błąd powodujący liczenie dwóch znaków za dużo w każdym polu tekstowym.

Bug fixes

  1. Fixed a bug resulting in an excessive character count, when the text boxes were placed in table cells.
  2. Fixed a bug that added two characters to the actual character count in a text box.

Więcej makrPiotr BieńkowskiMore macros

Ostatnio aktualizowano: 02 stycznia 2011