Archive for the 'Microsoft Office' Category

Excel - Somando Meses com a função DATA()

janeiro 5th, 2009 by Tomás Vásquez

Trabalhar com datas sempre foi algo instigante no Excel. O melhor de tudo é que esta máxima se aplica pela facilidade e dificuldade de aplicar cálculos sobre valores de data.

Como o mecanismo que define as datas no Excel é baseado em número sequênciais, algumas tarefas como soma ou subtração de dias ou horas é uma tarefa simples. Já quando se trata de meses ou anos, cuja valores são incertos e dependem de cada mês ou ano, a coisa complica um pouco.

Por exemplo, não é garantido que daqui a um mês seja a data de hoje mais 30 dias, pois alguns meses possuem 31 dias e outros 28, como fevereiro, ou pior pois dependendo do ano, pode ter 29.

Neste caso, a função DATA() auxilia na construção de datas baseadas em informações de ano, mês e dia. Por exemplo, a seguinte função:

=DATA(2008;12;01)

Retorna a data 01/12/2008.

Até aí é óbvio, mas a função data tem algumas características interessantes. Por exemplo, se quiséssemos somar um mês a esta data, teríamos a seguinte função:

=DATA(2008;12+1;01)

Apesar do resultado da função ser =DATA(2008;13;01) e 13 ser um mês inválida, a função resolve elegantemente a situação retornando o seguinte resultado:

01/01/2009

Da mesma forma aconteceria com os dias, por exemplo, a função

=DATA(2008;12;32)

Retorna

01/01/2009

Valores negativos também são tratados da mesma forma, porém neste caso, atrasando a data informada.

Para auxiliar no uso desta função, recomenda-se as funções ANO(), MÊS() e DIA() para extrair os valores de uma data informada. Todas estas recebem uma data como parâmetro. Por exemplo, para que uma célula sempre mostre uma data que seja exatamente daqui a um mês, a fórmula é:

=DATA(ANO(HOJE());MÊS(HOJE())+1;DIA(HOJE()))

Bom proveito!

Tomás

VBA - Abrindo arquivos informando a senha

outubro 27th, 2008 by Tomás Vásquez

Esta foi uma pergunta feita num fórum e como é uma informação interessante, resolvi postar aqui.

Muita gente, aliás, todo mundo que trabalha com planilhas no dia a dia costuma proteger os arquivos mais críticos com senha de abertura do arquivo.

Até aí a coisa é simples meso para usuários básicos. Mas quando se quer automatizar este tipo de arquivo com VBA, por exemplo, abrindo-o através de outro arquivo, fica ou pouco complicado. Mas nem tanto.

Se reparar bem, ao ativar no próprio VBA o método Open da coleção Workbooks, será possível ver que um dos parâmetros da função é a senha de abertura do arquivo. O exemplo abaixo abre um arquivo de Excel via VBA:

Sub AbreArquivo()

Call Workbooks.Open(FileName:="C:\arquivo.xls")

End Sub

Porém, caso o arquivo contenha senha de abertura, bastaria adicionar o seguinte argumento:

Sub AbreArquivoComSenha()

Call Workbooks.Open(FileName:="C:\arquivo.xls", Password:="1234")

End Sub

Para informação, o método devolve um objeto do tipo Workbook que pode ser manipulado depois de aberto.
Isso resolve o problema. Claro, é preciso tomar os devidos cuidados para proteger o projeto VBA e não expor indevidamente a senha para o usuário. Recomenda-se também adicionar um tratamento de erros para inibir ainda mais as mensagens.

Em tempo, a mesma informação é válida para o Word/VBA, porém a coleção utilizada é a Documents e o nome do parâmetro é PasswordDocument. O código abaixo mostra um exemplo da aplicação.

Sub AbreDocumentoComSenha()

Call Documents.Open(FileName:="C:\Documento.doc", _
PasswordDocument:="1234")

End Sub

Abraços

Tomás

VBA - Emitindo mensagens personalizadas com MsgBox

outubro 7th, 2008 by Tomás Vásquez

O que é?

A função MsgBox exibe uma caixa de mensagem ao usuário e aguarda com que o
usuário clique em um de seus botões para que esta seja fechada.

A estrutura de chamada à função MsgBox se faz da seguinte forma:

MsgBox([prompt][, buttons] [, title] [, helpfile, context]) As VbMsgBoxResult

Prompt

Obrigatória. Expressão de seqüência de
caracteres
exibida como mensagem na caixa de
diálogo. O comprimento máximo de prompt é de aproximadamente 1.024
caracteres, dependendo da largura dos caracteres utilizados. Se prompt consistir em mais de uma linha, você poderá separar as linhas utilizando um
caractere de retorno de carro (Chr(13)), um caractere de
alimentação de linha (Chr(10)) ou uma combinação de caracteres
de retorno de carro e alimentação de linha (Chr(13) & Chr(10)) entre cada linha.

