segunda-feira, 28 de outubro de 2013

Como ativar o controle Listview no Excel


Como ativar o controle Listview no Excel

Para adicionar a ferramenta Listview, basta dar um clique com o botão direito sobre a caixa de ferramentas, selecionar controles adicionais e marcar a opção conforme Imagem 01. Esse processo pode não ser tão fácil pois acontece em muitas máquinas não conter o Microsoft WindowsCommon Controls 6.0 (SP6), pois ele não é nativo do Office.

Imagem 01. Inserindo o controle Listview.

Nesse caso deve-se buscar o arquivo .OCX que possui essa referência, fazer a instalação (colar o arquivo mscomctl.ocx  dentro da pasta C:\windows\system32). O arquivo pode ser encontrado no site da Microsoft no seguinte link 
ou

Atualizado dia 25/09/14 - Biblioteca MSCOMCTL.OCX atualizada, versão 6.01.9834
Download via DropBox:
https://www.dropbox.com/s/xn0tkccrig6t6p5/MsComCtl_Ocx_6.01.9834.rar?dl=0

pode ser necessário registrar manualmente a biblioteca para isso
entre no prompt de comando como ADMINISTRADOR e digite

REGSVR32 C:\WINDOWS\System32\MSCOMCTL.OCX

se seu sistema for 64 Bits

REGSVR32 C:\WINDOWS\SysWOW64\MSCOMCTL.OCX

* Lembrando que essa .OCX deve ser copiada para para pasta System32 também, pois em Windows 64 bits essas bibliotecas trabalham em binário e o mesmo arquivo deve estar nas duas pastas, ou seja, System32 e SysWOW64, mas deve ser registrada como administrador em somente uma delas...

* Se o Office for 64Bits não há suporte a essas bibliotecas e os projetos que tiverem esses objetos não funcionarão, mesmo registrando e setanto as referências. Para trabalhar com programação em VBA, utilize somente versões 32Bits do Office.

Imagem 02. Selecionando a Referência  Microsoft WindowsCommon Controls 6.0 (SP6)

Após esse procedimento, entrar no menu ferramentas do VBA ir em Referências e selecionar então o  Microsoft WindowsCommon Controls 6.0 (SP6) (Imagem 07).  Refazer o procedimento da Imagem 01 para adicionar o controle Listview a caixa de ferramentas.


Pode ser necessário fazer o mesmo procedimento com o arquivo MSSTKPRP.DLL, ou seja, salvar na pasta System32 ou SysWOW64 - dependendo do sistema e fazer o registro manual...

entre no prompt de comando como ADMINISTRADOR e digite:

REGSVR32 C:\WINDOWS\System32\MSSTKPRP.DLL

se seu sistema for 64Bits

REGSVR32 C:\WINDOWS\SysWOW64\MSSTKPRP.DLL

link para download do arquivo  MSSTKPRP.DLL:
https://www.dropbox.com/s/8cx818hkiepgg3v/MSSTKPRP.DLL?dl=0

Inserindo Calendário POP UP em Formulário.

Inserindo Calendário POP UP em Formulário.

Esse Post mostra como inserir um botão que abre um calendário onde é possível selecionar a data desejada. A seleção mostrará a data selecionada na Textbox relacionada...

01. Calendário aberto para selecão da Data
O funcionamento desse calendário depende da importação de alguns arquivos que estão no link abaixo.
Os arquivos são:

- frmCalendário.frm
- mdlCalendário.bas
- Módulo11.bas
- cCalendário.cls

Link para os arquivos: Compartilhado via Google Drive

A importação dos aquivos será feita para pasta suas respectivas pastas, ou seja:

Para pasta  Formulários: Arquivo  frmCalendário.frm

Para a pasta módulo serão importados 2 arquivos: mdlCalendário.bas e Módulo11.bas

E no Módulo de Classe 1 arquivo: cCalendário.cls

A importação segue os passos da imagem 02. A seguir
02. importação dos Arquivos

Após importar cada arquivo para sua respectiva pasta basta configurar o botão que vai colocar a data dentro do textbox selecionado....

03. Configuração do Botão com referencia a Textbox que vai receber a data.

O botão funcionará adicionando a data selecionada no form do calendário a Textbox relacionada no código do Botão...
04. Seleção da Data
Vídeo com mais detalhes da "Instalação" do calendário....




Créditos do código:
 www.ambienteoffice.com.br, Felipe Gualberto.

Att.
Renam F. Ruthes

quarta-feira, 16 de outubro de 2013

Propriedades da Listbox (Última Parte)

Propriedades da Listbox (Última Parte)


Conforme visto nas duas últimas postagens nos links:


