Pergunte aqui
0

MACRO - COM CONDIÇÃO E MENSAGEM

perguntadas 2016-10-31 14:23:40 +0100

imagem do gravatar de Jorge Thomaz

updated 2019-03-01 18:59:07 +0100

USEI A GRAVAÇÃO DE MACRO, EU FIZ O TESTE USANDO A FUNÇÃO DA CÉLULA A16. COMO INÍCIO DEU CERTO.....COLOCANDO COMO EVENTO AO ABRIR O DOCUMENTO.....

PORÉM, NÃO SEI COMO MODIFICÁ-LA PARA QUE TORNE UMA CAIXA DE MENSAGEM E QUE A CÉLULA C17 - A CÉLULA AONDE SERÁ INSERIDO O DADO SEJA LIMPA.....

COMO EXPLICAR ..... :

UMA CAIXA DE MENSAGEM "msgbox".....

e

dispatcher.executeDispatch(document,"uno:ClearContents", "", 0, Array()) = PARA LIMPAR O CONTEÚDO DA CÉLULA C17

NÃO SEI SE TEM COMO USAR AS ESTRUTURAS IF....THEN....ELSE..... COM O UNO

sub Macro1 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(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" args1(0).Value = "$A$16"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ---------------------------------------------------------------------- dim args2(0) as new com.sun.star.beans.PropertyValue args2(0).Name = "StringName" args2(0).Value = "=SE(contou=1;"+CHR$(34)+"Férias já cadastradas, ir para FÉRIAS PARTE II - GUIA EM AMARELO..."+CHR$(34)+";"+CHR$(34)+CHR$(34)+")"

dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args2())

end sub

SEGUE ARQUIVO EM ANEXO

Vincular texto

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

1 Resposta

0

respondidas 2016-11-03 02:17:31 +0100

updated 2016-11-18 23:18:28 +0100

Ola @Jorge Thomaz, já me conhece sabe que Macros não é meu forte. Dei uma olhada na planilha e modifiquei algumas coisas:

Na aba [ FÉRIAS ] na seleção dos nomes só será mostrado os Servidores sem registro de ferias.

Na aba [ FÉRIAS PARTE II ] na seleção dos nomes só será mostrado os Servidores com saldo de ferias.

segue arquivo.

Troque a macro por esta: A diferença, esta salva o novo Registro no final da lista, se não inserir linha não altera as formulas, e de brinde Mensagem Final.....

sub SALVARDADOS2 'NOVA
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "DADOS_COPIAR2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$C$5"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(1).Name = "Sel"
args4(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args4())
rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(5) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Flags"
args6(0).Value = "SVD"
args6(1).Name = "FormulaCommand"
args6(1).Value = 0
args6(2).Name = "SkipEmptyCells"
args6(2).Value = false
args6(3).Name = "Transpose"
args6(3).Value = false
args6(4).Name = "AsLink"
args6(4).Value = false
args6(5).Name = "MoveMode"
args6(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "nome"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
' mensagem========
dim args8(0) as new com.sun.star.beans.PropertyValue
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args8())
msgbox "Férias Registrada"
end sub

Copie e Cole sobre a anterior....

Jorge, creio que falta o Registro do Servidor que já usou o Saldo das Férias.....Ou estou errado?

segue arquivo revisado


editar assinalar como ofensivo Excluir Link mais

Comentários

Valeu Gilberto, esta maneira ficou bem melhor.....não será necessário mensagem.......

imagem do gravatar de Jorge ThomazJorge Thomaz ( 2016-11-07 16:30:38 +0100 )editar

Oi @Jorge Thomaz, Caso a resposta ajudou, por gentileza, click na bolinha a esquerda da resposta, para finalizar a pergunta.

imagem do gravatar de SchiavinattoSchiavinatto ( 2016-11-08 00:26:28 +0100 )editar

Oi gilberto, fiz um teste na planilha só que ao salvar a férias no registro via macro ele não é contado....ficando em branco.....tem como solucionar isso......

imagem do gravatar de Jorge ThomazJorge Thomaz ( 2016-11-16 15:14:20 +0100 )editar

há alguém que tem conhecimento em macro para ajudar...... Mesmo com a solução do @gilberto, não está funcionando porque ao salvar as férias os dados salvos não é contabilizado.....necessitando alterar o macro para salvar a fórmula também.

imagem do gravatar de Jorge ThomazJorge Thomaz ( 2016-11-18 13:20:23 +0100 )editar

Oi @Jorge Thomaz, vide complemento na Resposta....

imagem do gravatar de SchiavinattoSchiavinatto ( 2016-11-18 21:22:36 +0100 )editar

Valeu Gilberto, mas tentei incluir isso: dispatcher.executeDispatch(document, ".uno:Print", "", 0, args1()) antes e depois do comando limpar, só que ao imprimir a parte do nome e matrícula é impressa em branco.... tem como antes de limpar ela imprimir todo o conteúdo e depois ela limpa......

imagem do gravatar de Jorge ThomazJorge Thomaz ( 2016-11-25 16:56:22 +0100 )editar
Login/Registrar para responder

Ferramentas de perguntas

Estatísticas

Perguntadas: 2016-10-31 14:23:40 +0100

Lidas: 338 vezes

Última atualização: Nov 18 '16