Buttons

Opcional. Expressão
numérica
que é a soma de valores que especifica o
número e o tipo de botões a exibir, o estilo de ícone a utilizar, a identidade
do botão padrão e a modalidade da caixa de mensagem. Se omitido, o valor
padrão para buttons é 0.

Title

Opcional. Expressão de seqüência de caracteres exibida
na barra de título da caixa de diálogo. Se você omitir title, o nome do
aplicativo será inserido na barra de título.

Helpfile

Opcional. Expressão de seqüência de caracteres que
identifica o arquivo de Ajuda a ser utilizado para fornecer ajuda
sensível ao contexto relativa à caixa de diálogo. Se helpfile for
fornecido, context também deverá ser fornecido.

Context

Opcional. Expressão numérica que é o número de
contexto da Ajuda atribuído ao tópico da Ajuda apropriado por
seu autor. Se context for fornecido, helpfile também deverá ser
fornecido.

Definições

As definições do argumento buttons são as seguintes:

Constante Valor Descrição
VbOKOnly 0 Exibe somente o botão OK.
VbOKCancel 1 Exibe os botões OK e Cancelar.
VbAbortRetryIgnore 2 Exibe os botões Abortar, Repetir e Ignorar.
VbYesNoCancel 3 Exibe os botões Sim, Não e Cancelar.
VbYesNo 4 Exibe os botões Sim e Não.
VbRetryCancel 5 Exibe os botões Repetir e Cancelar.
vbCritical 16 Exibe o ícone Mensagem crítica.
vbQuestion 32 Exibe o ícone Consulta de aviso.
vbExclamation 48 Exibe o ícone Mensagem de aviso.
vbInformation 64 Exibe o ícone Mensagem de informação.
vbDefaultButton1 0 O primeiro botão é o padrão.
vbDefaultButton2 256 O segundo botão é o padrão.
vbDefaultButton3 512 O terceiro botão é o padrão.
vbDefaultButton4 768 O quarto botão é o padrão.
vbApplicationModal 0 Janela restrita do aplicativo; o usuário deve responder à caixa de
mensagem antes de continuar o trabalho no aplicativo atual.
vbSystemModal 4096 Janela restrita de sistema; todos os aplicativos são suspensos até que o
usuário responda à caixa de mensagem.
vbMsgBoxHelpButton 16384 Adiciona o botão ‘Ajuda’ à caixa de mensagens
VbMsgBoxSetForeground 65536 Especifica a janela da caixa de mensagens como a janela de primeiro
plano
vbMsgBoxRight 524288 O texto é alinhado à direita
vbMsgBoxRtlReading 1048576 Especifica que o texto deve aparecer como leitura da direita para a
esquerda em sistemas hebraico e árabe

O primeiro grupo de valores (0 a 5) descreve o número e o tipo de botões
exibidos na caixa de diálogo; o segundo grupo (16, 32, 48, 64) descreve o
estilo de ícone; o terceiro grupo (0, 256, 512) determina qual botão é o
padrão e o quarto grupo (0, 4.096) determina a modalidade da caixa de
mensagem. Quando estiver somando números para criar um valor final para o
argumento buttons, utilize somente um número de cada grupo.

Observação   Essas constantes são especificadas pelo
Visual Basic for Applications. Como resultado, os nomes podem ser utilizados
em qualquer lugar do seu código em vez dos valores reais.

Como o MsgBox é uma Função (Function), é possível capturar o
valor retornado conforme a ação do usuário.

Valores retornados

Constante Valor Descrição
vbOK 1 OK
vbCancel 2 Cancelar
vbAbort 3 Abortar
vbRetry 4 Repetir
vbIgnore 5 Ignorar
vbYes 6 Sim
vbNo 7 Não

Exemplo

Apesar do grande número de opções e parâmetro oferecidos pelo MsgBox,
vamos nos concentrar em sua funcionalidade mais simples neste momento, que é
emitir mensagens ao usuários. Veja este exemplo de código abaixo:

1

2

3

Public Sub TesteMsgBox()

   MsgBox “Seja bem vindo ao
Microsoft Excel!”

End Sub

Execute a função e terá o seguinte resultado:

Na código de exemplo, apenas o primeiro parâmetro é informado, o suficiente
para fazer uso de mensagens simples. Porém é possível personalizar ainda mais
a caixa de mensagem conforme mostra o próximo código de exemplo:

1

2

3

Public Sub TesteMsgBox()

   MsgBox “Seja bem vindo ao
Microsoft Excel!”, vbInformation, “Testando o MsgBox”

End Sub

