Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

Lista 2013 - 200 Livros de Excel - VBA





Aprendermos coisas online é muito comum hoje em dia. Entramos no Youtube e temos video aulas, buscamos por tutoriais, manuais e Guias. Tudo disponível com fácil acesso na Internet.

Mas o que aconteceu com a aprendizagem da maneira antiga através da leitura de livros?

Aaqueles que preferem aprender Excel através de um bom livro impresso ficará feliz em saber que existem muitos livros em circulação sobre o assunto.

O MS Excel é um grande negócio e há uma abundância de textos para escolher. 

Estou disponibilizando a Lista 2013 - 200 Livros de Excel nas seguintes categorias:

Análise de Dados

Análise de Dados e Visualização

Ciências

Estatística

Excel para MAC

Financeiro

Funções

Gráficos

Negócios

Outras Especialidades

Referências Gerais

Tabela Dinâmica / Pivot Tables

VBA

Solicite o arquivo com os 200 Títulos. Apenas deixe o seu nome com o e-mail nos comentários para que envie a lista para você. A lista tem links para que possa visualizar o conteúdo dos livros diretamente nos respectivos sites.

Vou publicando a lista aos poucos aqui no Blog e espero que gostem.






Se desejarem deixem alguns títulos nos comentários.

Tags: Books, Excel, Livros, Lista 2013, VBA



VBA Tips Exclusive - Geração Espontânea de Datas Retroativas



Se olharmos para o passado, analisando os inúmeros anos de experiência que temos, quais desenvolvedores, às vezes temos a impressão de que neste anos todos, várias vezes, desenvolvemos diversas funcionalidades (códigos) que serviram exclusivamente as nossas necessidades pontuais. Pensamos: 'Não é possível que alguém mais no mundo, precise de algo sequer parecido com esse código que acabei de desenvolver'.

Tal impressão de que os nossos códigos são tão proprietários que até seria inútil compartilhá-los com outros, impede-nos de trazer à tona soluções criativas que poderiam auxiliar muitos desenvolvedores mundo à fora.

O que segue é uma reflexão neste sentido. Olhando o passado, olha a ironia da funcionalidade do código, Percebi que tinha um código desenvolvido para a Geração Espontânea de Datas Retroativas. E este parecia-me encaixar-se na descrição do primeiro parágrafo. Os seus comentário a posteriori, é que me dirão se ele foi útil, ou não.

Sintaxe: GeraMonths(<Parâmetro>) <Retorna data no formato mmm|yy>

Se parametrizarmos com '0' (zero), retorna uma lista retroativa com todos os próximos 11, além do atual.

? GeraMonths(0) ' Supondo que estejamos no mês 05/2013:

mai|13
abr|13
mar|13
fev|13
jan|13
dez|12
nov|12
out|12
set|12
ago|12
jul|12
jun|12

Qualquer outro número, retornar o respectivo mês retroativo a partir do atual.

? GeraMonths(1) ' Supondo que estejamos no mês 05/2013:

mai|13

? GeraMonths(2) ' Supondo que estejamos no mês 05/2013:

abr|13

? GeraMonths(12) ' Supondo que estejamos no mês 05/2013:

jun|12

Divirta-se!

Function GeraMonths (MonthNumber As Byte) As String
    '        Author: André Luiz Bernardes - Bernardess@gmail.com.
    '          Date: 28/05/2012 - 10:30.
    '   Application:
    ' Functionality: Gera uma lista de 12 meses retroativos ao atual no formato "mmm|yy".
    
    Dim nMonth As String
    Dim i As Integer
    Dim j As Integer
    Dim k As Boolean
    Dim l As Boolean

    Let i = 0
    Let j = 0
    Let k = True
    Let l = True
    
    ' Gera 12 meses a partir do mês atual.
    While i < 12
    
        ' Na 1ª vez gera o mês atual.
        If k Then
            Let nMonth = Format(Now(), "mmm") & "|" & Format(Now(), "yy")
            
            Let k = False
        Else ' Apartir da 1ª vez subtrai 31 dias.

            ' A partir do mês de Jan o ano precisa ser subtraido por 1.
            If InStr(1, nMonth, "jan") <> 0 Then
                Let l = False
            End If

            If l Then
                Let nMonth = Format(Now() - j, "mmm") & "|" & Format(Now(), "yy")
            Else
                Let nMonth = Format(Now() - j, "mmm") & "|" & Format(Now(), "yy") - 1
            End If
        End If

        Let i = i + 1
        Let j = j + 31

        If MonthNumber = i Then
            Let GeraMonths = nMonth
            
            Debug.Print i & " - " & nMonth
        ElseIf MonthNumber = 0 Then
            Let GeraMonths = nMonth

            Debug.Print i & " - " & nMonth
        End If
    Wend
