லிபர் ஆஃபிஸ் கால்க்-தொடர்-63- மேக்ரோவை உருவாக்குதல்

லிபர் ஆஃபிஸ் கால்க்கில் திரும்ப திரும்ப செய்யப்படும் செயல்களை கட்டளைவரி நிரல் தொடர்களாக சேமித்துக்கொண்டு பின்னாட்களில் பயன்படுத்திகொள்ள உதவுவதே மேக்ரோவாகும் இது நெகிழ்வுதன்மையுடனும் சாதாரணமானதும் சிக்கலானதுமான செயல்களை தானியங்கியாக செயல்படுத்தஅனுமதிக்க கூடியதாகும்.
இதனை ஒரு சிறு எடுத்துகாட்டுடன் பார்ப்போம். முதலில் லிபர் ஆஃபிஸ் கால்க்கில் ஒரு விரிதாளினை திறந்து கொள்க அதில் கலண் எண்கள் A1 முதல் C3 வரை 1,2,3,4,5,6,7,8,9என்றவாறு எண்களை உள்ளீடு செய்து கொள்க பின்னர் இந்த லிபர் ஆஃபிஸ் கால்க்கின் விரிதாளில் கலண் எண்கள் A1 முதல் C3 உள்ள எண்களை கலண்எண் A3 -ல் உள்ள எண் 3 ஆல் பெருக்கவேண்டும் என கொள்வோம்
1.அதற்காக முதலில் கலண்எண் A3 -ஐ தெரிவுசெய்துகொண்டு திரையின் மேலே கட்டளை பட்டியிலிருந்து Edit=>copy=>என்றவாறு கட்டளைகளை செயற்படுத்துக அல்லது Ctrl+ C என்றவாறு விசைகளை சேர்த்து அழுத்துக.
2.பின்னர் கலண்எண்கள் A1 முதல் C3 வரை தெரிவுசெய்துகொள்க
3.அதன்பின்னர் மேலே கட்டளை பட்டியிலிருந்து Tools=>Macros=>Record Macro=> என்றவாறு கட்டளைகளை செயற்படுத்துக உடன் Record Macro என்ற சிறு உரையாடல் பெட்டி stop recordingஎன்ற பொத்தானுடன் நாம் செய்யும் செயலை பதிவுசெய்ய தயாராக இருக்கும்.
4 பின்னர் திரையின் மேலே கட்டளை பட்டியிலிருந்து Edit=>Paste Special=>என்றவாறு கட்டளைகளை செயற்படுத்துக
5 உடன் Paste Special என்ற உரையாடல் பெட்டியொன்று திரையில் தோன்றும் அதில் operations என்பதன் கீழுள்ள multiply என்ற வாய்ப்பை தெரிவுசெய்துகொண்டு ok என்ற பொத்தானை தெரிவுசெய்து சொடுக்குக.உடன்கலண்A1 முதல் C3 வரைஉள்ள கலண்களின் எண்கள் அனைத்தும்3 ஆல் பெருக்கிய விடையாக மாறிவிடும்

1

