Syntax | Po polsku | English | Zamiast CV | Polecam | Licznik znaków | Makra
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
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.
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.
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.
Więcej makr — Piotr Bieńkowski — More macros
Ostatnio aktualizowano: 02 stycznia 2011