As propriedades já mostradas foram AddItem, RemoveItem, Clear... vou agora mostrar um pouco sobre:

  1. List
  2. ListCount
  3. ListIndex
  4. Selected

1. List


Esta propriedade permite que se obtenha uma referência, um dado armazenado numa posição da listbox, dessa forma escrevemos está propriedade sobre a seguinte sintaxe...

Nome_da_ListBox.List(x,y)

Onde x e y são referências a posição do dado (linha,coluna), dessa forma como exemplo temos:

msgbox = Me.ListBox1.List(0, 0)

O código acima mostra em uma Mensagem a informação que está na primeira linha, primeira coluna da listbox1. Pode-se buscar uma informação ou colocá-la dentro da listbox com a utilização da propriedade List.



2. ListCount


A propriedade listcount  nos informa quantas linhas temos em uma listbox, é muito útil para ser usada em laços, quando precisamos percorrer os itens de uma lista procurando determinado valor...
Normalmente usando-se o comando FOR / NEXT para percorrer os itens temos o seguinte:

For i = 0 To ListBox1.ListCount - 1 
next i

A propriedade Listcount  conta quantos itens temos na listbox, como padrão o primeiro item é 0 (zero), por isso deve-se colocar -1 para que não ocorra erro, pois no caso de ter 3 itens o listcount vai retornar o número 3 mas o laço deve percorrer somente as posição 0, 1 e 2 que possuem os dados... 

Veja o exemplo da parte 2, link no início desse post...


3. ListIndex


A propriedade Listindex retorna um valor que corresponde ao valor selecionado de uma listagem... por exemplo ao selecionar de uma lista o 3º valor o Listindex vai retonar o valor 2, pois a contagem numa lista sempre começa do 0 (zero). Ao selecionar o 5º valor, vai retornar o valor 4 e assim por diante...

Imagem da comando (Código Abaixo) com a propriedade ListIndex


Private Sub ListBox1_Click()

x = ListBox1.ListIndex
MsgBox x

End Sub


No código atribuimos a variável X o valor de retorno da propriedade ListIndex no evento Click da Listbox, dessa forma ao se clicar sobre uma linha da listagem é mostrada a mensagem com o valor de retorno... na imagem temos a seleção do 4º Valor da lista tendo como retorno o número 3.


4. Selected

A Propriedade selected pode ter dois valores, ou seja, pode assumir o estado  False ou True o estado False significa que ele o item está desmarcado, enquanto o true quer dizer que o item da lista esta selecionado. Esse recurso é utilizado quando queremos selecionar um item via código na listbox ou apenas testar qual ou quais itens estão selecionados dentro dessa lista. Sua sintaxe é mostrada a seguir

Nome_da_ListBox.Selected(x) = True ou False

onde X é a linha que foi selecionada ou desmarcada pelo código...


Veja o exemplo da parte 2, link no início desse post...



Propriedades da Listbox

 Propriedades da Listbox


Continuando com a descrição das propriedades da Listbox, vamos rapidamente enumerar as mais usadas...

  1. Additem
  2. Clear
  3. List
  4. ListCount
  5. ListIndex
  6. Selected
  7. RemoveItem

A propriedade já foi vista na postagem anterior... 

2. Propriedade Clear e RemoveItem


Como o nome mesmo diz é usada para limpar todos os dados de uma listbox e sua sintaxe é Nome_da_listbox.Clear por exemplo Listbox1.Clear. Essa propriedade deve ser usada sempre antes que novos dados forem adicionados, evitando a duplicação de dados, principalmente no retorno de consultas ou filtros.
Para remover uma linha usa-se o RemoveItem sua sintaxe é expressa da seguinte forma
Nome_da_listbox.RemoveItem(x) , onde x representa a linha da listbox a ser removida.

Para ilustrar a utilização das 3 propriedades já vistas até agora (AddItem, Clear e RemoveItem), foi criado um formulário com 3 botões, um para adicionar itens, outro para remover e o terceiro para limpar a listbox... Vamos ao código...

Formulário Criado para os comandos AddItem, Clear e RemoveItem.
Com Duplo-Clique em cima do CommandButton1 (Adicionar) automaticamente a janela de código é aberta com o procedimento click para esse objeto ou seja

Private Sub CommandButton1_Click()
End Sub

O código é adicionado dentro do procedimento, dessa forma a macro para o botão 1 vai ficar da seguinte forma

Adicionando Dados a listbox



Private Sub CommandButton1_Click()


'Adicionar Itens ao Listbox1
If Me.TextBox1 = "" Then ' testa se a caixa de texto está vazia e executa as ações
    MsgBox ("Adicione um item na Caixa de texto!")