6.பின்னர் Record Macro என்ற உரையாடல் பெட்டியில் stop recordingஎன்ற பொத்தானை தெரிவு செய்து சொடுக்குக உடன்Record Macro என்ற உரையாடல் பெட்டிதிரையில் மூடப்பட்டு Libre office.org basic macrosஎன்ற உரையாடல் பெட்டி தோன்றிடும்
7அதில்macro name என்பதில் காலியாகவும் save macro in என்பதன் கீழ் untitled1 என்ற தலைப்புடன் தெரிவுசெய்யபட்டும் இருக்கும் நாம் புதியதாக பதிவுசெய்யவிருப்பதால் new moduleஎன்ற பொத்தானை தெரிவுசெய்து சொடுக்குக.
8 உடன் new moduleஎன்ற சிறு உரையாடல் பெட்டியொன்று திரையில் தோன்றிடும் அதில் nameஎன்தன்கீழ் module1என இயல்புநிலையில் இருக்கும் இந்தபெயரை ஆமோதித்து கொள்க அல்லது வேறுபெயரை உள்ளீடு செய்து okஎன்ற பொத்தானை தெரிவுசெய்து சொடுக்குக.
9அதன் பின்னர் libre office.org basic macrosஎன்ற உரையாடல் பெட்டியில் நாம் தற்போது பெயரிட்ட இந்தmodule1 என்பதை தெரிவுசெய்துகொண்டு macro name என்பதன்கீழுள்ள உரைப்பெட்டியில் paste multiplyஎன்ற பெயரை உள்ளீடு செய்து saveஎன்ற பொத்தானை தெரிவு செய்து சொடுக்குக. உடன் நாம் உருவாக்கிய இந்த module1 எனும் மேக்ரோவானது Untitled 1என்பதன்கீழ் Standard libraryஎன்ற செந்தர நூலகத்தின்கீழ் அமர்ந்திருப்பதை காணலாம்
10.பின்னர் மேலே கட்டளைபட்டியிலிருந்து tools=>macros=>organize macros=>libreoffice.org basic=> என்றவாறு கட்டளைகளை செயற்படுத்துக. உடன்தோன்றிடும் libre office.org basic macrosஎன்றஉரையாடல் பெட்டி யில் paste multiplyஎன்பதை தெரிவுசெய்துகொண்டு editஎன்ற பொத்தானை தெரிவு செய்து சொடுக்குதல் செய்தால் மேலேகூறியவாறு நம்மால் module1 எனும் பெயரில் பதிவுசெய்யப்பட்ட மேக்ரோவின் கட்டளைவரி நிரல்தொடரானது பின்வருமாறு இருக்கும்
sub PasteMultiply
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(5) as new com.sun.star.beans.PropertyValue
args1(0).Name = “Flags”
args1(0).Value = “A”
args1(1).Name = “FormulaCommand”
args1(1).Value = 3
args1(2).Name = “SkipEmptyCells”
args1(2).Value = false
args1(3).Name = “Transpose”
args1(3).Value = false
args1(4).Name = “AsLink”
args1(4).Value = false
args1(5).Name = “MoveMode”
args1(5).Value = 4
dispatcher.executeDispatch(document, “.uno:InsertContents”, “”, 0, args1())
end sub
அதேபோன்று நம்முடைய சொந்த செயலியைகூட இவ்வாறு மேக்ரோ கட்டளை வரி நிரல்தொடராக நாமே எழுதி செயற்படுத்தமுடியும் அதற்காக திரையின் மேலே கட்டளை பட்டியிலிருந்து tools=> macros=> organize macros=>libreoffice.org basic=> என்றவாறு கட்டளைகளை தெரிவுசெய்து சொடுக்குதல் செய்து செயற்படுத்துக. உடன் தோன்றிடும் libre office.org basic macrosஎன்ற உரையாடல் பெட்டியில் organiserஎன்ற பொத்தானை தெரிவுசெய்து சொடுக்குக பின்னர் தோன்றிடும் libre office.org basic macros organiserஎன்ற உரையாடல் பெட்டியில் Libraries என்ற தாவிபொத்தானின் திரையில் newஎன்ற பொத்தானை தெரிவுசெய்து சொடுக்குக

2

அதன்பின்னர் தோன்றிடும்new library என்ற உரையாடல் பெட்டியில் nameஎன்பதன்கீழ் authors calc macros எனஉள்ளீடுசெய்துகொண்டு ok என்றபொத்தானை தெரிவுசெய்து சொடுக்குக.

3

பிறகு libre office.org basic macrosஎன்ற உரையாடல் பெட்டியில் authors calc macrosஎன்றவாறு பெயரை தெரிவுசெய்து கொண்டு editஎன்ற பொத்தானை தெரிவுசெய்து சொடுக்குதல் செய்தால் கால்க்கானது தானாகவே Module1எனும் பெயரில்ஒரு Module ஐஉருவாக்கி Mainஎனும் மேக்ரோ பெயருடன் வைத்திருக்கும் அதில்
REM ***** BASIC *****
Sub Main
End Sub
என்றஆரம்ப, முடிவு வரியுடன் திரையின் தோற்றம் அமையும் அதில் பின்வரும் Listing 2.இல் உள்ளவாறு கட்டளை வரிகளைதவறில்லாமல் உள்ளீடு செய்துகொண்டு Module1எனும் பெயரில் சேமித்துகொள்க
Listing 2. Function that returns five.
REM ***** BASIC *****
Option Explicit
Sub Main
End Sub
Function NumberFive()
NumberFive = 5
End Function
கால்க்கின் ஏதேனுமொரு கலணில் =NumberFive()என்றவாறுவாய்ப்பாட்டை உள்ளீடு செய்து கொண்டு உள்ளீட்டு விசையை அழுத்தியவுடன் அதற்கான விடை மேக்ரோவில் நாம்சேமித்தவாறு 5 என கிடைக்கின்றது
பின்னர் மேலே கட்டளைபட்டியிலிருந்து tools=>options > libreOffice.org > Security > Macro Security=> என்றவாறு கட்டளைகளை செயற்படுத்துக உடன் நாம் நம்முடைய கணினியில் ஏற்கனவே பாதுகாப்பு அமைப்பை எவ்வாறு அமைத்திருந்தோமோ அதற்கேற்றவாறு libreoffice.org-security warning என்ற எச்சரிக்கை உரையாடல்பெட்டியொன்று திரையில் தோன்றிடும் அதில் Enable maros என்பதை தெரிவுசெய்தால் இந்த மேக்ரோவை இயக்க அனுமதிக்கும் disable macros என்றபொத்தானை தெரிவுசெய்து சொடுக்கினால் மேக்ரோவை இயக்க அனுமதிக்காது
எச்சரிக்கை மேக்ரோ வழியாக நச்சுநிரல்தொடர் நம்முடைய கணினிக்குள் உட்புகவாய்ப்பு உள்ளது அதனால் Enable macros என்பதை தெரிவுசெய்யாமல் இருப்பதே நல்லது

