2012/10/27 . <Look@ebookring.net>:
On 10/27/2012 01:29 PM, . wrote:
On 10/27/2012 01:06 PM, Tom Davies wrote:
Hi :)
Can you copy&paste the macro's code into a reply as text? If we could see the code then
some people here might be able to spot the error.
Good luck and regards from
Tom :)
Here's the code-
REM ***** BASIC *****
Sub Main
End Sub
sub Insert_Line_and_Date
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "GraphicName"
args1(0).Value = ""
args1(1).Name = "IsSimpleLine"
args1(1).Value = true
dispatcher.executeDispatch(document, ".uno:InsertGraphicRuler", "", 0,
args1())
rem ----------------------------------------------------------------------
dim args2(5) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Type"
args2(0).Value = 0
args2(1).Name = "SubType"
args2(1).Value = 0
args2(2).Name = "Name"
args2(2).Value = ""
args2(3).Name = "Content"
args2(3).Value = "0"
args2(4).Name = "Format"
args2(4).Value = 5122
args2(5).Name = "Separator"
args2(5).Value = " "
dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Text"
args3(0).Value = ", "
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Template"
args4(0).Value = "Heading 1"
args4(1).Name = "Family"
args4(1).Value = 2
dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args4())
end sub
________________________________
From: . <Look@eBookRing.net>
To: users@global.libreoffice.org
Sent: Saturday, 27 October 2012, 17:59
Subject: [libreoffice-users] Date changes to a 5 digit number
I made a macro that inserts the date (fixed) as (for example) "July 30,
2012,"
However, after running the macro a fews time the date then appears as
some 5 digit number.
How do I fix this date problem?
--
www.eBookRing.net
The designer and maker of the original eBookRing
The perfect stand for eReaders, iPads, iPhones, tablet computers and other electronic
devices.
Patent Pending
--
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
--
www.eBookRing.net
The designer and maker of the original eBookRing
The perfect stand for eReaders, iPads, iPhones, tablet computers and other electronic devices.
Patent Pending
Looks like you actually used that crappy macro recorder…
Maybe this macro could give you a hint or two, I paste it from the
AndrewMacro.pdf document:
'******************************************************************
'Author: Andrew Pitonyak
'uses: FindCreateNumberFormatStyle
Sub InsertDateIntoCell
Dim oSelection 'The currently selected cell
Dim oFormats
'Available formats
REM Verify that this is a Calc document
If ThisComponent.SupportsService("com.sun.star.sheet.SpreadsheetDocument")
Then
oSelection = ThisComponent.CurrentSelection
Rem Set the time, date, or date and time
'oSelection.setValue(DateValue(Now()))
'Set only the date
'oSelection.setValue(TimeValue(Now()))
'Set only the time
oSelection.setValue(Now())
'Set the date and time
Rem I could use FunctionAccess to set the date and/or time.
'Dim oFunction
'Use FunctionAccess service to call the Now function
'oFunction = CreateUnoService("com.sun.star.sheet.FunctionAccess")
'oFunction.NullDate = ThisComponent.NullDate
'oSelection.setValue(oFunction.callFunction("NOW", Array()))
Rem Set the date number format to default
oFormats = ThisComponent.NumberFormats
Dim aLocale As New com.sun.star.lang.Locale
oSelection.NumberFormat = oFormats.getStandardFormat(_
com.sun.star.util.NumberFormat.DATETIME, aLocale)
Rem Set the format to something completely different
'oSelection.NumberFormat = FindCreateNumberFormatStyle(_
' "YYYYMMDD.hhmmss", doc)
Else
MsgBox "This macro must be run in a spreadsheet document"
End If
End Sub
Function FindCreateNumberFormatStyle (_sFormat As String, Optional
doc, Optional locale)
Dim oDoc As Object
Dim aLocale As New com.sun.star.lang.Locale
Dim oFormats As Object
Dim formatNum As Integer
oDoc = IIf(IsMissing(doc), ThisComponent, doc)
oFormats = oDoc.getNumberFormats()
'If you choose to query on types, you need to use the type
'com.sun.star.util.NumberFormat.DATE
'I could set the locale from values stored at
'http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt
'http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html
'I use a NULL locale and let it use what ever it likes.
'First, see if the number format exists
If ( Not IsMissing(locale)) Then
aLocale = locale
End If
formatNum = oFormats.queryKey (sFormat, aLocale, TRUE)
MsgBox "Current Format number is" & formatNum
'If the number format does not exist then add it
If (formatNum = -1) Then
formatNum = oFormats.addNew(sFormat, aLocale)
If (formatNum = -1) Then formatNum = 0
MsgBox "new Format number is " & formatNum
End If
FindCreateNumberFormatStyle = formatNum
End Function
I made a very short one that only inserts the date number into a
pre-formatted cell (which on the other hand doesn't solve your
problem, but here it is anyway…):
REM ***** BASIC *****
Option Explicit
Sub InsertDate
Dim oCell As Object
oCell=ThisComponent.getCurrentController().getSelection()
If oCell.SupportsService("com.sun.star.sheet.SheetCell") Then '
Selection is a single cell
oCell.setValue(Now())
Else
MsgBox "Please do that elsewhere!"
EndIf
End Sub
Sometimes it doesn't have to be more complicated than that…