Note que mais dois parâmetros foram informados, o parâmetro Button e Title. Execute a função e terá o seguinte resultado:

O parâmetro Title permitiu alterar o título da MsgBox, enquanto
o parâmetro Button alterou o contexto da informação. Como foi informado
que o botão a ser mostrado seria do tipo vbInformation, um ícone de
informação foi adicionado ao caixa e mensagem. Outro tipos de Buttons podem
ser utilizadas, que geraram diferentes ícones, conjunto de botões, alterando
inclusive o som que é executado ao mostrar a caixa. Claro que o ideal é sempre
colocar uma mensagem que esteja de acordo com o contexto. Veja a diferença da
aparência se mudar o parâmetro para o seguinte:

1

2

3

Public Sub TesteMsgBox()

   MsgBox “Ocorreu algum
erro!”, vbCritical, “Testando o MsgBox”

End Sub

O resultado da execução do código será a seguinte:

Note a mudança do ícone e do som emitido pelo aplicativo. A mensagem também
foi alterada para refletir a contexto do ícone utilizado.

Comentários

Como o MsgBox é uma função (Function), sua execução retorna um
valor que é do tipo VbMsgBoxResult. Quando se utiliza alguns tipos
especiais de parâmetros Button, este retorna nos dá uma alternativa de
analisar a decisão do usuário com base no retorno do MsgBox.

Quando helpfile e context são fornecidos, o
usuário pode pressionar F1 (Windows) ou AJUDA (Macintosh) para visualizar o
tópico de Ajuda que corresponde ao context. Alguns
aplicativos host, por exemplo, o Microsoft Excel, também adicionam
automaticamente um botão Ajuda à caixa de diálogo. Se o usuário clicar
em OK ou pressionar , a função InputBox retornará o que estiver
na caixa de texto. Se o usuário clicar em Cancelar, a função retornará
uma seqüência de caracteres de comprimento zero (”").

Observação   Para especificar mais que o primeiro
argumento nomeado, você deve utilizar InputBox em uma expressão. Para
omitir alguns argumentos posicionais, você deve incluir o delimitador de
vírgula correspondente.

Pratique!

Caso não consiga abrir os arquivos, clique nos links com o botão direito do
mouse e escolha “salvar como”.

Baixe a planilha para praticar.

VBA - Auto executando macros ao abrir arquivos do Office

outubro 2nd, 2008 by Tomás Vásquez

É uma necessidade básica para quem está começando a programar em VBA.

Depois da criação das primeiras macros e formulários, é preciso alguma forma de executá-los sem precisar ir direto ao VBA ou simplesmente acionando o menu de macros.

Os caminhos mais tradicionais são:

  • Associar a execução de uma macro a um botão de comando ou outro componente qualquer
  • Colocar a execução de determinada macro na abertura do arquivo

Vamos tratar aqui da segundo item.

Usando o Auto_Open

Existe uma forma geral de executar esta tarefa no VBA, idenpendente de qual seja o aplicativo hospedeiro. Basta dar ao nome da macro, ou seja, o cabeçalho da função como Auto_Open.

Suponha a macro abaixo:

Public Sub MostraMensagem()
MsgBox "Seja bem vindo"
End Sub

Clicar em F5 para testar o código. O resultado deve ser uma caixa de mensagem com a mensagem “Seja bem vindo”. Para mostrar esta macro na abrir um arquivo, bastaria que esta fosse renomeada para Auto_Open ao invés do nome original. Para não estragar o código, poderíamos criar uma macro de nome Auto_Open que chama a nossa macro, por exemplo:

Public Sub Auto_Open()
Call MostraMensagem
End Sub

O único requisito para o funcionamento desta macro é que ela não tenha parâmetros, podendo ser um Function ou Sub e ser chamada após esta execução.

Mapeando o evento de abertura do arquivo

Este é outro método também largamente utilizado. Praticamente todos os aplicativos dotados do VBA possuem um evento que representa a abertura de um arquivo. Abaixo segue alguns exemplos do Microsoft Office:

Aplicativo Evento
Excel Workbook_Open
Word Document_Open

Alguns aplicativos são excessão, como o PowerPoint que suporta somente eventos em nível de Aplicativo, assunto não abordado aqui.

Como exemplo, usarei o Excel para mapear o evento Workbook_Open.

  • Abra o Excel
  • Acione o VBA em Ferramentas->Macro->VBA ou simplesmente Alt+F11
  • Na janela de projeto, procure o item EstaPasta_de_trabalho
  • Clique duas vezes para abrir a tela de código
  • Na caixa de listagem à esquerda superior da tela de código, selecione o item Workbook
  • Caso nada aconteça, selecio a caixa de listagem à direto superior da tela de código e selecione o item Opem
  • Isso fará com que o evento Workbook_Open seja criado automaticamente

O código gerado é parecido com este:

Public Sub Workbook_Open()
End Sub

Qualquer código colocado dentro deste procedimento será executado na abertura da pasta de trabalho.

Conclusão

Como no VBA não existe um contexto de aplicativo, onde existe um método principal de início de execução, estas rotinas auxiliam bastante quando profissionalizamos programas feitos nesta linguagem.

Bom proveito!

Office - Soluções prontas para usar

setembro 28th, 2008 by Tomás Vásquez

O velho paradigma: Para que criar se é possível reaproveitar?

Puristas gostam de fazer do seu próprio jeito, mas se cada um quisesse inventar a sua própria roda, onde estaríamos hoje?

Bom, baseado nesse conceito é que existem uma série de exemplos já criados que podem ser reaproveitados (neste site inclusive ;-)). Quando estes exemplos vem de uma fonte confiável, melhor ainda!

