Sub dvwc
' Daniel Vogelheim wrote this
' word count macro, adopted from http://www.darwinwars.com/lunatic/bugs/oo_macros.html#swc
' displays a message box with number of characters and words in the current selection, and in the document
'
' I added that
' because I don't care about character counts, I have stripped them out:
' if you want them, replace the commented-out line at the bottom
' acb 12/6/2002
' original header:
'   horrid word count macro by Andrew Brown
'   adapted from Werner Roth
'   who wrote a macro in the old starbasic to do this
'   all I did was to wrap his logic in the new API
'  this counts the words in a selected patch of text
'
' Released by www.ooextras.org under the LGPL license. 
' See http://www.ooextras.org/license.txt for terms of license
' Original homepage: http://www.darwinwars.com/lunatic/bugs/oo_macros.html

 ' get the document, and the currently selected text
  xDocument = thiscomponent
  xSelection = xDocument.getCurrentSelection()
  nSelCount = xSelection.getCount()

  ' access document statistics
  nAllChars = xDocument.CharacterCount
  nAllWords = xDocument.WordCount

  ' initialize counts
  nSelChars = 0
  nSelWords = 0

  ' iterate over multiple selection
  for nSel = 0 to nSelCount - 1
    sText = xSelection.getByIndex(nSel).getString()

    ' count word in sText by scanning the selected text character for character
    nCount = Len(sText)
    bLastWasseparator = true 'first letter starts a word
    for i=1 to nCount
      Select Case Mid(sText,i,1)

      'Add your own separators here
      'chr(9) is a tab
      Case " ", "(", ")", chr(9)
        bLastWasseparator = true
        nSelChars = nSelChars + 1

      'chr(10) and chr(13) are for Line- and Paragraph-ends
      Case chr(10), chr(13)
        bLastWasseparator = true

      'Character found, so this is no separator
      Case Else
        'Increase the number of words only if the last character was a separator
        '(i.e., if we're at the start of a word)
        if bLastWasseparator then
          nSelWords = nSelWords + 1
        Endif
        nSelChars = nSelChars + 1

        bLastWasseparator = false

      End Select
    next i
  next nSel
' Daniel Vogelheim's messagebox is the line commented out here. Mine is the uncommented one below it
'  msgbox "Document" + chr(13) + "  chars: " + nAllChars + chr(13) + "  words: " + nAllWords + chr(13) + chr(13) + "Selection" + chr(13) + "  chars: " + nSelChars + chr(13) + "  words: " + nSelWords, 64, "Word counts in Document"
  msgbox "Document count:" + chr(13) + nAllWords +"  words. "  + chr(13) + chr(13) + "Selected text count:" + chr(13) + nSelWords  + "  words" + chr(13) + "(character count: " + nSelChars  + ")", 64, "Words in Document"
End Sub