Засега счетоводителката не минаваше на Open Office заради един скрипт SlovomBG, написан на Visual Basic, който изписваше крайната сума с думи (което наистина е досадно ако го правиш ръчно). Та тази проклетия не зацепваше под Open Office.
Затова аз написах собственоръчно един скрипт. Ако на някой му върши работа да го ползва. Работи само с ЛЕВОВЕ, и със суми по-малки от ЕДИН МИЛИАРД.
Как да се инсталира:
1. Отваряте Open Office Calc
2. Избирате Инструменти/Макроси/Управление на макроси/OpenOffice.org Basic...
3. От дясната колона избирате Main и натискате бутона Редактиране
4. Копирате там следния текст (Скрипта е написан изцяло от мен, ползвайте без притеснения)
Код:
Sub Main
Print Slovom(0)
End Sub
Function MyText ( ByVal nNumber As Double, nFlag As Byte) As String
cWords = ""
nHundredsPlace = Int( nNumber / 100 )
nRest = nNumber Mod 100
Select Case nHundredsPlace
Case 1: cWords = "СТО"
Case 2: cWords = "ДВЕСТА"
Case 3: cWords = "ТРИСТА"
Case 4: cWords = "ЧЕТИРИСТОТИН"
Case 5: cWords = "ПЕТСТОТИН"
Case 6: cWords = "ШЕСТСТОТИН"
Case 7: cWords = "СЕДЕМСТОТИН"
Case 8: cWords = "ОСЕМСТОТИН"
Case 9: cWords = "ДЕВЕТСТОТИН"
End Select
If nRest > 0 AND nHundredsPlace <> 0 Then
Select Case nRest
Case 1 To 20, 30, 40, 50, 60, 70, 80, 90
cWords = cWords + " И "
Case Else
cWords = cWords + " "
End Select
EndIf
nTensPlace = Int( nRest / 10 )
nOnesPlace = nRest Mod 10
Select Case nTensPlace
Case 1: Select Case nOnesPlace
Case 0: cWords = cWords + "ДЕСЕТ"
Case 1: cWords = cWords + "ЕДИНАДЕСЕТ"
Case 2: cWords = cWords + "ДВАНАДЕСЕТ"
Case 3: cWords = cWords + "ТРИНАДЕСЕТ"
Case 4: cWords = cWords + "ЧЕТИРИНАДЕСЕТ"
Case 5: cWords = cWords + "ПЕТНАДЕСЕТ"
Case 6: cWords = cWords + "ШЕСТНАДЕСЕТ"
Case 7: cWords = cWords + "СЕДЕМНАДЕСЕТ"
Case 8: cWords = cWords + "ОСЕМНАДЕСЕТ"
Case 9: cWords = cWords + "ДЕВЕТНАДЕСЕТ"
End Select
Case 2: cWords = cWords + "ДВАДЕСЕТ"
Case 3: cWords = cWords + "ТРИДЕСЕТ"
Case 4: cWords = cWords + "ЧЕТИРИДЕСЕТ"
Case 5: cWords = cWords + "ПЕТДЕСЕТ"
Case 6: cWords = cWords + "ШЕСТДЕСЕТ"
Case 7: cWords = cWords + "СЕДЕМДЕСЕТ"
Case 8: cWords = cWords + "ОСЕМДЕСЕТ"
Case 9: cWords = cWords + "ДЕВЕТДЕСЕТ"
End Select
If nTensPlace <> 1 AND nOnesPlace <> 0 AND nRest >= 20 Then
cWords = cWords + " И "
EndIf
If nTensPlace <> 1 Then
Select Case nOnesPlace
Case 1: If nFlag = 1 Then
cWords = cWords + "ЕДНА"
Else
cWords = cWords + "ЕДИН"
End If
Case 2: If nFlag = 1 then
cWords = cWords + "ДВЕ"
Else
cWords = cWords + "ДВА"
End If
Case 3: cWords = cWords + "ТРИ"
Case 4: cWords = cWords + "ЧЕТИРИ"
Case 5: cWords = cWords + "ПЕТ"
Case 6: cWords = cWords + "ШЕСТ"
Case 7: cWords = cWords + "СЕДЕМ"
Case 8: cWords = cWords + "ОСЕМ"
Case 9: cWords = cWords + "ДЕВЕТ"
End Select
EndIf
MyText () = cWords
End Function
Function Slovom( ByVal nNumber As Double ) As String
cWords = ""
If nNumber < 0 Then
cWords = "МИНУС "
nNumber = -1 * nNumber
EndIf
If nNumber < 1000000000 AND nNumber >= 1000000 Then
nMillions = Int( nNumber / 1000000 )
nRest = Int( nNumber Mod 1000000 )
cWords = cWords + MyText( nMillions, 0 )
If nMillions = 1 Then
cWords = cWords + " МИЛИОН"
Else
cWords = cWords + " МИЛИОНА"
EndIf
If nRest > 0 Then
If ((nRest >=100000) And (nRest < 1000000) And ((nRest - 100000) mod 100000 = 0)) Then
cWords = cWords + " И "
EndIf
If ((nRest >=10000) And (nRest < 100000) And ((nRest - 10000) mod 10000 = 0)) Then
cWords = cWords + " И "
EndIf
If ((nRest >=1000) And (nRest < 10000) And ((nRest - 1000) mod 1000 = 0)) Then
cWords = cWords + " И "
EndIf
If ((nRest >=100) And (nRest < 1000) And ((nRest - 100) mod 100 = 0)) Then
cWords = cWords + " И "
EndIf
Select Case nRest
Case 1 To 20, 30, 40, 50, 60, 70, 80, 90
cWords = cWords + " И "
Case Else
cWords = cWords + " "
End Select
EndIf
nNumber = nNumber - (nMillions * 1000000)
EndIf
If nNumber < 1000000 AND nNumber >= 1000 Then
nThousands = Int( nNumber / 1000 )
nRest = nNumber Mod 1000
If nThousands = 1 Then
cWords = cWords + " ХИЛЯДА"
Else
cWords = cWords + MyText( nThousands, 1 ) + " ХИЛЯДИ"
EndIf
If nRest > 0 Then
Select Case nRest
Case 1 To 20, 30, 40, 50, 60, 70, 80, 90, 100, 200, 300, 400, 500, 600, 700, 800, 900
cWords = cWords + " И "
Case Else
cWords = cWords + " "
End Select
EndIf
nNumber = nNumber - ( nThousands * 1000)
EndIf
If nNumber < 1000 AND nNumber >= 0 Then
cWords = cWords + MyText (Int (nNumber),0)
nNumber = nNumber - Int(nNumber)
EndIf
If cWords = "" OR cWords = "МИНУС " THEN
cWords = cWords + "НУЛА"
EndIf
cWords = cWords + " ЛЕВА"
If nNumber <> Int( nNumber ) Then
nDigit = (nNumber - Int( nNumber )) * 100
If NDigit - Int (nDigit) < 0.5 Then
nDigit = Int (nDigit)
Else
nDigit = Int (nDigit) + 1
EndIf
If nDigit > 0 Then
cWords = cWords + " И " + MyText (nDigit, 1) + " СТОТИНКИ"
EndIf
EndIf
Slovom() = cWords
End Function
5. Записвате
За да го ползвате в таблица използвайте синтаксис:
=Slovom(Номер_На_Клетка_От_Таблицата)
Не е най-прегледния код, който съм писал, но върши работа като за първи сблъсък с Бейсик. Взе още не съм открил грешка при използването му.