Hi Drew :)
Thanks for that.  Some of it even makes sense to me.  It looks completely 
different from the excel one.  A fresh re-write rather than a translation.  I'm 
hoping that a few more of these real-world examples will help me make sense of 
the various guides on macros someday.
Thanks and regards from
Tom :)


--- On Fri, 3/2/12, drew <d...@baseanswers.com> wrote:

From: drew <d...@baseanswers.com>
Subject: Re: [libreoffice-users] Renaming Tabs in a spreadsheet in bulk.
To: users@global.libreoffice.org
Date: Friday, 3 February, 2012, 22:14

On Fri, 2012-02-03 at 16:06 +0000, Gordon Burgess-Parker wrote:
> On 03/02/2012 15:50, Tom Davies wrote:
> > Hi :)
> > Have you opened the ods as an archived-file / zip-file?  Are the tab-labels 
> > in the contents.xml in there?
> > Regards from
> > Tom :)
> >
> >
> >
> 
> I tried adding this Macro:
> 
> Sub Rename_Tabs()
>   Dim x As Long, suffix As String
>   Dim v as Variant
>   suffix = " 12"
>   v = Split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", ",")
> *For x = 1 To Worksheets.Count*
>       If Not IsError(Application.Match(Left(Sheets(x).Name, 3), v, 0)) Then
>       Sheets(x).Name = Left(Sheets(x).Name, 3) & suffix
>       End If
>   Next
> End Sub

Ok - well, here is a quick replacement, should do the trick for you

Sub Rename_Tabs()
  Dim x As Long, suffix As String
  Dim v as Variant
  Dim CurrentFile as object
  Dim WorkSheets as Variant
  
  ' LibreOffice ships with a collection of useful macros in a libary
  ' TOOLS which must be loaded explicity
  BasicLibraries.loadLibrary("Tools")

  suffix = " 12"
  v = Split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", ",")

  CurrentFile = thisComponent
  ' thisComponent is a pseudo variable that always returns the current
  ' document on your desktop
 
  ' from here on out it should be fairy clear
  '
  WorkSheets = CurrentFile.getSheets
  
  For x = 0 To Worksheets.Count -1
  
    ' the IndexinArry function in 'tools' is similar to MATCH in VBA
    If IndexinArray(Left(WorkSheets(x).Name, 3), v) <> -1 Then
      WorkSheets(x).Name = Left(WorkSheets(x).Name, 3) & suffix
    End If
  Next  

End Sub

Best of luck,

//drew

> 
> But it fell over on the bolded portion. I'm not a macro person and this 
> was copied from one in Excel that worked OK.
> Anyone tell me what I need to replace the bolded bit with?
> 



-- 
For unsubscribe instructions e-mail to: users+h...@global.libreoffice.org
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted

-- 
For unsubscribe instructions e-mail to: users+h...@global.libreoffice.org
Problems? http://www.libreoffice.org/get-help/mailing-lists/how-to-unsubscribe/
Posting guidelines + more: http://wiki.documentfoundation.org/Netiquette
List archive: http://listarchives.libreoffice.org/global/users/
All messages sent to this list will be publicly archived and cannot be deleted

Reply via email to