4

இதனை தொடர்ந்து நாம் நம்முடைய விரிதாளினை மூடிவெளியேறிபின்னர் மீண்டும் லிபர் ஆஃபிஸ் கால்க்கின் விரிதாளினை தோன்றிடசெய்தால் நாம் உருவாக்கிய NumberFive()எனும் மேக்ரோவானது AuthorsCalcMacros libraryஎன்ற இடத்தில் மட்டுமே சேமிக்கப்பட்டிருக்கும் அதனால் இது லிபரா் ஆஃபிஸ் கால்க் விரிதாளின் வழக்கமான வாய்ப்பாடு போன்று தோன்றாது
அதற்காக மேலே கட்டளைபட்டியிலிருந்து tools=> macros=> organize macros=>libreoffice.org basic=> என்றவாறு கட்டளைகளை செயற்படுத்துக. உடன் தோன்றிடும் libre office.org basic macrosஎன்ற உரையாடல் பெட்டியில்NumberFive()என்பதை தெரிவுசெய்துகொண்டு Edit என்ற பொத்தானை தெரிவுசெய்து சொடுக்குக பின்னர்விரியும் கட்டளை வரித்திருத்த திரையில் பின்வரும் கட்டளை வரிவாயிலாக name of NumberFiveஎன்பதை NumberFive_Implementationஎன பெயரை மாற்றியமைத்திடுக
Listing 3. Change the name of NumberFive to NumberFive_Implementation
Function NumberFive_Implementation()
NumberFive_Implementation() = 5
End Function
அதன்பின்னர் Basic Integrated Development Environment (IDE)எனும் திரையில் சுட்டியை கருவிகளின் பொத்தானின் மீது மேலூர்தல் செய்தவுடன் தோன்றிடும் கருவிகளின் பொத்தான்களில் Macroஎனும் பொத்தானை தெரிவுசெய்து சொடுக்குக உடன் LibreOffice Basic Macrosஎனும் உரையாடல் பெட்டிதிரையில் தோன்றிடும்

5

