incubator-ooo-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Johnny Rosenberg <gurus.knu...@gmail.com>
Subject Re: Macro or its equivalent to replace double spaces with single space.
Date Tue, 17 Jul 2012 12:09:27 GMT
2012/7/17 Johnny Rosenberg <gurus.knugum@gmail.com>:
> 2012/7/17 Srinivasulu Bhattaram <bhattarams@gmail.com>:
>> I am new to Open Office.
>> InWORD 2003 (and also in WORD 2007),
>> I have craeted macros to remove double spaces with single spaces and used
>> them extensively..
>> How to have an equivalent of it in Open Office writer?
>>
>> I do not want to go through   Find    Replace.... kind of thing.
>> seena
>
> What about letting a macro do the search and replace for you?
>
> I just wrote this one, with inspiration from ”Useful Macro Information
> For OpenOffice.org By Andrew Pitonyak”, which is a PDF that you can
> download somewhere:
>
> REM  *****  BASIC  *****
>
> Sub RemoveRedundantSpaces
>         Dim oReplace as object
>         oReplace = ThisComponent.createReplaceDescriptor()
>
>         With oReplace
>                 .SearchString = "  "
>                 .ReplaceString = " "
>         End With
>
>         While ThisComponent.ReplaceAll(oReplace)>0
>         Wend
> End Sub
>
>
> This macro also takes care of tripple spaces and… well, it just
> removes all spaces until there are only single spaces left. And it is
> fast. Really fast.
> I tested it myself, and it worked in all my test cases. Well, I didn't
> test it THAT thoroughly, but still…
>
> Much better than using the crappy macro recorder anyway. And shorter…
>
> If you write the documents yourself, there is a simple way to prevent
> double spaces in the first place, something like:
> Tools → Options for auto correction… → Click the Options tab → ☒
> Ignore double spaces
>
> You can still make double spaces if you really want to, but it's less
> likely to happen accidently.
>
>
> Kind regards
>
> Johnny Rosenberg
> ジョニー・ローゼンバーグ

Here is yet another macro, but this one replaces more things than just
double spaces, and you can easily modify the macro for your own
purposes, take a look at the comments in the code (the lines starting
with a single quote):

REM  *****  BASIC  *****

Option Explicit

Sub RemoveRedundantSpaces
	Dim oReplace As Object
	oReplace = ThisComponent.createReplaceDescriptor()

	Dim iTotalCount As Integer

'	Replaces two spaces (or more) with one single space. ”False”
'	means that regular expressions is not used.
	iTotalCount = iReplace(oReplace, "  ", " ", False)

'	A few other replacements follow below. You can easily add more
'	or remove those lines you don't want.
	iTotalCount = iTotalCount + iReplace(oReplace, " .", ".", False)
	iTotalCount = iTotalCount + iReplace(oReplace, " ,", ",", False)
	iTotalCount = iTotalCount + iReplace(oReplace, " :", ":", False)
	iTotalCount = iTotalCount + iReplace(oReplace, " ;", ";", False)
	iTotalCount = iTotalCount + iReplace(oReplace, " !", "!", False)
	iTotalCount = iTotalCount + iReplace(oReplace, " ?", "?", False)

'	Here are a few using regular expressions; the last parameter is set
'	to ”True”. The first one removes spaces at the end of paragraphs,
'	the next one removes spaces at the beginning of paragraphs.
'	Feel free to add or remove whatever you like.
	iTotalCount = iTotalCount + iReplace(oReplace, " $", "", True)
	iTotalCount = iTotalCount + iReplace(oReplace, "^ ", "", True)
	
	Select Case iTotalCount
	Case 0
		Print "No redundant spaces was found."
	Case 1
		Print "1 space was removed."
	Case Else
		Print iTotalCount & " spaces were removed."
	End Select
End Sub


Function iReplace(oDescriptor As Object, sSearch As String, sReplace
As String, RegExp As Boolean) As Integer
	With oDescriptor
		.SearchRegularExpression=RegExp
		.SearchString = sSearch
		.ReplaceString = sReplace
	End With

	Dim iCount As Integer, iSumCount As Integer
	Do
		iCount=ThisComponent.ReplaceAll(oDescriptor)
		iSumCount=iSumCount+iCount
	Loop While iCount > 0
	iReplace=iSumCount
End Function

---------------------------------------------------------------------
To unsubscribe, e-mail: ooo-users-unsubscribe@incubator.apache.org
For additional commands, e-mail: ooo-users-help@incubator.apache.org


Mime
View raw message