Propaganda
Não seria bom poder abrir uma planilha do Excel ou um documento do Word e sem ter que fazer nada em todos os dados são lidos diretamente de um arquivo de dados de texto ou CSV e carregados diretamente em um gráfico incorporado à sua planilha ou Word documento? Essa é uma forma de automação usando produtos do Office, pois se é possível automatizar a criação de gráficos de dados no Office, pense nas possibilidades. Você pode carregar automaticamente os dados em um gráfico para um relatório que está elaborando para o seu chefe - não é necessário inserir dados. Ou você pode carregar dados em um gráfico diretamente em um email no Outlook.
A técnica para fazer isso envolve a instalação do suplemento Office Web Components. Além disso, você só precisa configurar algumas coisas dentro do aplicativo do Office que deseja usar para importar os dados e está pronto para começar a automatizar o trabalho de geração de relatórios. Abordei alguns dos elementos que usaremos neste artigo nas anteriores
Artigos VBA Como você pode criar seu próprio aplicativo simples com o VBADeseja saber como criar seu próprio aplicativo VBA para resolver problemas? Use estas dicas para criar seu próprio software VBA. consulte Mais informação aqui em MakeUseOf. Alguns deles incluíram a passagem de dados entre aplicações com a área de transferência Passar qualquer informação entre aplicativos VBA usando a área de transferênciaUma das partes mais frustrantes do trabalho com o VBA em aplicativos específicos é que nem sempre é fácil fazer com que dois aplicativos conversem entre si. Você pode tentar transações muito rápidas ... consulte Mais informação exportando Tarefas do Outlook para o Excel Como exportar suas tarefas do Outlook para o Excel com VBASeja você um fã da Microsoft ou não, uma coisa boa que pode ser dita sobre os produtos MS Office, pelo menos, é como é fácil integrar cada um deles um com o outro ... consulte Mais informação e enviando E-mails de um Excel Como enviar emails de uma planilha do Excel usando scripts VBANosso modelo de código o ajudará a configurar emails automatizados no Excel usando scripts CDO (Collaboration Data Objects) e VBA. consulte Mais informação roteiro.O que vou mostrar é como combinar o Office Web Components com o script de arquivo de texto para criar um fluxo contínuo e automatizado de dados de um arquivo de texto simples no seu computador para o seu produto Office (no nosso caso Excel). Você pode usar essa mesma técnica - com algumas pequenas modificações - no Word, Outlook ou até PowerPoint. Qualquer produto do Office (ou qualquer outro produto) que possua um back-end VBA para desenvolvedores permitirá que você use essa técnica.
Importar e criar um gráfico a partir de arquivos de dados
Antes de criar um gráfico a partir de arquivos de dados, primeiro você precisa ativar algumas coisas. Neste exemplo, mostrarei como habilitar esses recursos no Excel, mas o processo é quase idêntico em todos os outros produtos do Office.
Primeiro, antes de poder desenvolver o VBA, você precisa ativar a guia do desenvolvedor na barra de ferramentas (se ainda não o fez). Para fazer isso, basta acessar o menu Opções, clicar em "Personalizar faixa de opções" e ativar a guia "Desenvolvedor".
De volta ao Excle, agora você vê "Desenvolvedor" sendo exibido nos menus. Clique nele e clique em "Design Mode". Em seguida, clique em "Visualizar código" para ver o editor VBA.
No editor, é onde você precisa habilitar as referências necessárias para o código que eu vou fornecer para você trabalhar. Verifique se você instalou o suplemento Office Web Components antes de fazer isso, caso contrário, o objeto Microsoft Chart não estará disponível.
Clique em Ferramentas, depois em Referências, e você verá uma lista de todas as referências disponíveis no seu sistema. Se você não sabe o que é isso, as referências são basicamente bibliotecas de código e objetos que você pode acessar em seu próprio projeto. Isso permite que você faça coisas realmente legais, dependendo da referência que você ativar. Se você acabou de instalar o Office Web Components em seu sistema, precisará adicioná-lo como uma nova biblioteca. Clique no botão Procurar para encontrar o arquivo .dll correto.
Se você instalou o Office Web Components, o arquivo DLL é chamado OWC11.dll e é armazenado em c: \ arquivos de programas \ arquivos comuns \ microsoft shared \ web components \ 11 \
Clique na caixa de seleção da referência "Microsoft Office Web Components 11.0" e também não se esqueça de selecione “Microsoft Scripting Runtime” também, o que lhe dará acesso para ler ou gravar dados arquivos.
Agora que você adicionou a referência, é hora de adicionar o gráfico real à sua planilha. No Excel, você pode adicionar controles clicando em “Inserir” no menu Desenvolvedor e clicando no pequeno ícone de ferramentas no canto em “Controles ActiveX”.
Role até “Microsoft Office Chart 11.0” e clique em OK.
Finalmente estamos começando a trabalhar. Veja como o gráfico do MS Web Component se parece incorporado a uma planilha. Ele parecerá o mesmo incorporado em um documento do Word ou qualquer outra coisa.
Portanto, no caso do Excel, desejo que o gráfico carregue instantaneamente dados do arquivo de dados ao abrir o arquivo da pasta de trabalho. Para fazer isso, vá para o editor de código clicando em "Exibir código" no menu Desenvolvedor e clique duas vezes na pasta de trabalho para ver o código da pasta de trabalho. Mude o menu suspenso direito para "Abrir". Este é o script que será executado quando o arquivo da pasta de trabalho for aberto pela primeira vez.
Para carregar o gráfico com dados do código, o próprio gráfico precisa de um nome. Volte para a planilha, clique com o botão direito do mouse no gráfico e escolha Propriedades. Você verá o campo "Nome" com algo como "ChartSpace1". Você pode mudar isso para qualquer coisa. Chamei o meu de "MyChart".
Além disso, apenas para você saber como é o arquivo de dados - o meu é um arquivo de texto preenchido com valores de dados no formato delimitado por vírgula. Esse arquivo pode ser qualquer coisa - dados de laboratório exportados de sensores, informações financeiras digitadas no arquivo manualmente por estagiários ou qualquer outra coisa. Você estará lendo o arquivo com seu código, portanto, não importa a aparência dos dados, desde que você saiba como será cada linha quando o programa o ler.
Então, agora a parte divertida. Vou mostrar o código em pequenas seções para que não seja esmagador e explicar o que o código faz. A parte superior do código primeiro lerá todos os valores do arquivo de texto e os armazenará em dois arrayx, um para variáveis x (xVar) e outro para variáveis y (yVar).
Dim fso As New FileSystemObject. Dim fnum. Dim MyFile As String. Dim strDataLine As String. Dim xVar () como variante. Dim yVar () como variante. Dim intNumOfLines As Inteiro MyFile = "c: \ files \ MyData.txt" fnum = FreeFile () Abra o MyFile para entrada como nº 1. intNumOfLines = 0. Fazer enquanto não EOF (1) intNumOfLines = intNumOfLines + 1 Entrada nº 1, strDataLine Entrada nº 1, strDataLine. Ciclo. Fechar # 1 ReDim xVar (intNumOfLines) ReDim yVar (intNumOfLines) Abra MyFile para entrada como # 1. intNumOfLines = 0. Fazer enquanto não EOF (1) Entrada nº 1, xVar (intNumOfLines) Entrada nº 1, yVar (intNumOfLines) intNumOfLines = intNumOfLines + 1. Ciclo. Fechar # 1
Esse código basicamente percorre o arquivo de dados duas vezes - a primeira vez para dimensionar as matrizes para que eles são o comprimento exato necessário para armazenar os dados e, em seguida, uma segunda vez para ler os dados naqueles matrizes. Se você não souber o que é uma matriz - é uma variável ou uma área de armazenamento que conterá uma longa lista de valores que você pode acessar usando a ordem em que o valor foi armazenado na matriz. O terço carregado seria (3), por exemplo.
Agora que você tem duas dessas matrizes carregadas com todos os valores do seu arquivo de dados, está pronto para carregar esses valores no gráfico que já incorporou. Aqui está o código que faz isso.
Com Sheet1.MyChart .Clear .Refresh Defina oChart = .Charts. Adicione oChart. HasTitle = TrueChart. Título. Legenda = "Meus valores de dados" 'oChart. Interior. Cor = gráfico azul. PlotArea. Interior. Cor = "branco" Defina oSeries = oChart. SeriesCollection. Adicionar com oSeries .Caption = "Meus valores de dados" .SetData chDimCategories, chDataLiteral, xVar .SetData chDimValues, chDataLiteral, yVar .Line. Cor = "azul" .Linha. DashStyle = chLineDash .Line. Peso = 2. Tipo = chChartTypeLine Finalizar com oChart. HasLegend = True. oChart. Lenda. Position = chLegendPositionBottom. Terminar com
É o "Sheet1.MyChart" que conecta o código ao gráfico real que você incorporou. É baseado no que você nomeou. Esse será o caso quando você o incorporar ao Word, Powerpoint ou qualquer outro produto do Office. Você não o indicará usando "Plan1", mas, em vez disso, qualquer elemento que contenha o gráfico nesse caso, como "documento1" no Word, por exemplo.
O código acima define a rotulagem e a coloração do gráfico e, em seguida, carrega os valores usando o método ".setdata" para os valores x e y do conjunto de dados bidimensional. Após a execução do código acima, o gráfico a seguir será exibido.
Esses dados são retirados diretamente do arquivo de texto. A única desvantagem aqui é que os arquivos de dados precisariam ser bidimensionais apenas se você quiser usar o código acima. Você pode adicionar mais valores ao conjunto de dados, mas precisa modificar o código acima para ler o terceiro valor a cada vez no loop e duplicar o "SeriesCollection. Adicionar ”para criar outra série e adicioná-la ao gráfico da mesma maneira.
Pode parecer complexo apenas ler o código acima, mas depois de fazer um desses, é fácil modificá-lo para quaisquer que sejam suas necessidades. Você pode usar o mesmo gráfico e código semelhante para criar um gráfico de barras, um gráfico de dispersão ou qualquer outro tipo de gráfico que desejar usando esse mesmo objeto. É versátil e flexível - e é uma ferramenta poderosa em seu arsenal se você é um fã da automação para aumentar a produtividade.
Brinque com o código acima e veja se você pode carregar dados automaticamente em seus aplicativos. Quais usos criativos você pode imaginar para esse tipo de automação? Compartilhe seus pensamentos e feedback na seção de comentários abaixo!
Ryan é bacharel em Engenharia Elétrica. Ele trabalhou 13 anos em engenharia de automação, 5 anos em TI e agora é engenheiro de aplicativos. Um ex-editor-chefe do MakeUseOf, ele falou em conferências nacionais sobre visualização de dados e foi apresentado na TV e rádio nacional.