Oliver Brinzing wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Hi Jo,
>
>
>> I'm trying to obtain the creation date of the
currently open document.
>> (an exception will probably be needed if the
document has not been saved yet).
>>
>
> try ...
>
> OPTION EXPLICIT
>
> Sub Main
>
> Dim oDocument as Object
> Dim oInfo as Object
> Dim oDate as Object
> Dim nDate as Long
> Dim vTime as Variant
>
> oDocument = ThisComponent
> oInfo = oDocument.DocumentInfo
>
> ' get ...
> oDate = oInfo.CreationDate
> MsgBox oDate.Day & "." &
oDate.Month & "." & oDate.Year &
" " & oDate.Hours & ":"
& oDate.Minutes
>
> ' set ...
> nDate = DateValue(Date)
> oDate.Day = Day(nDate)
> oDate.Month = Month(nDate)
> oDate.Year = Year(nDate)
> vTime = TimeValue(Time)
> oDate.Hours = Hour(vTime)
> oDate.Minutes = Minute(vTime)
> oDate.Seconds = Second(vTime)
> oInfo.CreationDate = oDate
>
> MsgBox oDate.Day & "." &
oDate.Month & "." & oDate.Year &
" " & oDate.Hours & ":"
& oDate.Minutes
>
> End Sub
>
> Oliver
>
Hi Oliver,
Your code has the kind of simplicity that I admire. Many
thanks for
helping me out! I hope one day I will also be able to see
through the
API and produce code like that.
This is what it became:
Sub GetDocCreationDate(oDoc) As Object
' Many thanks to Oliver Brinzing for helping me out on
this
Dim oInfo as Object
oInfo = oDoc.DocumentInfo
GetDocCreationDate = oInfo.CreationDate
End Sub
Sub InsertEurDate()
Dim oDate as Object
oDate = GetDocCreationDate(ThisComponent)
InsertDate(oDate.Day & "/" &
oDate.Month & "/" & oDate.Year)
End Sub
Sub InsertUSDate()
Dim oDate as Object
oDate = GetDocCreationDate(ThisComponent)
InsertDate(oDate.Month & "/" &
oDate.Day & "/" & oDate.Year)
End Sub
Sub InsertDate(sDate)
' Based on GPLd code from Winfried Rohr. I tore it to
pieces but being
able
' to reuse his code saved me a good deal of time.
Dim oDesktop
Dim oController
Dim oDocument
Dim oTextCursor
Dim oCell
Dim sCursorPosition
Dim oFrame
Dim oPageStyle
oDesktop = createUnoService(
"com.sun.star.frame.Desktop" )
oController = oDesktop.CurrentFrame.Controller
oDocument = oController.Model
oViewCursor = oController.ViewCursor
if
oDocument.supportsService("com.sun.star.text.TextDocum
ent" ) then
sCursorPosition = WhereIsCursor( oController.ViewCursor
)
if sCursorPosition = "InText" then
oTextCursor =
oDocument.getText().createTextCursorByRange(
oViewCursor )
oTextCursor.String = sDate
elseif sCursorPosition = "InTable" then
oCell = oViewCursor.Cell
oTextCursor = oCell.getText().createTextCursorByRange(
oViewCursor )
oCell.insertString( oTextCursor, sDate , FALSE )
elseif sCursorPosition = "InFrame" then
oFrame = oViewCursor.TextFrame()
oFrame.getText().insertText( oViewCursor, sDate, False
)
elseif sCursorPosition = "InHeaderOrFooter"
then
oPageStyle =
oDocument.StyleFamilies().getByName("PageStyles"
).getByName(
oViewCursor.PageStyleName )
if not IsEmpty( oPageStyle.HeaderText ) then
oText = oPageStyle.HeaderText
else
oText = oPageStyle.FooterText
end if
oTextCursor = oText.createTextCursorByRange(
oViewCursor )
oText.insertString( oTextCursor, sDate , FALSE )
end if
end if
End Sub
Sub WhereIsCursor( oViewCursor ) As String
' Based on GPLd code from Winfried Rohr. I tore it to
pieces but being
able
' to reuse his code saved me a good deal of time.
' Test if cursor is in Header or Footer
if oViewCursor.getText().ImplementationName =
"SwXHeadFootText" then
WhereIsCursor = "InHeaderFooter"
exit sub
elseif Not IsEmpty( oViewCursor.TextTable ) then
WhereIsCursor = "InTable"
exit sub
elseif Not IsEmpty( oViewCursor.TextFrame ) then
WhereIsCursor = "InFrame"
exit sub
elseif Not IsEmpty( oViewCursor.Text ) then
WhereIsCursor = "InText"
endif
End Sub
------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribe api.openoffice.org
For additional commands, e-mail: dev-help api.openoffice.org
|