Post by sg_plczy da siê we writerze zamieniæ kwotê na s³owa? Szuka³em po necie ale nic
nie znalaz³em. Kwota jest w polu tabeli wiêc mo¿na siê jako¶ do niego
odwo³aæ. Czy jest taka mo¿liwo¶æ?
Podajê makro. Zapewne nie jest specjalnie elegancko napisane, ale nie
mia³em na to czasu.
JSz.
'========= ========= ========= ========= ========= ========= =========
'Autor: Jacek Szymona
'data utworzenia: 17.08.2006 r.
'licencja GPL http://gnu.org.pl/text/licencja-gnu.html
'Zestaw funkcji i procedur do przekszta³cania liczby zapisanej cyframi
' na wyra¿enie s³owne w programie "Write"
'uwaga: ta wersja przekszta³ca liczby zapisane w postaci: 12345,67
' czê¶æ ca³kowita nie mo¿e mieæ wiêcej ni¿ 15 cyfr
'u¿ycie: po wpisaniu liczby i po ustawieniu kursora na liczbie
' nale¿y wywo³aæ makroinstrukcjê
'wynik zapisywany jest w nawiasie po zapisie cyfrowym
Public we, wy, forma As String
Sub Slownie
Dim Dokument As Object, Cyframi As Object
Dim Kursor As Object, Kursor1 As Object
Dim tx0, txd, txc, tx1, cyd2, cyd1 As String
Dim dlugosc As Integer
Dim slownie, slownie1, slowniezl, slowniegr, znak, mianogr, mianozl As
String
Dim jednostki(), nastki(), dziesiatki(), setki()
Dim i, j, k As Integer
Dokument = ThisComponent
Kursor = Dokument.currentcontroller.getViewCursor()
Cyframi = Kursor.Text
Kursor1 = Cyframi.createTextCursorByRange(Kursor.getstart())
Kursor1.gotoStartOfWord(false)
Kursor1.gotoEndOfWord(true)
'przypisanie pobranego ³añcucha do zmiennej tx0
tx0 = Kursor1.String
Kursor1.goRight(0,false)
dlugosc = Len(tx0)
znak = Mid(tx0,dlugosc-2,1)
If dlugosc < 3 or znak <> "," Then
MsgBox ("Liczba musi byæ w formacie: 1234,56",0,"B³±d")
Stop
End If
'GoTo grosze_slownie
'GoTo grosze_cyfrowo 'miano = groszy
GoTo grosze_cyfrowo1 'miano = /100
'czê¶æ dziesiêtna
we = Right(tx0,2)
Call miano
If forma = "0" Then
wy = ""
mianogr = ""
ElseIf forma = "1" Then
mianogr = "grosz"
ElseIf forma = "2" Then
mianogr = "grosze"
Else
mianogr = "groszy"
EndIf
slowniegr = wy & mianogr
GoTo zlote_slownie
we = Right(tx0,2)
cyd1 = Mid(we,1,1)
cyd2 = Mid(we,2,1)
If cyd1 = "0" and cyd2 = "0" Then
wy = "0 "
mianogr = "groszy"
ElseIf cyd1 = "0" and cyd2 = "1" Then
wy = "1 "
mianogr = "grosz"
ElseIf cyd1 = "0" and (cyd2 = "2" or cyd2 = "3" or cyd2 = "4") Then
wy = cyd2 & " "
mianogr = "grosze"
ElseIf cyd1 = "0" Then
wy = cyd2 & " "
mianogr = "groszy"
ElseIf cyd1 = "1" Then
wy = cyd1 & cyd2 & " "
mianogr = "groszy"
ElseIf cyd2 = "2" or cyd2 = "3" or cyd2 = "4" Then
wy = cyd1 & cyd2 & " "
mianogr = "grosze"
Else
wy = cyd1 & cyd2 & " "
mianogr = "groszy"
EndIf
slowniegr = wy & mianogr
GoTo zlote_slownie
we = Right(tx0,2)
cyd1 = Mid(we,1,1)
cyd2 = Mid(we,2,1)
If cyd1 = "0" and cyd2 = "0" Then
wy = "0"
ElseIf cyd1 = "0" and cyd2 = "1" Then
wy = "1"
ElseIf cyd1 = "0" and (cyd2 = "2" or cyd2 = "3" or cyd2 = "4") Then
wy = cyd2 & ""
ElseIf cyd1 = "0" Then
wy = cyd2 & ""
ElseIf cyd1 = "1" Then
wy = cyd1 & cyd2 & ""
ElseIf cyd2 = "2" or cyd2 = "3" or cyd2 = "4" Then
wy = cyd1 & cyd2 & ""
Else
wy = cyd1 & cyd2 & ""
EndIf
slowniegr = wy & "/100"
GoTo zlote_slownie
'czê¶æ ca³kowita
dlugosc = dlugosc - 3
txc = Left(tx0,dlugosc)
If dlugosc > 12 Then GoTo biliony
If dlugosc > 9 Then GoTo miliardy
If dlugosc > 6 Then GoTo miliony
If dlugosc > 3 Then GoTo tysiace
GoTo setki
we = Left(txc,dlugosc-12)
txc = Right(txc,12)
dlugosc = 12
Call miano
If forma = "0" Then
mianozl = ""
ElseIf forma = "1" Then
mianozl = "bilion "
ElseIf forma = "2" Then
mianozl = "biliony "
Else
mianozl = "bilionów "
EndIf
slowniezl = wy & mianozl
we = Left(txc,dlugosc-9)
txc = Right(txc,9)
dlugosc = 9
Call miano
If forma = "0" Then
mianozl = ""
ElseIf forma = "1" Then
mianozl = "miliard "
ElseIf forma = "2" Then
mianozl = "miliardy "
Else
mianozl = "miliardów "
EndIf
slowniezl = slowniezl & wy & mianozl
we = Left(txc,dlugosc-6)
txc = Right(txc,6)
dlugosc = 6
Call miano
If forma = "0" Then
mianozl = ""
ElseIf forma = "1" Then
mianozl = "milion "
ElseIf forma = "2" Then
mianozl = "miliony "
Else
mianozl = "milionów "
EndIf
slowniezl = slowniezl & wy & mianozl
we = Left(txc,dlugosc-3)
txc = Right(txc,3)
dlugosc = 3
Call miano
If forma = "0" Then
mianozl = ""
ElseIf forma = "1" Then
mianozl = "tysi±c "
ElseIf forma = "2" Then
mianozl = "tysi±ce "
Else
mianozl = "tysiêcy "
EndIf
slowniezl = slowniezl & wy & mianozl
we = txc
Call miano
If forma = "0" Then
mianozl = "z³otych"
ElseIf forma = "1" Then
mianozl = "z³oty"
ElseIf forma = "2" Then
mianozl = "z³ote"
Else
mianozl = "z³otych"
EndIf
slowniezl = slowniezl & wy & mianozl
slownie = slowniezl & " i " & slowniegr
Kursor1.String = " z³ (" & slownie & ")"
End Sub
Sub miano
'Sub slow
'we = InputBox ("WprowadŒ liczbê:")
Dim dl As Integer
Dim cy3, cy2, cy1 As String
Dim jednostki(), nastki(), dziesiatki(), setki()
jednostki() = jednostki1()
nastki() = nastki1()
dziesiatki() = dziesiatki1()
setki() = setki1()
dl = Len(we)
cy1 = ""
cy2 = ""
cy3 = ""
wy = ""
forma = ""
'jedna cyfra
If dl = 1 Then
cy1 = we
wy = jednostki(cy1)
If cy1 = "0" Then
forma = "0"
ElseIf cy1 = "1" Then
forma = "1"
ElseIf cy1 = "2" or cy1 = "3" or cy1 = "4" Then
forma = "2"
Else
forma = "5"
End If
'dwie cyfry
ElseIf dl = 2 Then
cy1 = Mid(we,2,1)
cy2 = Mid(we,1,1)
If cy2 = "0" Then
wy = jednostki(cy1)
If cy1 = "0" Then
forma = "0"
ElseIf cy1 = "1" Then
forma = "1"
ElseIf cy1 = "2" or cy1 = "3" or cy1 = "4" Then
forma = "2"
Else
forma = "5"
End If
ElseIf cy2 = "1" Then
wy = nastki(cy1)
forma = "5"
ElseIf cy1 = "2" or cy1 = "3" or cy1 = "4" Then
wy = dziesiatki(cy2) & jednostki(cy1)
forma = "2"
Else
wy = dziesiatki(cy2) & jednostki(cy1)
forma = "5"
End If
'trzy cyfry
Else
cy1 = Mid(we,3,1)
cy2 = Mid(we,2,1)
cy3 = Mid(we,1,1)
If cy3 = "0" and cy2 = "0" and cy1 = "0" Then
wy = ""
forma = "0"
ElseIf cy3 = "0" and cy2 = "0" Then
wy = jednostki(cy1)
If cy1 = "1" Then
forma = "1"
ElseIf cy1 = "2" or cy1 = "3" or cy1 = "4" Then
forma = "2"
Else
forma = "5"
End If
ElseIf cy3 = "0" and cy2 = "1" Then
wy = nastki(cy1)
forma = "5"
ElseIf cy3 = "0" Then
wy = dziesiatki(cy2) & jednostki(cy1)
If cy1 = "2" or cy1 = "3" or cy1 = "4" Then
forma = "2"
Else
forma = "5"
End If
ElseIf cy2 = "1" Then
wy = setki(cy3) & nastki(cy1)
forma = "5"
ElseIf cy1 = "2" or cy1 = "3" or cy1 = "4" Then
wy = setki(cy3) & dziesiatki(cy2) & jednostki(cy1)
forma = "2"
Else
wy = setki(cy3) & dziesiatki(cy2) & jednostki(cy1)
forma = "5"
End If
End If
End Sub
Function jednostki1()
jednostki1() = Array("", "jeden ", "dwa ", "trzy ", "cztery ", "piêæ ", _
"sze¶æ ", "siedem ", "osiem ", "dziewiêæ ")
End Function
Function nastki1()
nastki1() = Array("dziesiêæ ", "jedena¶cie ", "dwana¶cie ", _
"trzyna¶cie ", "czterna¶cie ", "piêtna¶cie ", "szesna¶cie ", _
"siedemna¶cie ", "osiemna¶cie ", "dziewiêtna¶cie ")
End Function
Function dziesiatki1()
dziesiatki1() = Array("", "", "dwadzie¶cia ", "trzydzie¶ci ", _
"czterdzie¶ci ", "piêædziesi±t ", "sze¶ædziesi±t ", _
"siedemdziesi±t ", "osiemdziesi±t ", "dziewiêædziesi±t ")
End Function
Function setki1()
setki1() = Array("", "sto ", "dwie¶cie ", "trzysta ", "czterysta ", _
"piêæset ", "sze¶æset ", "siedemset ", "osiemset ", "dziewiêæset ")
End Function
'========= ========= ========= ========= ========= ========= =========
dosta³em te¿ od Krzysztofa i dzia³a.