Else
    Me.ListBox1.AddItem (TextBox1.Text)
End If

End Sub

 Para os outros botões o procedimento é o mesmo e o código de cada um vai ficar da seguinte forma...

Removendo Dados a listbox

Código para Remover/excluir um item selecionado da listbox

Comentários sobre o Código
laço para percorrer todos os itens da listbox para testar qual está selecionado
removendo o mesmo
A propriedade Listcount será vista mais a frente, mas adiantando... ela conta quantos itens tem na listbox, como por padrão o primeiro item é 0 (zero) deve-se colocar -1 para que não ocorra erro, pois no caso de ter 3 itens o listcount vai retornar o número 3 mas o laço deve percorrer somente as posição 0, 1 e 2 que possuem dados... 


Private Sub CommandButton2_Click()

For i = 0 To ListBox1.ListCount - 1 
If ListBox1.Selected(i) = True Then
   ListBox1.RemoveItem (i)
End If
Next i

End Sub

Limpando a listbox


Para limpar a listbox basta colocar o seguinte...


Private Sub CommandButton3_Click()


Me.ListBox1.Clear

End Sub

Segue link para Download da planilha com o formulário...


terça-feira, 8 de outubro de 2013

Relatório com dados de Listbox e Propriedades da Listbox


Podemos gerar relatórios a partir de seleções de dados efetuadas dentro de listbox. Os dados serão lidos e armazenados em uma planilha pré-configurada para receber esses dados. A vídeo aula 29 trata deste tema.


Para entender melhor os comandos criados dentro das macros temos que conhecer algumas propriedades da ListBox ou caixa de listagem... as principais e usadas com mais frequência estão listadas abaixo. Todas as propriedades de um objeto são declaradas após o nome de objeto seguindo por . "ponto", ou seja se o nome do meu objeto listbox for ListBox1 por exemplo a sintaxe de trabalho das propriedades ficaria da seguinte forma

ListBox1.AddItem ou ListBox1.Clear e assim por diante...


  1. Additem
  2. Clear
  3. List
  4. ListCount
  5. ListIndex
  6. Select



1. Propriedade AddItem

A propriedade AddItem da listbox pode inserir dados da planilha ou diretamente através de código...
para que a listbox seja carregada ao se abrir o formulário é necessário colocar o código abaixo dentro do procedimento Initialize do formulário, ou seja, deve-se dar duplo click em uma área vazia do formulário para que seja aberta a tela de códificação... por padrão será aberto no Procedimento Click(Imagem 01), mas basta selecionar o procedimento Initialize na caixa de listagem (Imagem02)

 Ex.1. Listbox1.AddItem "Janeiro"
          Listbox1.AddItem "Fevereiro"
          Listbox1.AddItem "Março"
          Listbox1.AddItem "Abril"


Imagem 01. Tela de codificação aberta após duplo clique na área do Formulário

Imagem 02. Selecionando o procedimento Initialize
Após selecionar Initiaze o editor VBA já irá abrir um procedimento Private Sub Userform_Initialize() onde será colocadas as ações que serão executadas ao se iniciar o formulário, adicionando o código de adicionar itens ao procedimento temos o resultado conforme imagem 03.

Imagem 03. Código inserido no Initialize e listbox  mostrando os dados inseridos via código




O mesmo código do Exemplo 01 pode ser escrito da seguinte maneira, usando-se a comando With, para não ficar repetitivo a digitação dos dados para um mesmo objeto.

With ListBox1
    .AddItem "Janeiro"
    .AddItem "Fevereiro"
        .AddItem "Março"
        .AddItem "Abril"
   End With

1.1 Propriedade AddItem mais de uma coluna

Para se colocar dados em mais de uma coluna numa listbox deve-se primeiramente colocar na propriedade ColumnCount do objeto (Imagem 4) o número de colunas que se deseja. Lembrando que uma listbox pode conter no máxima 10 colunas quando os dados forem adicionados via código.

Imagem 04. Caixa de Propriedades do Objeto Listbox

É possível também indicar o número de colunas de uma listbox diretamente no código antes de se adicionar os dados através do propriedade CollumnCount. Vamos a um exemplo.

Ex.2.

With ListBox1
    .ColumnCount = 3
    
    .AddItem        
    .List(0, 0) = "Janeiro"
    .List(0, 1) = "Fevereiro"
    .List(0, 2) = "Março"
    
    .AddItem
    .List(1, 0) = "Abril"
    .List(1, 1) = "Maio"
    .List(1, 2) = "Junho"

    .AddItem
    .List(2, 0) = "Julho"
    .List(2, 1) = "Agosto"
    .List(2, 2) = "Setembro"