A Microsoft através de seu portal publica exemplos atrás de exemplos dos mais variados tipos e melhor, condensa os melhores em uma página de soluções focadas para o dia a dia das empresas. São arquivos criados por editores de alto nível, geralmente empresas parceiras.

A lista destes exemplos pode ser vista em seguida:

Soluções prontas para usar Controle de estoque, folha de pagamento, fluxo de caixa e muito mais.
.

Ata de Reunião

Criada para facilitar a elaboração de atas de reunião, para posterior distribuição entre os participantes.

• Faça o download da Ata de Reunião
.

Calendário de Atividades

Para facilitar a elaboração e emissão de um calendário de atividades do escritório, casa ou escola.

• Faça o download do Calendário de Atividades
.

Capa de Fax

Para ser usado na criação de folhas de rosto, para envio de mensagens via fax, integrando o MS-Word e o MS-Outlook.

• Faça o download da Capa de Fax
.

Controle de Energia

Sua função é auxiliar no controle de energia dos principais eletrodomésticos, e calcular a média de gastos mensais.

• Faça o download do Controle de Energia
.

Controle de Estoque

Sua função é auxiliar no controle do estoque dos produtos de consumo interno de pequenas empresas.

• Faça o download do Controle de Estoque
.

Controle de Horas

Tem a finalidade de facilitar o controle das horas trabalhadas.

• Faça o download do Controle de Horas
.

Custo de Funcionário

Para somatórias de salário, benefícios e tributação envolvida na contratação de funcionários.

• Faça o download do Custo de Funcionário
.

Fluxo de Caixa

A função desta solução é auxiliar no controle de movimentação de contas efetuando lançamentos de despesas

• Faça o download do Fluxo de Caixa
.

Folha de Pagamento

Para facilitar a elaboração e emissão de uma folha de pagamento.

• Faça o download da Folha de Pagamento
.

Gerenciamento de Clientes

Este modelo tem como objetivo facilitar o controle sobre as operações de compra e venda de uma empresa.

• Faça o download do Gerenciamento de Clientes
.

Históricos Financeiros

O objetivo desta aplicação é apresentar aos usuários uma forma simples e rápida de organizar uma aplicação utilizando os recursos interativos do Microsoft Excel.

• Faça o download dos Históricos Financeiros
.

Lançamentos Financeiros

Esta solução a forma que podemos acessar uma base de dados em MS-SQL Server 7.0 e gerar relatórios através de uma Tabela Dinâmica, em uma interface customizada e amigável.

• Faça o download dos Lançamentos Financeiros
.

Lista de Ramais

Um recurso simples, porém muito utilizado pelas empresas é uma lista de ramais internos. Esta aplicação desenvolvida em MS-Excel apresenta uma serie de funcionalidades, como pesquisa por nome/apelido, nome completo e alias. Permite a impressão da lista e a pesquisa por aniversariantes do dia, da semana ou mês.

• Faça o download da Lista de Ramais
.

Prestação de Contas

Com esta solução, você poderá simplificar a atividade de prestar contas de viagens, sendo possível, visualizar as despesas realizadas de acordo com as suas diferentes categorias e tipos. A Solução permite que você efetue análises gráficas da distribuição das despesas.

• Faça o download da Prestação de Contas
.

Simulador de Vendas

Esta solução permite que você faça simulações do volumes de vendas da sua Empresa. Tomando como partidor os valores de previsão de vendas (previsto ou budget) para o ano e dos valores realizados até a presente data, com o simulador você poderá definir quanto falta para você vender, por produto, para atingir a meta estabelecida no plano anual de vendas ou buscar uma nova meta para melhorar a sua bonificação/remuneração.

• Faça o download do Simulador de Vendas

O link original é:

http://www.microsoft.com/brasil/pequenasempresas/office/solucoes.mspx

Bom proveito!