Pergunte aqui
1

Comandos para classificar coluna e visualizar impressão

perguntadas 2016-10-16 18:27:33 +0200

imagem do gravatar de Orlando

updated 2016-11-03 14:45:36 +0200

imagem do gravatar de Grafeno

Olá, pessoal!

Pesquisei, digitando: Classificar, Visualizar, Impressão, na busca aqui e não obtive o resultado esperado.

Estou tentando deixar em ordem crescente a coluna A e abrir a opção Visualizar impressão (Ctrl+Shift+O), utilizando a mesma rotina da Macro na planilha (Alt+F11) anexa. Tudo sem alterar o primeiro resultado na coluna D da tabela.

Seguem abaixo uma imagem ilustrativa da tabela e a Macro na planilha anexa, a fim de facilitar o entendimento:

ilustração

Sub OrdenarVisualizar
Dim oDoc As Object, oPlan As Object
Dim oIntervalo1 As Object, oIntervalo2 As Object

' Classificar em ordem crescente a coluna A

' Inciar os objetos
oDoc = ThisComponent
oPlan = oDoc.Sheets.getByName( "Plan1" )
oIntervalo1 = oPlan.getCellRangeByName( "A2:A18" )
oIntervalo2 = oPlan.getCellRangeByName( "B2:B18" )

' Copiar os dados (sem formato)
oIntervalo2.setDataArray( oIntervalo1.getDataArray )

' Visualizar impressão (Ctrl+Shift+O)

End Sub

Planilha modelo

Grato pela atenção!!

Orlando Souza

8)

editar alterar tag assinalar como ofensivo fechar mesclar Excluir

2 Respostas

2

respondidas 2016-10-18 17:35:21 +0200

imagem do gravatar de Grafeno

Olá,


Os avisos não serão disparados se ao invés do Dispatcher for usada a API UNO para escrever o código de classificação:

Sub OrdenarVisualizar
Dim oDoc As Object, oPlan As Object
Dim oIntervalo1 As Object, oIntervalo2 As Object

' Inciar os objetos
oDoc = ThisComponent
oPlan = oDoc.Sheets.getByName( "Planilha1" )
oIntervalo1 = oPlan.getCellRangeByName( "A2:A18" )
oIntervalo2 = oPlan.getCellRangeByName( "B2:B18" )

' Classificar em ordem crescente a coluna A (sem Dispatcher)
'1º- os campos de classificação
Dim mCampos(0) as New com.sun.star.util.SortField
mCampos(0).Field = 0
mCampos(0).SortAscending = True
'2º- Descrever a classificação
Dim mDescricao(1) As New com.sun.star.beans.PropertyValue   
mDescricao(0).Name = "SortFields"
mDescricao(0).Value = mCampos()
mDescricao(1).Name = "HasHeader"
mDescricao(1).Value = False
'3º- classificar o intervalo
oIntervalo1.Sort( mDescricao )

' Copiar os dados (sem formato)
oIntervalo2.setDataArray( oIntervalo1.getDataArray )

' Visualizar impressão (Ctrl+Shift+O)
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")

dispatcher.executeDispatch(document, ".uno:PrintPreview", "", 0, Array())

End Sub


Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

Ficou ótimo!!

Mais uma vez, muito obrigado!

:)

imagem do gravatar de OrlandoOrlando ( 2016-10-19 03:03:51 +0200 )editar
0

respondidas 2016-10-18 05:09:37 +0200

imagem do gravatar de Orlando

updated 2016-10-18 05:27:35 +0200

Usei a Macro para Classificar em ordem crescente a coluna A e abrir Visualizar impressão, porém a classificação da coluna A é interrompida com caixa de diálogo. Conforme segue:

Sub OrdenarVisualizar
Dim oDoc As Object, oPlan As Object
Dim oIntervalo1 As Object, oIntervalo2 As Object

    ' Classificar em ordem crescente a coluna A
    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 = "$Planilha1.$A$1:$A$18"

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

    rem ----------------------------------------------------------------------
    dim args2(7) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "ByRows"
    args2(0).Value = true
    args2(1).Name = "HasHeader"
    args2(1).Value = true
    args2(2).Name = "CaseSensitive"
    args2(2).Value = false
    args2(3).Name = "NaturalSort"
    args2(3).Value = false
    args2(4).Name = "IncludeAttribs"
    args2(4).Value = true
    args2(5).Name = "UserDefIndex"
    args2(5).Value = 0
    args2(6).Name = "Col1"
    args2(6).Value = 1
    args2(7).Name = "Ascending1"
    args2(7).Value = true

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

' Inciar os objetos
oDoc = ThisComponent
oPlan = oDoc.Sheets.getByName( "Plan1" )
oIntervalo1 = oPlan.getCellRangeByName( "A2:A18" )
oIntervalo2 = oPlan.getCellRangeByName( "B2:B18" )

' Copiar os dados (sem formato)
oIntervalo2.setDataArray( oIntervalo1.getDataArray )

    ' Visualizar impressão (Ctrl+Shift+O)
    dispatcher.executeDispatch(document, ".uno:PrintPreview", "", 0, Array())

End Sub
editar assinalar como ofensivo Excluir Link mais
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2016-10-16 18:27:33 +0200

Lidas: 53 vezes

Última atualização: Oct 18 '16