Português |
English and Others |
IMPRESSOR DE XLS PORTÁVEL
|
|||||||||||||||||||||||||||||||||||||||||
Este utilitário possibilita gerar um arquivo XLS (ou XLSX) a partir de uma planilha de outro XL aberto no Microsoft Excel® resumindo apenas os dados imprimíveis na área de impressão definida. O XLS gerado e o seu original são iguais quando são impressos e quando são exibidos na tela, mas o XLS gerado é mais portável, pois só tem os dados necessários para produzir a mesma impressão. E, como qualquer outro arquivo, pode ser enviado por email, WhatsApp ou transferido usando pendrive ou conexão de rede. Ele também fica fácil de compartilhar, pois é possível exibi-lo em qualquer computador ou em ambiente de computação na nuvem que tenha um visualizador de planilha atual instalado, mesmo se não tiver a versão do Excel usada e necessária para criar o XL original com toda a sua possível complexidade de formulas, filtros, links, macros etc. Esta solução também evita o envio desnecessário de dados com direitos autorais e de dados ocultos ou filtrados no XL original que requerem privacidade como um todo. A impressão aqui para um XLS Portável do Excel é similar à impressão para um PDF da Adobe, mas com algumas vantagens: - Programas capazes de visualizar arquivos XLS básicos são amplamente mais instalados do que visualizadores de PDF; - É mais fiel ao original, pois ainda é uma planilha; - Por ser planilha possibilita maiores facilidades e recursos de edição se eventuais alterações ou complementos forem necessários tais como formatação, inclusão de textos e fórmulas antes de ser encaminhada para um destinatário que, por sua vez, pode fazer alterações e retornar com dados de resposta que podem ser captados para o XL original. Tudo isso feito por interface de usuário ou por código VBA. Veja as figuras abaixo. Ele consiste basicamente de um único arquivo (PortblXLSPrinter.dll, PortblXLSPrinter.exe ou PortblXLSPrinter.xla) que pode ser instalado automaticamente usando um dos pacotes de arquivo de instalação disponíveis abaixo para download. Exceto para a DLL, se optar por Suplemento de COM, nenhuma outra configuração é salva no Registro do Windows. Sua configuração é salva nos arquivos PortblXLSPrinter.ini, PortblXLSPrinter LoadExe.xla, SendKeys.exe e PortblXLSPrinter.xlam que são criados e mantidos pelo próprio utilitário. Você também pode desinstalá-lo total e automaticamente, não deixando nenhuma sujeira no Registro do seu Windows ou disco. Itens a seguir nesta página: Opções de Suplementos para Instalar Função fPortblXLSPrinter() em VBA Características:- O utilitário faz uma cópia especial de uma planilha captando só os dados necessários para produzir uma impressão ou visualização na tela idêntica à planilha original; - Ao captar somente dados imprimíveis, o tamanho do arquivo é reduzido e evita enviar dados confidenciais, fórmulas, links e segredos autorais. As opções de configuração da planilha especial serão as mesmas da planilha original: tamanho do papel, orientação, cabeçalho, rodapé, margens etc. Esses são os diferenciais e as grandes vantagens deste utilitário em relação às soluções diretas oferecidas pelo Excel para o envio de planilha ou de área de impressão por e-mail. Para mais informações sobre essas soluções, veja o excelente estudo feito por Ron de Bruin em: http://www.rondebruin.nl/sendmail.htm; - A planilha criada pode opcionalmente ser protegida contra alterações por uma senha padrão criada aleatoriamente a cada execução ou por uma senha informada por você; - O utilitário salva a pasta de trabalho da planilha criada como um arquivo XLS ou XLSX, aqui denominado apenas de XLS Portável, independentemente de qual seja a extensão; - Suporta abrir um XLS Portável salvo anteriormente e adicionar novas planilhas. Assim, um único XLS Portável pode conter a impressão de todas as planilhas de uma ou mais pastas de trabalho; - Em uma única execução, é possível imprimir qualquer das planilhas em qualquer das pastas de trabalho já abertas no Excel, incluindo planilhas de macro, para um ou mais arquivos XLS Portáveis; - Ao salvar um XLS Portável do Excel, pode imediatamente comprimi-lo para um arquivo zip, reduzindo ainda mais o tamanho do arquivo a portar; - Ao salvar um XLS Portável do Excel, pode imediatamente anexar o mesmo ou sua versão zipada a uma mensagem de e-mail que você pode verificar e então enviar pelo Microsoft Outlook® ou outro recipiente de e-mail padrão no Windows. Ele pode compor o e-mail com dados padrão ou capturar endereço, assunto e mensagem de texto na célula ativa e suas adjacentes, procurando para baixo ou para direita. Estas células, normalmente, devem ficar fora da área de impressão definida que vai como anexo; - Ao salvar um XLS Portável, pode imediatamente salvá-lo como pagina da Web (htm, html). Assim, seu XL original com toda a possível complexidade de formulas, filtros, links, macros etc. possibilitado pelo Excel pode ser exibido na Web tal como impresso ou como visualizado na tela de seu computador enviando apenas os dados necessários e suficientes para tal, economizando banda e evitando o envio desnecessário para área pública de dados com direitos autorais e de dados ocultos ou filtrados no XL original que requerem privacidade como um todo; - O arquivo portável, em vez de XLS ou XLSX, pode ser salvo como documento do Word no formato doc ou docx ou ainda, via Excel, como PDF, txt, csv e todos outros formatos suportados pelo Excel; - Um XLS Portável é útil sempre que o necessário para uma impressão idêntica seja menor do que todo o conteúdo da planilha e particularmente quando enviando planilhas contendo autofiltro que filtre apenas algumas dezenas de linhas entre milhares ou quando há informação no original que seja confidencial em partes ou quando vista no todo; - Em envio de arquivo para impressão direta, um XLS Portável tem a grande vantagem no tamanho em bytes em relação a um arquivo do tipo gráfico (ex. TIF) ou a um arquivo do tipo binário de impressão (ex. PRN). E ainda o destinatário pode usar o Excel para visualizar a planilha ou editá-la, se não protegida, e para imprimir em diferentes tipos de impressora; - Depois de instalado, o utilitário é chamado a partir do Menu Arquivo do Excel > Comando Impressor de XLS Portável... ou, no Excel 2007, a partir do Botão do Office > Botão Split Impressor Portável > Comando Impressor de XLS Portável ou, no Excel 2010 ou mais recente, a partir do Menu Arquivo > Guia Impr. de Arquivo > Comando Impressor de XLS Portável. - Pode ser chamado diretamente a partir de qualquer código VBA através das funções fPortblXLSPrinter() e fGetVersion(). Veja, logo abaixo das figuras, uma descrição detalhada destas funções e exemplos de aplicativos em VBA que a usam; - Ocupa menos de 600 Kb quando instalada. Download:Testado no Excel para Windows, versões 2000, 2002(XP), 2003, 2007, 2010 (32 e 64-bit), 2013 (32 e 64-bit), 2016 (32 e 64-bit) e 2019 (32 e 64-bit) em instalações MSI-based e Click-To-Run do Office 365™ de serviços baseados na nuvem.
Opções de Suplementos para Instalar:Este utilitário pode estar disponível para ser instalado em três opções de suplemento: Suplemento de EXE, Suplemento de COM ou Suplemento do Excel. Suplemento de COM e Suplemento do Excel rodam no Windows no mesmo processo ou espaço de memória do Excel e são tecnologias bem detalhadas na documentação do Excel e em bons livros sobre VBA, enquanto Suplemento de EXE é uma denominação especial aqui para um misto daquelas duas tecnologias onde o mesmo código VBA é rodado em um processo EXE separado e um pequeno Suplemento do Excel faz a conexão entre os dois processos. Apesar das diferenças nas tecnologias, este utilitário é totalmente funcional em qualquer uma delas. Assim, o que pode decidir na sua escolha para instalar são as características abaixo comparadas:
¹Indisponível temporariamente. Figuras:
Função fPortblXLSPrinter():O Impressor de XLS Portável pode ser chamado diretamente a partir de qualquer código VBA através da função fPortblXLSPrinter() que tem estes 11 argumentos opcionais: 1 - ToPrintWorkbookName¹ as String (Opcional. Padrão nome da Pasta ativa). O nome de uma Pasta de Trabalho já aberta no Excel. 2 - ToPrintSheetName as String (Opcional. Padrão nome da planilha ativa). O nome de uma planilha na Pasta ToPrintWorkbookName a imprimir para o arquivo XLS Portável. 3 - ToPrintSheetPasswrd as String (Opcional. Padrão=""). Senha de planilha se a planilha ToPrintSheetName for protegida. 4 - PortblSavePath as String (Opcional. Padrão o mesmo caminho de ToPrintWorkbookName). O caminho no disco onde o arquivo XLS Portável está ou será salvo. 5 - PortblSaveName as String (Opcional. Padrão um nome automático baseado no nome de ToPrintWorkbookName). O nome para o arquivo XLS Portável. 6 - PortblSheetPasswrd as String (Opcional. Padrão “”, sem senha). A senha se a planilha no XLS Portável necessitar ser protegida contra alterações. Em especial, se for passado “RandomPassword” como senha, isto será interpretado como flag para proteger com uma senha aleatória gerada pelo código que não será do conhecimento de ninguém, nem mesmo da pessoa que imprimiu. 7 - ZipPortbl As Boolean (Opcional. Padrão=Falso). Se Verdadeiro, o arquivo XLS Portável criado ou atualizado será imediatamente comprimido para um arquivo zip. 8 - AfterDoneEmail¹ as String (Opcional. Padrão "0"). Um comando definindo a ação a ser realizada depois que o arquivo XLS Portável estiver pronto e salvo. Deve ser uma destas quatro opções: "0" - Para emitir alerta de sucesso. "1" - Para não emitir alerta de sucesso (Fazer e salvar em silêncio). "Um endereço de e-mail" - Para enviar o arquivo XLS Portável anexado a um e-mail para o endereço informado (Pode ser mais de um endereço separados por ";"). "SaveAs" - Para exibir a caixa de diálogo Salvar Como padrão do Excel possibilitando salvar o arquivo XLS Portável em outros formatos suportados pelo Excel como html, txt, pdf etc. Obs.: Para salvar o arquivo portável como documento do Word em vez de XLS ou XLSX, basta informar o nome do arquivo com a extensão .doc ou .docx através do argumento 5, o PortblSaveName. 9 - EmailSubj as String (Opcional). O assunto do e-mail a enviar tendo o arquivo XLS Portável como anexo. 10 - EmailMsg as String (Opcional). A mensagem do e-mail a enviar tendo o arquivo XLS Portável como anexo. 11 - SndKeys as String (Opcional). Possibilita o envio de teclas para a janela de mensagem do e-mail como última ação. Por exemplo: "{PAUSE 1}{VK_162}{VK 83}{VK 162}{PAUSE 2}{ESC}" - Faz uma pausa, envia as teclas CTRL+S, faz outra pausa e finalmente envia ESC para a janela de mensagem do Outlook para salvar, fechar e enviar a mensagem como está para a Caixa de Entrada ou de Rascunho; "{PAUSE 1}{VK_162}{VK 13}{VK 162}" - Faz uma pausa e envia as teclas Ctrl+Enter para a janela de mensagem do Outlook para salvar, fechar e enviar a mensagem como está para a Caixa de Saída. Obs.: Nestes exemplos, as teclas de controle ALT e CTRL são as do lado esquerdo do teclado, pois as do lado direito podem estar customizadas para outras funções, por exemplo, em máquinas virtuais. Para entender a sintaxe dos códigos de envio de teclas, ver aqui e aqui. Caso tenha Microsoft Outlook instalado, em vez de código de teclas, você pode usar as flags SendByCode ou SaveByCode para enviar o e-mail silenciosamente via código para a Caixa de Saída do Outlook ou salvar na Caixa de Rascunho, mas por razões de segurança o Outlook pode eventualmente pedir autorização temporária para o acesso à sua lista de contatos. ¹Se forem informados apenas o argumento ToPrintWorkbookName e o argumento AfterDoneEmail passando e-mail, o arquivo informado em ToPrintWorkbookName será enviado imediatamente tal como está. Isto possibilita que alterações possam ser feitas em um XLS portável já feito antes de enviá-lo como anexo para o e-mail informado. Ou seja, fPortblXLSPrinter() pode ser chamada duas vezes em um processo de três etapas. Na primeira etapa, é chamada para imprimir para um complexo XL em um XLS portável. Na segunda etapa, são feitas alterações no XLS portável gerado tais como formatação, inclusão de textos e fórmulas, pois ele continua sendo uma planilha, uma grande vantagem em relação a imprimir para PDF. E finalmente, na terceira etapa, é chamada novamente para enviá-lo por e-mail com as alterações feitas. A função fPortblXLSPrinter() pode dar os seguintes retornos:
fRet =
-1 (Cancelado pelo usuário); Exemplos: 1 - O código abaixo chama a função fPortblXLSPrinter() para imprimir a planilha ativa para o arquivo SeuPortavel.xlsx na Área de Trabalho do Windows e o zip. 2 - O código abaixo chama a função fPortblXLSPrinter() tal como o utilitário é chamado a partir do comando de menu. 3 - O código abaixo chama a função fPortblXLSPrinter() para imprimir a planilha ativa para o arquivo SeuPortavel.doc na Área de Trabalho do Windows.
Notas sobre métodos Early and Late Binding: Função fGetVersion() em VBA:Esta função possibilita obter o número da versão instalada a partir de qualquer código VBA, retornando um número no formato 0.0.0. O exemplo abaixo chamam a função fGetVersion() para verificar se a versão instalada está atualizada. Exemplo: Veja notas sobre métodos Early and Late Binding. Um Exemplo Avançado em VBA:O código abaixo que suporta qualquer tipo de suplemento instalado é um extrato de um projeto em uso desenvolvido profissionalmente em VBA para um supermercado que tem uma planilha com sua lista geral de dezenas de milhares de produtos que compra e vende, ou seja, seu portfólio. A partir desta lista, calcula os pedidos necessários e gera planilhas de cotação de preços personalizadas para cada fornecedor pré-cadastrado para concorrências e envia por e-mail de forma automática. Em seguida, importa as cotações retornadas dos fornecedores e monta uma concorrência eletrônica para automaticamente indicar o fornecedor ganhador de cada produto. Encerrada a concorrência, emite e envia o e-mail de pedido para cada fornecedor com os produtos que ganhou. Na prática, o projeto VBA envolve processos onde são aplicados filtros na planilha geral que é então impressa para um arquivo XLS portável e não para PDF para serem enviadas por e-mail para os fornecedores que continuam o trabalho em planilha para retornar e serem devidamente importadas de volta para lista geral. Os filtros geram visualizações e, portanto planilhas portáveis extremamente personalizadas. Assim, da mesma lista geral em uma mesma concorrência, um fornecedor conforme seu portfólio pode receber uma planilha com um único produto e outro com milhares mesmo na etapa de cotação. Este projeto mostra a importância da impressão para um arquivo XLS portável e não para um PDF. Nele o ‘Impressor de XLS Portável para Excel’ é normalmente chamado em duas de três etapas. Na primeira, a impressão do que visualizado após filtros aplicados é feita para um arquivo XLS ou XLSX tal como seria feito para um PDF, na segunda etapa, o projeto reabre o XLS portável salvo e insere cabeçalho conforme o fornecedor e formulas de total e subtotal e salva, e, na terceira etapa, ele chama o ‘Impressor de XLS Portável para Excel’ novamente apenas para enviar o XLS para o e-mail do fornecedor tal como foi editado e salvo, ou seja, só envia o e-mail sem imprimir para outro XLS portável, pois eliminaria as fórmulas inseridas. Assim, o fornecedor terá toda comodidade de trabalhar em uma planilha eletrônica com fórmulas e somas automáticas e não em um PDF morto. Além disso, talvez o mais importante, os dados retornados pelas centenas de fornecedores serão importados de planilhas de forma automática e precisa o que não seria prático de ser feito de PDFs, DOCs ou TXTs. Como neste projeto o ‘Impressor de XLS Portável para Excel’ é chamado repetidamente, o melhor foi desenvolver uma função fPortblXLSPrinter() similar onde o objeto disponibilizado para o projeto VBA é criado e criticado uma única vez ao longo de todos os processos. Nele, a crítica de versão atualizada e a necessidade ou não de codificar virgulas e usar as funções fGetBuff() e fSetBuff() já estão embutidas. Assim, se pode usar virgula em qualquer argumento que podem ser de qualquer tamanho. E ainda independe do tipo de suplemento instalado: Veja notas sobre métodos Early and Late Binding.
|
|||||||||||||||||||||||||||||||||||||||||
|