http://ask.libreoffice.org/pt-br/users/18/grafeno/ (Grafeno) postou uma
http://ask.libreoffice.org/pt-br/question/752/como-posso-converter-um-macro-criado-no-excel-2007-que-me-da-os-feriados-como-forma-de-funcao/?answer=808#post-id-808
(answer)
Respondida por Grafeno:
Olá,Para converter funções, bem como macros, é preciso reescrevê-las, obedecendo a API UNO do
LibreOffice.No seu caso, não havia nenhuma função interna ou método exclusivo do VBA no código que
pudesse comprometer as funções. Apenas encontrei algumas pequenas inconsistências, que tomei a
liberdade de corrigir:Public Function VerificaSeFeriado(dDataX As Date) As Boolean
Dim FeriadosFixos(9) as String
Dim FeriadosMoveis(2) as Date
Dim iAnoX as Integer
Dim dPascoa as Date
iAnoX = Year(dDataX)
dPascoa = CalculaPascoa(iAnoX)
FeriadosFixos(0) = CDate("1/1/" & iAnoX) 'Confraternização Universal
FeriadosFixos(1) = CDate("21/4/" & iAnoX) 'Tiradentes
FeriadosFixos(2) = CDate("1/5/" & iAnoX) 'Trabalho
FeriadosFixos(3) = CDate("7/9/" & iAnoX) 'Independência do Brasil
FeriadosFixos(4) = CDate("20/9/" & iAnoX) 'Revolução Farroupilha
FeriadosFixos(5) = CDate("12/10/" & iAnoX) 'Nossa Senhora Aparecida
FeriadosFixos(6) = CDate("2/11/" & iAnoX) 'Finados
FeriadosFixos(7) = CDate("15/11/" & iAnoX) 'Proclamação da Repúplica
FeriadosFixos(8) = CDate("25/12/" & iAnoX) 'Natal
FeriadosFixos(9) = CDate("2/2/" & iAnoX) 'Navegantes
FeriadosMoveis(0) = DateAdd("d", -2, dPascoa) 'Sexta Paixão
FeriadosMoveis(1) = DateAdd("d", -47, dPascoa) 'Carnaval
FeriadosMoveis(2) = DateAdd("d", 60, dPascoa) 'Corpus Christi
Select Case dDataX
Case FeriadosFixos(0), FeriadosFixos(1), FeriadosFixos(2), FeriadosFixos(3),_
FeriadosFixos(4), FeriadosFixos(5), FeriadosFixos(6), FeriadosFixos(7),_
FeriadosFixos(8), FeriadosFixos(9)
VerificaSeFeriado = True
Case dPascoa, FeriadosMoveis(0), FeriadosMoveis(1), FeriadosMoveis(2)
VerificaSeFeriado = True
Case Else
VerificaSeFeriado = False
End Select
End Function
Private Function CalculaPascoa(iAno As Integer) As Date
Dim A, B, C, D, E, F, G, H, I as Integer
Dim J, K, L, M, N, P, Q, R, S as Integer
A = iAno \ 100 'o inteiro de (Ano ÷ 100)
B = iAno Mod 19 'o resto de (Ano ÷ 19)
C = (A - 17) \ 25 'o inteiro de [(A - 17) ÷ 25]
D = A \ 4 'o inteiro de (A ÷ 4)
E = (A - c) \ 3 'o inteiro de [(A - C) ÷ 3]
F = (A - D - E + (19 * B) + 15) Mod 30 'o resto de {[A - D - E + (19xB) + 15] ÷ 30}
G = F \ 28 'o inteiro de (F ÷ 28)
H = 29 \ (F + 1) 'o inteiro de [29 ÷ (F + 1)]
I = (21 - B) \ 11 'o inteiro de [(21 - B) ÷ 11]
J = G * H * I
K = F - (G * (1 - J))
L = iAno \ 4 'o inteiro de (Ano ÷ 4)
M = (iAno + L + K + 2 - A + D) Mod 7 'o resto de [(Ano + L + K + 2 - A + D) ÷ 7]
N = K - M
P = (N + 40) \ 44 'o inteiro de [(N + 40) ÷ 44]
Q = 3 + P
R = Q \ 4 'o inteiro de (Q ÷ 4)
S = N + 28 - (31 * R)
CalculaPascoa = CDate(S & "/" & Q & "/" & iAno)
End Function
Atte,Grafeno
In reply to Jorge Thomaz's question:
Como posso converter um macro criado no excel 2007 que me dá os feriados como forma de função
Tags:
Macro, função, FERIADO, Calc.
[Public Function VerificaSeFeriado(dDataX As Date) As Boolean
Dim FeriadosFixos(9) As String
Dim FeriadosMoveis(2) As Date
Dim iAnoX As Integer
Dim dPascoa As Date
iAnoX = Year(dDataX)
dPascoa = CalculaPascoa(iAnoX)
FeriadosFixos(0) = "1/1" 'Confraternização Universal
FeriadosFixos(1) = "21/4" 'Tiradentes
FeriadosFixos(2) = "1/5" 'Trabalho
FeriadosFixos(3) = "7/9" 'Independência do Brasil
FeriadosFixos(4) = "20/9" 'Revolução Farroupilha
FeriadosFixos(5) = "12/10" 'Nossa Senhora Aparecida
FeriadosFixos(6) = "2/11" 'Finados
FeriadosFixos(7) = "15/11" 'Proclamação da Repúplica
FeriadosFixos(8) = "25/12" 'Natal
FeriadosFixos(9) = "2/2" 'Navegantes
FeriadosMoveis(0) = DateAdd("d", -2, dPascoa) 'Sexta Paixão
FeriadosMoveis(1) = DateAdd("d", -47, dPascoa) 'Carnaval
FeriadosMoveis(2) = DateAdd("d", 60, dPascoa) 'Corpus Christi
Select Case dDataX
Case FeriadosFixos(0), FeriadosFixos(1), FeriadosFixos(2), FeriadosFixos(3), FeriadosFixos(4),
FeriadosFixos(5), FeriadosFixos(6), FeriadosFixos(7), FeriadosFixos(8), FeriadosFixos(9)
VerificaSeFeriado = True
Case FeriadosMoveis(0), FeriadosMoveis(1), FeriadosMoveis(2)
VerificaSeFeriado = True
Case Else
VerificaSeFeriado = False
End Select
End Function
Private Function CalculaPascoa(iAno As Integer) As Date
Dim A As Integer
Dim B As Integer
Dim c As Integer
Dim D As Integer
Dim E As Integer
Dim F As Integer
Dim G As Integer
Dim H As Integer
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim L As Integer
Dim M As Integer
Dim N As Integer
Dim P As Integer
Dim Q As Integer
Dim R As Integer
Dim S As Integer
A = iAno \ 100 'o inteiro de (Ano ÷ 100)
B = iAno Mod 19 'o resto de (Ano ÷ 19)
c = (A - 17) \ 25 'o inteiro de [(A - 17) ÷ 25]
D = A \ 4 'o inteiro de (A ÷ 4)
E = (A - c) \ 3 'o inteiro de [(A - C) ÷ 3]
F = (A - D - E + (19 * B) + 15) Mod 30 'o resto de {[A - D - E + (19xB) + 15] ÷ 30}
G = F \ 28 'o inteiro de (F ÷ 28)
H = 29 \ (F + 1) 'o inteiro de [29 ÷ (F + 1)]
I = (21 - B) \ 11 'o inteiro de [(21 - B) ÷ 11]
J = G * H * I
K = F - (G * (1 - J))
L = iAno \ 4 'o inteiro de (Ano ÷ 4)
M = (iAno + L + K + 2 - A + D) Mod 7 'o resto de [(Ano + L + K + 2 - A + D) ÷ 7]
N = K - M
P = (N + 40) \ 44 'o inteiro de [(N + 40) ÷ 44]
Q = 3 + P
R = Q \ 4 'o inteiro de (Q ÷ 4)
S = N + 28 - (31 * R)
CalculaPascoa = CDate(S & "/" & Q & "/" & iAno)
End Function]
Para mudar a frequência e conteúdo dos alertas, visite
http://ask.libreoffice.org/pt-br/users/279/lista-usuarios/subscriptions/ (seu perfil de usuário).
Se achar que essa mensagem foi enviada por engano, avise o administrador do forum em
mailto:evgeny.fadeev@gmail.com (evgeny.fadeev@gmail.com).
Atenciosamente,Administrador do
--
Você está recebendo e-mails da lista usuarios@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
mande e-mail vazio para usuarios+unsubscribe@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
usuarios+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens: http://listarchives.libreoffice.org/pt-br/usuarios/
Context
- [pt-br-usuarios] [LibreOffice P & R] "Como posso converter um macro criado no excel 2007 que me dá os feriados como forma de função" · evgeny . fadeev
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.