Date: prev next · Thread: first prev next last
2012 Archives by date, by thread · List index


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 <drew@baseanswers.com> wrote:

From: drew <drew@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+help@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+help@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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.