End Function

Ahh, claro, mas que desenvolvedor sou eu que não explico qual a funcionalidade para tal código.

Pois bem meus caros, regularmente recebia um arquivo texto com dados de MAT (Últimos 12 meses, mês-a-mês). O cabeçalho deste arquivo vinha com a descrição pouco aplicável ao relatório no qual iria utilizá-lo, algo como: UN12, UN11, UN10, etc...

Precisei criar uma interface, que no momento da importação, imprimisse um novo cabeçalho a tais campos. Este deveria ser indicado pelo usuário responsável pelo processamento.



Pode observar na imagem acima, no canto extremo à direita do formulário, um botão com a imagem de '2 olhos'.
Quando este é pressionado os campos anteriores são automaticamente preenchidos.

O código para isso?

Segue:

Function PreTyping (nField As Byte)
    '        Author: André Luiz Bernardes - Bernardess@gmail.com.
    '          Date: 28/05/2012 - 10:30.
    '   Application:
    ' Functionality: Preenche automaticamente os campos de meses

    'Carrega o nome dos meses.
    If nField = 1 Then
        Let Form_frm_Months.cxExercise01.Value = GeraMonths(1)
        Let Form_frm_Months.cxExercise02.Value = GeraMonths(2)
        Let Form_frm_Months.cxExercise03.Value = GeraMonths(3)
        Let Form_frm_Months.cxExercise04.Value = GeraMonths(4)
        Let Form_frm_Months.cxExercise05.Value = GeraMonths(5)
        Let Form_frm_Months.cxExercise06.Value = GeraMonths(6)
        Let Form_frm_Months.cxExercise07.Value = GeraMonths(7)
        Let Form_frm_Months.cxExercise08.Value = GeraMonths(8)
        Let Form_frm_Months.cxExercise09.Value = GeraMonths(9)
        Let Form_frm_Months.cxExercise10.Value = GeraMonths(10)
        Let Form_frm_Months.cxExercise11.Value = GeraMonths(11)
        Let Form_frm_Months.cxExercise12.Value = GeraMonths(12)
    End If
End Function

Pois é, acho que ninguém vai precisar de uma solução assim. O que você acha? Deixe seus comentários...

Tags: Tips, Exclusive, VBA, geração










Business Intelligence - 03 de 10 - Regras Clássicas para implementação

Antigamente as empresas gastavam muito dinheiro com BI, mas nem sempre conseguiam alcançar os resultados pretendidos. Prova disso são as reclamações generalizadas de usuários sobre a falta da qualidade dos dados e a dificuldade de utilização dos respectivos sistemas e ferramentas de BI. Não raro detectam-se relatórios incompletos e/ou dados imprecisos que impactam severamente na tomada de decisões. Tais deficiências são causadas por fraquezas funcionais e organizacionais na implementação de projetos deBusiness Intelligence.

Sim meus caros, é essencial aprendermos com os erros de outros projetos de implementação de um Business Intelligence, o que segue são 10 dicas para a implementação de um BI.

3. Envolver os utilizadores numa fase inicial

Na fase inicial, o departamento de TI deve criar um protótipo simples da solução. Desta forma, pode ser feita uma revisão assegurar que os requisitos essenciais serão incluídos desde o início. Na implementação de um projecto de BI, os colaboradores dos departamentos especializados devem sempre ser incluídos lelamente, uma vez que são esses indivíduos que, no futuro, irão trabalhar com as aplicações. Quando se testar o protótipo, esses colaboradores podem determinar se o projeto segue o escopo.

Tags: BI, Business Inteligence,



Excel Tips - Funções de Lógica - Logical functions

Inline image 1

Para utilizarmos bem as funções do MS Excel precisamos ao menos saber que existem e conhecermos onde as podemos aplicar.

O que segue são algumas destas que podemos utilizar extensivamente, agora com um pouco mais de conhecimento.