அதில் CalcTestMacros எனும் ஆவணத்தில்Standard library எனும் செந்தர நூலகத்தை தெரிவுசெய்து கொண்டு Newஎனும் பொத்தானை தெரிவுசெய்து சொடுக்குதல் செய்து new module என்றவாறு உருவாக்குக அதற்குCalcFunctions என்றவாறு ஒரு பொருத்தமான பெயரினை இட்டு OK எனும் பொத்தா்னை தெரிவுசெய்து சொடுக்குக உடன் கால்க் ஆனது தானாகவேMain எனும் ஒரு மேக்ரோவினை உருவாக்கி நாம் கட்டளைவரிகளை உள்ளீடு செய்வதற்காக தயாராக திரையில் தோன்றிடசெய்திடும்அதில்
Listing 4. Change the name of NumberFive to NumberFive_Implementation.
Function NumberFive()
If NOT BasicLibraries.isLibraryLoaded(“AuthorsCalcMacros”) Then
BasicLibraries.LoadLibrary(“AuthorsCalcMacros”)
End If
NumberFive = NumberFive_Implementation()
End Function
என்றவாறு கட்டளைவரிகளை உள்ளீடு செய்துகொண்டு இதனை சேமித்து வெளியேறியபின் மீண்டும் கால்க் விரிதாளினை தோன்றிடசெய்தால் இந்த NumberFive()எனும் செயலி வழக்கமான செயலிபோன்று செயல்படுவதை காணலாம்
மேலும் பின்வரும் கட்டளைவரிகளின் வாயிலாக பல தருக்கங்களை கொண்டு கூடுதல் காணும் நிகழ்வில் பூஜ்ஜியத்திற்கு குறைவாக இருந்தால் விட்டுவிடுமாறு செய்திடலாம்
Listing 5. PositiveSum calculates the sum of the positive arguments.
Function PositiveSum(Optional x)
Dim TheSum As Double
Dim iRow As Integer
Dim iCol As Integer
TheSum = 0.0
If NOT IsMissing(x) Then
If NOT IsArray(x) Then
If x > 0 Then TheSum = x
Else
For iRow = LBound(x, 1) To UBound(x, 1)
For iCol = LBound(x, 2) To UBound(x, 2)
If x(iRow, iCol) > 0 Then TheSum = TheSum + x(iRow, iCol)
Next
Next
End If
End If
PositiveSum = TheSum
End Function
அதைவிட பின்வருமாறு ஒரேயொரு தருக்கத்தை செயல்படுத்துவது எளிதான செயலாகும்
Listing 6. TestMax accepts two arguments and returns the larger of the two.
Function TestMax(x, y)
If x >= y Then
TestMax = x
Else
TestMax = y
End If
End Function
பின்வரும் கட்டளைவரிவாயிலாக விரிதாளின் ஒருகலணை நேரடியாக அனுகிடலாம்
Listing 7. Add cell A2 in every sheet.
Function SumCellsAllSheets()
Dim TheSum As Double
Dim i As integer
Dim oSheets
Dim oSheet
Dim oCell
oSheets = ThisComponent.getSheets()
For i = 0 To oSheets.getCount() – 1
oSheet = oSheets.getByIndex(i)
oCell = oSheet.getCellByPosition(0, 1) ‘ GetCell A2
TheSum = TheSum + oCell.getValue()
Next
SumCellsAllSheets = TheSum
End Function
மேலும் பின்வரும் கட்டளைவரிவாயிலாக விரிதாளின் ஒவ்வொரு தாளிலும் ஐந்து ஐந்தாக கலண்களை சேர்க்கலாம்
Listing 8. Add cell A2:C5 in every sheet
Function SumCellsAllSheets()
Dim TheSum As Double
Dim iRow As Integer, iCol As Integer, i As Integer
Dim oSheets, oSheet, oCells
Dim oRow(), oRows()
oSheets = ThisComponent.getSheets()
For i = 0 To oSheets.getCount() – 1
oSheet = oSheets.getByIndex(i)
oCells = oSheet.getCellRangeByName(“A2:C5”)
REM getDataArray() returns the data as variant so strings
REM are also returned.
REM getData() returns data data as type Double, so only
REM numbers are returned.
oRows() = oCells.getData()
For iRow = LBound(oRows()) To UBound(oRows())
oRow() = oRows(iRow)
For iCol = LBound(oRow()) To UBound(oRow())
TheSum = TheSum + oRow(iCol)
Next
Next
Next
SumCellsAllSheets = TheSum
End Function
இரண்டு நெடுவரிசைகளில் உள்ள தரவுகளை பின்வரும் கட்டளை வரிவாயிலாக வரிசைபடுத்தி அடுக்கிவைத்திடலாம்
Listing 9. Sort cells A1:C5 on Sheet 1.
Sub SortRange
Dim oSheet ‘ Calc sheet containing data to sort.
Dim oCellRange ‘ Data range to sort.
REM An array of sort fields determines the columns that are
REM sorted. This is an array with two elements, 0 and 1.
REM To sort on only one column, use:
REM Dim oSortFields(0) As New com.sun.star.util.SortField
Dim oSortFields(1) As New com.sun.star.util.SortField
REM The sort descriptor is an array of properties.
REM The primary property contains the sort fields.
Dim oSortDesc(0) As New com.sun.star.beans.PropertyValue
REM Get the sheet named “Sheet1”
oSheet = ThisComponent.Sheets.getByName(“Sheet1”)
REM Get the cell range to sort
oCellRange = oSheet.getCellRangeByName(“A1:C5”)
REM Select the range to sort.
REM The only purpose would be to emphasize the sorted data.
‘ThisComponent.getCurrentController.select(oCellRange)
REM The columns are numbered starting with 0, so
REM column A is 0, column B is 1, etc.
REM Sort column B (column 1) descending.
oSortFields(0).Field = 1
oSortFields(0).SortAscending = FALSE
REM If column B has two cells with the same value,
REM then use column A ascending to decide the order.
oSortFields(1).Field = 0
oSortFields(1).SortAscending = True
REM Setup the sort descriptor.
oSortDesc(0).Name = “SortFields”
oSortDesc(0).Value = oSortFields()
REM Sort the range.
oCellRange.Sort(oSortDesc())
End Sub
இவ்வாறு திரும்பதிரும்ப செய்யப்படும் செயல்கள் அல்லது புதிய செயலிகளை லிபர் ஆஃபிஸ் கால்க்கில் மேக்ரோவாக நாமே உருவாக்கி செயற்படுத்தமுடியும்.

Advertisements

மறுமொழியொன்றை இடுங்கள்

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / மாற்று )

Twitter picture

You are commenting using your Twitter account. Log Out / மாற்று )

Facebook photo

You are commenting using your Facebook account. Log Out / மாற்று )

Google+ photo

You are commenting using your Google+ account. Log Out / மாற்று )

Connecting to %s

%d bloggers like this: