lobasic-macros

LibreOffice macros I use often
Log | Files | Refs

commit c63614bb3b8dfbc55a3997ffd4fb2342aff163c0
Author: Bharatvaj Hemanth <bharatvaj@yahoo.com>
Date:   Sun, 16 Jun 2024 20:58:37 +0530

Initial Commit

Diffstat:
AStandard/Module1.xba | 123+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
AStandard/dialog.xlb | 3+++
AStandard/script.xlb | 6++++++
Adialog.xlc | 6++++++
Ascript.xlc | 6++++++
5 files changed, 144 insertions(+), 0 deletions(-)

diff --git a/Standard/Module1.xba b/Standard/Module1.xba @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd"> +<script:module xmlns:script="http://openoffice.org/2000/script" script:name="Module1" script:language="StarBasic">Sub RemoveFreezedCells + s = ThisComponent.Sheets(0) + a = s.freezeAtPosition(0,1) + &apos;iFreezeRow = s.getPropertyValue(&quot;SplitRow&quot;) + &apos;MsgBox iFreezeRow +End Sub + +Rem Copy this to do the Windows Macros + +Sub RemoveExtraMergeCells + Dim oSheet as Variant + Dim cursor as Object + Dim oRange as Object + Dim oSortFields(0) as new com.sun.star.util.SortField + Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue + Dim lastRow as Integer + + oSheet = ThisComponent.Sheets(0) + + cursor = oSheet.createCursor() + cursor.gotoStartOfUsedArea(False) + cursor.gotoEndOfUsedArea(True) + lastRow = cursor.RangeAddress.EndRow + lastColumn = cursor.RangeAddress.EndColumn + + rem set the range on which to sort&apos; + + &apos;oRange = oSheet.getCellRangeByName(&quot;A2:F20&quot;) + oRange = oSheet.getCellRangeByPosition(0, 0, lastColumn, 0) + ThisComponent.getCurrentController.select(oRange) + initialColumnCount = oRange.Columns.getCount() - 1 + deletedColumns = 0 + For j = 0 To (initialColumnCount - deletedColumns) + oCell = oRange.getCellByPosition(j, 0) + con = oCell.String + If con = &quot;&quot; Then + oRange.Columns.removeByIndex(j, 1) + deletedColumns = deletedColumns - 1 + Else + Print con + End If + Next +End Sub + +Sub SortAreaName + Dim oSheet as Variant + Dim cursor as Object + Dim oRange as Object + Dim oSortFields(0) as new com.sun.star.util.SortField + Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue + Dim lastRow as Integer + + oSheet = ThisComponent.Sheets(0) + + cursor = oSheet.createCursor() + cursor.gotoStartOfUsedArea(False) + cursor.gotoEndOfUsedArea(True) + lastRow = cursor.RangeAddress.EndRow + + rem set the range on which to sort&apos; + &apos;oRange = oSheet.getCellRangeByPosition(0, 0, oSheet.Columns.Count - 1, oSheet.Rows.Count - 1) + &apos;oRange = oSheet.getCellRangeByName(&quot;A2:F20&quot;) + oRange = oSheet.getCellRangeByPosition(0, 1, 5, lastRow) + &apos;ThisComponent.getCurrentController.select(oRange) + + oSortFields(0).Field = 0 + oSortFields(0).SortAscending = True + + oSortDesc(0).Name = &quot;SortFields&quot; + oSortDesc(0).Value = oSortFields + + oRange.Sort(oSortDesc) +End Sub + +Sub SortTest + oSheet = ThisComponent.Sheets(0) + oRange = oSheet.queryContentCells(com.sun.star.sheet.CellFlags.VALUE) + + MsgBox oRange.Rows.Count + Exit Sub + + for x = 1 to oRange.Rows.Count + for y = 1 to oRange.Columns.Count + oSheet.getCellByPosition(x, y).Value = 0 + + next y + next x + +End Sub + +Sub Main + AssignVars + SortTest + rem SortAreaName +End Sub + +sub UnFreezeSelection + dim document as object + dim dispatcher as object + document = ThisComponent.CurrentController.Frame + dispatcher = createUnoService(&quot;com.sun.star.frame.DispatchHelper&quot;) + dispatcher.executeDispatch(document, &quot;.uno:FreezePanes&quot;, &quot;&quot;, 0, Array()) +end sub + +sub SortAscendingRecorded +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(&quot;com.sun.star.frame.DispatchHelper&quot;) + +rem ---------------------------------------------------------------------- +dispatcher.executeDispatch(document, &quot;.uno:SortAscending&quot;, &quot;&quot;, 0, Array()) + + +end sub +</script:module> +\ No newline at end of file diff --git a/Standard/dialog.xlb b/Standard/dialog.xlb @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd"> +<library:library xmlns:library="http://openoffice.org/2000/library" library:name="Standard" library:readonly="false" library:passwordprotected="false"/> diff --git a/Standard/script.xlb b/Standard/script.xlb @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:library PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "library.dtd"> +<library:library xmlns:library="http://openoffice.org/2000/library" library:name="Standard" library:readonly="false" library:passwordprotected="false"> + <library:element library:name="Module1"/> +</library:library> +\ No newline at end of file diff --git a/dialog.xlc b/dialog.xlc @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:libraries PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "libraries.dtd"> +<library:libraries xmlns:library="http://openoffice.org/2000/library" xmlns:xlink="http://www.w3.org/1999/xlink"> + <library:library library:name="Standard" xlink:href="$(USER)/basic/Standard/dialog.xlb/" xlink:type="simple" library:link="false"/> +</library:libraries> +\ No newline at end of file diff --git a/script.xlc b/script.xlc @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE library:libraries PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "libraries.dtd"> +<library:libraries xmlns:library="http://openoffice.org/2000/library" xmlns:xlink="http://www.w3.org/1999/xlink"> + <library:library library:name="Standard" xlink:href="$(USER)/basic/Standard/script.xlb/" xlink:type="simple" library:link="false"/> +</library:libraries> +\ No newline at end of file