Tenham em mente que elas estão expressas em inglês, escolhi assim para que pudéssemos ter proveito delas tanto funcionalmente no MS Excel quanto na programação VBA. Sei que na maioria das empresas a instalação está em português, o que pessoalmente acho péssimo, nestes casos poderá procurar pela referência de como escrevê-la em Português.

Ahh e não reclamem, aproveitem para usar o Google Translate se precisarem.

Funções de Lógica

AND
Returns TRUE if all of its arguments are TRUE

FALSE
Returns the logical value FALSE

IF
Specifies a logical test to perform

IFERROR
Returns a value you specify if a formula evaluates to an error; otherwise, returns the result of the formula

NOT
Reverses the logic of its argument

OR
Returns TRUE if any argument is TRUE

TRUE
Returns the logical value TRUE


Tags: Function, Excel, Tips, functions, Logical, lógicas, lógica


Business Intelligence - 04 a 10 - Regras Clássicas para implementação



Antigamente as empresas gastavam muito dinheiro com BI, mas nem sempre conseguiam alcançar os resultados pretendidos. Prova disso são as reclamações generalizadas de usuários sobre a falta da qualidade dos dados e a dificuldade de utilização dos respectivos sistemas e ferramentas de BI. Não raro detectam-se relatórios incompletos e/ou dados imprecisos que impactam severamente na tomada de decisões. Tais deficiências são causadas por fraquezas funcionais e organizacionais na implementação de projetos deBusiness Intelligence.

Sim meus caros, é essencial aprendermos com os erros de outros projetos de implementação de um Business Intelligence, o que segue são 10 dicas para a implementação de um BI.

4. Ter apoio da Gestão

A equipe do projeto deve ter apoio da gestão. Esta é a única forma de garantir que os objetivos corporativos a curto e longo prazo sejam incorporados. A implementação é monitorizada pela comção de indicadores de desempenho (KPI) permanentes dos rácios operacionais mais importantes.

5. Identificar os Indicadores de Desempenho (KPI) requeridos

São necessários valores operativos a gestão dos processos de uma companhia. A equipa de projecto deve defini-los em conjunto com o departamento especialista. No manuseamento e produção de materiais, por exemplo, indicadores de desempenho tais como "custo do material por cada componente" ou "volume de negócio por colaborador" são variáveis provadas. Isto torna mais fácil determinar se os objetivos foram alcançados ou não.

6. Garantir a integração e qualidade dos dados

Integração dos dados é um fator decisivo o sucesso de um projeto de BI. A equipe deve identificar os sistemas operacionais nos quais a informação requerida está disponível e como os dados devem ser acessados. informação atualizada, o acesso direto é a melhor opção. Se a qualidade dos dados brutos não for suficiente, isso deverá ser melhorado com as ferramentas de software apropriadas acessar todas as fontes de dados.

7. Descubra que ferramentas de BI já estão disponíveis na empresa

Quando um novo projeto é iniciado, é necessário determinar se as ferramentas existentes os usuários finais devem continuar a ser utilizadas ou se devem ser substituídas completamente. Na maioria dos casos, a padronização num único sistema de BI é preferível garantir consistência na disponibilização da informação dentro da empresa.

8. Escolher o Software de BI correto

Com uma Proof-of-Concept (PoC), a equipe de projeto decide o software mais adequado, baseando-se geralmente  em um briefing específico. Este procedimento permite à equipe de projeto garantir com maior grau de certeza de que o software se adequa ao seu negócio.

9. Limitar o tempo de execução do projeto

Aqui aplica-se a velha regra: "Tudo o que dure mais que seis meses deixa de ser um projeto e passa a ser um problema." Quando se implementa um novo projeto de BI, os departamentos especializados devem estar centrados e proceder em claros passos definidos. Os subprojetos devem ser desenvolvidos que os primeiros módulos executáveis e operacionais estejam disponíveis depois de dois ou três meses.

10. Um projeto de BI é um processo constante

Os requisitos das companhias mudam constantemente e o mesmo se aplica a uma aplicação de BI. Todas as soluções de BI têm de ser continuamente desenvolvidas e otimizadas em uma base permanente. Esta é a única forma que têm de cumprir os requisitos.


Tags: BI, Business Inteligence,