End With 

O exemplo acima adiciona 3 linhas de dados em 3 colunas da lisbox... observe que numa listbox a primeira linha e primeira coluna sempre terão valor 0 (zero) e vai ser sempre no formato (linha,coluna) a posição dos dados dentro desse objeto. Então devemos pensar no posicionamento dos dados como uma matriz onde cada elemento tem uma posição.

0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2

Imagem 05 - Listbox com 3 colunas







Nas próximas postagem veremos mais sobre a listbox...


quinta-feira, 3 de outubro de 2013

Importando dados XML de Notas Fiscais Eletrônicas NFe

Controle de estoque por XML

Nessa Sequência de vídeos mostro como configurar a planilha para importação de dados XML de notas fiscais eletrônicas e trabalhar os dados para controlar o estoque de produtos.

link: compartilhado via Google Drive:


Vídeo aula 28 - Parte 01 - Importando XML de notas fiscais para controle de estoque com listview

O primeiro passo para configurar a planilha e fazer a importação do arquivo XML através do menu Dados > Obter Dados > De Outras Fontes > Da Importação de Dados XML...(Imagem 01) Após selecionar o arquivo o excel vai pedir para criar um esquema XML com base nos dados do código fonte. Basta confirmar a solicitação e selecionar o local onde os dados serão mostrados. Recomenda-se destinar uma guia da planilha exclusivamente para receber esses dados.

Imagem 01. Importando dados XML para planilha.

Após a importação normalmente acontece de algum erro, (Imagem 02), dependendo do esquema xml importado, porém pode ser ignorado....
Imagem 02. Erro na importação do XML.

O próximo passo é configurar a tabela XML, para isso basta clicar com o botão direito do mouse sobre a tabela importada e selecionar as propriedades do mapa XML, conforme imagem 03 abaixo.
Nessa janela é importante observar a opção de atualização... existem 2 possibilidades. Os dados podem ser sobrescritos ou acrescentados. Na planilha em questão vamos selecionar a opção de acrescentar dados as tabelas existentes. Dessa maneira a cada atualização da tabela novos dados serão acrescentados formando um histórico de importação.

Imagem 03. Configuração do esquema XML
 Após a configuração das propriedades deve-se visualizar o código fonte do XML importado, Imagem 04. Como o esquema XML é muito extenso devemos apagar todas as colunas que não serão úteis ao trabalho... observe que a medida que for eliminando as colunas o código-fonte XML vai sendo tirado do negrito, ficando somente os dados que serão importados na próxima atualização da tabela. Conforme pode verificar no vídeo restaram 27 colunas das 129 importadas no esquema.


Vídeo aula 28 - Parte 02 - Importando XML de notas fiscais para controle de estoque com listview

Após a primeira etapa, foi criado o form, como na Imagem 05, esse formulário utiliza um recurso chamado listview que não é uma ferramenta nativa do VBA, e dessa forma deve ser acrescentado a caixa de ferramentas. O formulário vai conter os códigos para importação dos dados XML para dentro da listview e o tratamento dessas informações para posterior entrada ou saída do estoque...

Imagem 05. Formulário de entrada dos dados XML
 Para adicionar a ferramenta Listview, basta dar um clique com o botão direito sobre a caixa de ferramentas, selecionar controles adicionais e marcar a opção conforme Imagem 06. Esse processo pode não ser tão fácil pois acontece em muitas máquinas não conter o Microsoft WindowsCommon Controls 6.0 (SP6)
Imagem 06. Inserindo o controle Listview.

Nesse caso deve-se buscar o arquivo .OCX que possui essa referência, fazer a instalação (colar o arquivo mscomctl.ocx  dentro da pasta C:\windows\system32). O arquivo pode ser encontrado no site da Microsoft no seguinte link http://search.microsoft.com/en-us/results.aspx?q=mscomctl.ocx .

Imagem 07. Selecionando a Referência  Microsoft WindowsCommon Controls 6.0 (SP6)

Após esse procedimento, entrar no menu ferramentas do VBA ir em Referências e selecionar então o  Microsoft WindowsCommon Controls 6.0 (SP6) (Imagem 07).  Refazer o procedimento da Imagem 06 para adicionar o controle Listview a caixa de ferramentas.

Os demais vídeos mostram os procedimentos e codificação VBA para fazer a aplicação fazer a entrada ou a baixa do estoque.

Vídeo aula 28 - Parte 03 - Importando XML de notas fiscais para controle de estoque com listview

Vídeo aula 28 - Parte 04- Importando XML de notas fiscais para controle de estoque com listview