web 2.0


RibbonX – Adicionando conteúdo dinâmico

Neste breve artigo discutirei a criação de um menu dinâmico na nova interface de usuário do Excel 2007. Este artigo é um excerto do material de treinamento sobre programação do RibbonX o qual pode ser adquirido na loja do site em: http://loja.msofficegurus.com No Treinamento, o leitor aprenderá todo o processo de programação e implementação das soluções desenvolvidas.

Para aqueles que se acostumaram com o antigo método de personalização das barras de ferramentas o novo método pode parecer horrível. Não obstante a nova complexidade introduzida no RibbonX, a flexibilidade e novas possibilidades de personalização vão muito além do que é possível fazer no antigo sistema. Por exemplo:
 

  • Você alguma vez precisou desabilitar um comando no Excel (digamos, o comando “Imprimir”)? Se sim, o leitor recordará das implicações disso. Na nova interface, podemos fazê-lo globalmente evitando brechas na impressão;
     
  • Precisou remover o menu principal pelo seu? Lembra da implicação disso para outras sessões do Excel?
     
  • Alguma vez precisou adicionar imagens em grupos? Agora, podemos fazê-lo rapidamente como mostra a figura:


Figura 1: Criando galerias de imagens

Ao passo que é verdadeiro que requererá um pouco mais de tempo nosso no XML, é muito mais verdadeiro que as possibilidades mais do que compensam tal trabalho. Além do que para os que desenvolvem em VS.NET o trabalho é facilitado pelos “schemas” XML que adicionam “Intellisense” durante a criação.

Portanto, vamos supor o seguinte cenário: existe uma determinada interface que deve somente ser mostrada quando algo é clicado (como as guias sensíveis ao contexto). Em situações como estas, nós queremos criar o conteúdo dinâmicamente para que o mesmo seja mostrado somente nas situações determinadas.

Obtemos tal resultado utilizando o atributo getContent. O valor do atributo é, na verdade, um callback (um procedimento VBA) que deve ser executado para determinar o conteúdo.

Vejamos um exemplo simples de como isso pode ser feito. A figura abaixo mostra a nossa guia com um menu sem conteúdo:


Figura 2: Menu de conteúdo dinâmmico

O conteúdo do menu deve ser mostrado quando a célula A1 da primeira planilha for diferente de vazio. Aqui, teremos dois trabalhos distintos envolvendo XML (os quais podem ser feitos no CustomUI Editor ou outro editor de XML qualquer): 

·         Criar o XML para definir a guia conforme mostrado acima;

·         Criar o XML para ser inserido dinamicamente no VBA o qual será retornado pelo callback especificado no atributo getContent.

 
Vamos iniciar pelo XML que criará a guia, grupo e botão conforme a figura anterior:
 

<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="setRib">
   <ribbon startFromScratch="false">
    <tabs>
     <tab
    id="idGuia"
    insertBeforeMso="TabHome"
    label="Minha Guia"> 

      <group
     id="idGrp"
     label="Meu Grupo">

 

          <dynamicMenu id="idDMnu"
          getContent="conteudoDin"
          imageMso="Spelling"
          label="Meu Menu Dinâmico"/>
      </group>
     </tab>
    </tabs>
   </ribbon>
</customUI>


Note o atributo
getContent do menu dinâmico no XML acima. É este callback que será utilizado para escrever o conteúdo dinamicamente.

Note também o atributo onLoad. Aqui, utilizamos tal atributo para podermos invalidar a Faixa de Opções e forçar a chamada do callback conteudoDin.

O próximo passo requer a criação do conteúdo dinâmico. Neste caso, o ideal é criar um novo arquivo Excel e criar toda a interface e testá-la. Uma vez que tal interface esteja pronta, nós precisamos transformá-la em uma string que será utilizado no VBA.

Tags: , , , ,

Microsoft Office | VBA

Validação de Dados Excel 2007

Este artigo trata de validação avançada de listas utilizando o Excel 2007. O artigo mostra como criar uma validação condicional de uma lista, isto é, os itens da lista dependerão da lista sendo escolhida. Observe a figura:

 


Figura 1: Resultado final da validação de listas múltiplas

Quando digitamos “Lista 1” a lista de validação mostra apenas os itens que pertencem à primeira lista. Quando digitamos “Lista 2” na célula A2 obtemos os itens pertencentes à segunda lista e assim por diante.

Para criarmos tal validação primeiramente precisamos definir as listas. Portanto, adicione uma nova planilha (caso tenha apenas uma disponível em sua pasta de trabalho) onde inseriremos três listas como mostra a figura:
 


Figura 2: Definindo as listas

É importante que o leitor não deixe nenhum item vazio na lista, pois isso afetará a fórmula que adicionaremos mais adiante.

Com isso feito, nós precisamos adicionar três nomes à nossa pasta de trabalho os quais serão utilizados na validação final. Para tanto, acesse a tabulação Formulas e em seguida clique em Name a range.

O primeiro passo é determinar a coluna onde se encontra a lista (no caso acima estará entre as colunas 1 e 3 inclusive, mas o comprimento não importa): 


Figura 3: Determinando os nomes para utilização nas listas

Para este nome (chame-o de col) utilizaremos a fórmula abaixo:

=(MID(ADDRESS(1,MATCH(Sheet1!$A$2,Sheet2!$1:$1,0),3),1,LEN(ADDRESS(1,MATCH(Sheet1!$A$2,Sheet2!$1:$1,0),3))-1)&":"&MID(ADDRESS(1,MATCH(Sheet1!$A$2,Sheet2!$1:$1,0),3),1,LEN(ADDRESS(1,MATCH(Sheet1!$A$2,Sheet2!$1:$1,0),3))-1))

O que a fórmula acima faz é retornar a coluna inteira onde se encontra a lista (por exemplo, ela poderia retornar $B:$B caso seja digitado Lista 2)

Os elementos (funções) da fórmula são:
 

  • Match à Determina a posição da coluna utilizando o valor digitado na célula A2 da planilha 1;
  • Address à Retorna o endereço onde se encontra o nome da lista;
  • Mid à É utilizado para remover o número da linha, pois a função Address retornará $B1 e estamos interessados somente em $B;
  • Len à Utilizado para medir o comprimento do endereço e remover o número, isto é, Len(Endereço)-1 retorna o que desejamos $B.


O próximo passo requer o cálculo do deslocamento da coluna. Novamente, utilizaremos um nome (chame-o de colDesloc) e a fórmula será:

=MATCH(Sheet1!$A$2,Sheet2!$1:$1,0)-1

A fórmula acima calcula o deslocamento em coluna. Caso seja a primeira lista a função MATCH retornará 1 (coluna onde se encontra a primeira lista), porém, neste caso, não há deslocamento e precisamos subtrair 1. Quando for Lista 2, a função MATCH retorna 2 e a fórmula retorna 1 (um deslocamento na coluna).

Finalmente, precisamos criar o nome para a validação de dados (chame-o de Dados) o qual receberá a seguinte fórmula:

=OFFSET(Sheet2!$A$2,0,colDesloc,COUNTA(INDIRECT("Sheet2!"&col))-1,1)

A função OFFSET determina o deslocamento dos dados e é composta pelos seguintes argumentos:
 

  • O primeiro argumento é a posição inicial do deslocamento Célula A2 da planilha que contém a lista. O deslocamento inicia em A2, pois o cabeçalho não será incluído na lista de validação; 
  • O segundo argumento é o deslocamento em linha que neste caso não ocorrerá;
  • O terceiro argumento é o deslocamento de coluna o qual é calculado pelo nome criado no passo anterior;
  • O quarto argumento é a altura do deslocamento e aqui utilizamos o resultado do primeiro nome criado. Note o uso da função INDIRECT para retornar indiretamente o endereço utilizado pela função COUNTA para determinar quantos itens estarão na lista. Do total subtraímos 1, pois não contamos o cabeçalho;
  • O último argumento é a largura do deslocamento que neste caso é sempre 1.

 
Agora que terminamos a criação dos nomes, os mesmos estarão disponíveis no gerenciador de nomes:

 

Figura 4: Gerenciando nomes

Finalmente, para validar a lista ative a tabulação Data e no grupo Data tools clique na opção Data validation. A janela de validação de dados será aberta onde devemos determinar a lista retornada pelo nome Dados criada anteriormente:
 


Figura 5: Validando as listas

O leitor pode agora modificar o nome da lista que os somente os itens pertencentes à lista serão mostrados na célula de validação.

CONCLUSÃO

Este curto artigo mostra ao leitor algumas das novidades da versão 2007 do MS Excel e como criar uma validação de dados que vai além da lista usualmente utilizada.

Estaremos publicando vários artigos em preparação para o lançamento oficial do MS Office 2007. Fique ligado no Linha de Código!

Robert Friedrick Martim, Expert da Comunidade Excel
Robert Martim é Economista, Formado e Pós-Graduado em Finanças pela Universidade de Londres, Microsoft MVP Excel.

Conheça alguns dos e-books do autor sobre Excel e Access em nossa Loja Virtual.

Tags: , , , ,

Microsoft Office

Word 2007: Criando texto aleatório

O Word, como o nome sugere, foi criado para trabalhar com palavras, com texto. Poucos sabem, porém, que o Word possui duas funções para criar textos aleatórios para teste. As funções podem ou não receber argumentos:

=lorem()

=rand()

No caso da primeira função, o seguinte texto é retornado:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas porttitor congue massa. Fusce posuere, magna sed pulvinar ultricies, purus lectus malesuada libero, sit amet commodo magna eros quis urna.

Nunc viverra imperdiet enim. Fusce est. Vivamus a tellus.

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Proin pharetra nonummy pede. Mauris et orci.

Como os argumentos não foram determinados, o Word criará um texto contendo três parágrafos. O mesmo ocorre para a segunda funcao, mas desta vez o texto será:

No menu Inserir, as galerias incluem itens que são projetados para corresponder à aparência geral do documento. Você pode usar essas galerias para inserir tabelas, cabeçalhos, rodapés, listas, folhas de rosto e outros blocos de construção do documento. Quando você cria imagens, gráficos ou diagramas, esses elementos também são coordenados com a aparência atual do documento.

Você pode alterar facilmente a formatação do texto selecionado no documento escolhendo uma aparência para o texto selecionado na galeria Estilos Rápidos, na guia Início. Você também pode formatar texto diretamente usando os outros controles na guia Início. A maioria dos controles oferece uma opção entre usar a aparência do tema atual ou usar um formato que você pode especificar.

Para alterar a aparência geral do documento, escolha novos elementos Tema na guia Layout da Página. Para alterar as aparências disponíveis na galeria Estilos Rápidos, use o comando Alterar Conjunto Atual de Estilos Rápidos. As galerias Temas e Estilos Rápidos fornecem comandos de redefinição para que você possa sempre restaurar a aparência do documento ao original contido no modelo atual.

Para cada função, determine o número de parâmetros dos argumentos como: =lorem(4,10) que indicará que 4 (quatro) parágrafos devem ser criados com 10 (dez) orações cada.

Tags:

Microsoft Office