VBA Tips - Apagando Arquivos - Delete Files and Folders


Veja também:

MS Excel – Diversas Funções Úteis

É bem provável que já tenha precisado de algo similar no MS Excel, mas não teve a oportunidade de encontrar essa informação de modo organizado, como estou propondo colocar abaixo.

Ao gerarmos os nossos diversos Relatórios, inclusive Dashboards, invariavelmente precisaremos gravar as versões em pastas.

Digamos que deseje gravar as informações geradas nas pastas customizadas, talvez com a data do momento da geração. Precisaríamos criar uma pasta para a transferência dos mesmos.

É importante frisar que não há como recuperar o arquivo excluído uma vez que o tenhamos deletado. O arquivo não é enviado para a lixeira do Windows.

Em qualquer um dos códigos listados neste artigo, ao executar um código VBA que inclua a instrução Kill, o código poderá excluir todos os arquivos armazenados em uma pasta ou em um servidor de rede.

Sub DelSample001()
 ' Você pode usar este código para apagar todos os arquivos na pasta de teste.
    On Error Resume Next

    Kill "E:\Bernardes\Dashboards\*.*"

    On Error GoTo 0
End Sub

Sub DelSample002()
 ' Você pode usar este código para apagar todos os arquivos xl? na pasta de teste.
    On Error Resume Next
    Kill "E:\Bernardes\Dashboards\*.xl*"
    On Error GoTo 0
End Sub

Sub DelSample003()
 ' Você pode usar este código para apagar um arquivo xls na pasta de teste.
    On Error Resume Next

    Kill "E:\Bernardes\Dashboards\ron.xls"
    On Error GoTo 0
End Sub

Sub DelSample004()
 ' Você pode usar este código para apagar a pasta inteira.
 ' Note: RmDir delete only a empty folder
    On Error Resume Next

    Kill "E:\Bernardes\Dashboards\*.*"    ' delete all files in the folder

    RmDir "E:\Bernardes\Dashboards\"  ' delete folder

    On Error GoTo 0
End Sub

Sub Delete_Whole_Folder()
' Você pode usar este código para apagar a pasta inteira sem remover os 1ºs arquivos como na função DelSample004.
    Dim FSO As Object
    Dim MyPath As String

    Set FSO = CreateObject("scripting.filesystemobject")

    MyPath = "C:\Users\Ron\Test"  '<< Change

    If Right(MyPath, 1) = "\" Then
        MyPath = Left(MyPath, Len(MyPath) - 1)
    End If

    If FSO.FolderExists(MyPath) = False Then
        MsgBox MyPath & " não existe."

        Exit Sub
    End If

    FSO.deletefolder MyPath

End Sub

Sub Clear_All_Files_And_SubFolders_In_Folder()
' Apaga todos os arquivos nas subpastas.
' Certifique-se de que não haja nenhum arquivo aberto na pasta.
    Dim FSO As Object
    Dim MyPath As String

    Set FSO = CreateObject("scripting.filesystemobject")

    MyPath = "E:\Bernardes\Dashboards\Test"  '<< Change

    If Right(MyPath, 1) = "\" Then
        MyPath = Left(MyPath, Len(MyPath) - 1)
    End If

    If FSO.FolderExists(MyPath) = False Then
        MsgBox MyPath & " não existe."
        Exit Sub
    End If

    On Error Resume Next

    ' Apaga os arquivos.
    FSO.deletefile MyPath & "\*.*", True

    ' Apaga as pastas.
    FSO.deletefolder MyPath & "\*.*", True

    On Error GoTo 0

End Sub

Para impedir que os arquivos sejam excluídos pela instrução Kill, certifique-se de que as declarações de Kill sempre refiram-se a um caminho válido e a um nome de arquivo válido. Os exemplos a seguir demonstram a sintaxe que devemos utilizar:

   Kill "\\server\share\myfiles\*.old"
   Kill "E:\myfiles\*.old"
   Dim FileList As String
   FileList = "*.old"
   Kill "\\server\share\myfiles\" & FileList
   Dim FileList As String, NetPath As String
   NetPath = "\\server\share\myfiles\"
   FileList = "*.old"
   Kill NetPath & FileList
Esses são usos válidos da instrução Kill. 

Tags: VBA, Tips, Ron de Bruin, delete, files, file, folder, kill




eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine