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

Tips - 7 Características desejáveis para os KPIs - Key Performance Indicator - Indicadores Chave de Performance

Inline image 1
Eventualmente recebo perguntas sobre como definir KPIs.

Os KPIs (Key Performance Indicator), nos mostram quando atingimos os alvos que estabelecemos, orientando as nossas ações para melhorarmos os nossos resultados.

Veja mais artigos sobre KPIs aqui.

Todos os modelos de negócio prescidem a lucratividade, para atingí-la precisamos medí-la. É necessário compreendermos performance do nosso modelo de negócio em todos os seus diversos e distintos âmbitos.

Os indicadores de performance além de captarem e demonstrarem o que de fato está acontecendo, também precisam sugerir uma ação prática para correção.

O valor do KPI deve ser estratégico 

Quaisquer medições realizadas através indicadores pontuais, devem estar conectados com os valores identificados no planejamento estratégico da empresa realizado pela alta administração. 

KPI deve ser sistêmico 

Um KPI nunca pode ser visto isoladamente e sim integrado ao conjunto de KPIs da empresa, bem como integrado a outras áreas da empresa. Da mesma forma, o conjunto de indicadores métricos de um KPI deve estar convergente com o direcionador de valor do KPI

Os valores de desempenho devem ser desdobrados 

As metas dos valores desejados pela alta administração da empresa e suas respectivas métricas de desempenho, deve ser repartido entre as partes intervenientes de cada processo. 

Deve Ter um Modelo Robusto 

Os modelos utilizados em um KPI devem ser robustos para proporcionar resultados coerentes e verdadeiros. Deve se tomar o cuidado para que o modelo não seja muito complexo, pois isto dificultaria a sua aplicação. 

O modelo deve ser de fácil assimilação e obtenção 

O modelo utilizado nos indicadores de um KPI deve ser simples o suficiente para que todos os responsáveis pelo seu desempenho possam compreendê-lo. Além disso, precisa ser obtido de forma fácil, preferencialmente através de sistemas computacionais. 

KPI pressupõe responsabilidade, mas também autoridade 

Os elementos que são responsabilizados pelo desempenho de KPIs e suas várias métricas indicadoras, devem também possuir autoridade para o gerenciamento das melhorias. 



Deve propiciar uma recompensa 

Os gestores de cada parte responsável por um indicador métrico devem ser recompensados pelo seu desempenho individual e também pelo desempenho coletivo (inclusive do KPI). 

Além dessas características básicas de um KPI, tornam-se necessários alguns aspectos importantes na construção do conjunto de seus indicadores:

- Os dados que alimentam os modelos devem ser confiáveis e válidos; 

- As metas estabelecidas em cada indicador métrico devem ser plausíveis de realização; 

- Proporcionar condições para que as ações na busca das melhorias possam ser executadas; 

- Um indicador que não é cobrado, certamente será desprezado. 


Referências:


Tags: KPI, Key, Performance, Indicator, BI,

VBA Excel - Removendo várias propriedades - Remove Various Properties

Inline image 1

Às vezes não desejaremos que quaisquer documentos que gerarmos com o MS Excel contenha detalhes de onde foi gerado, ou mesmo por quem ele foi gerado.

Em outros momento vamos querer exatamente o contrário. Que nosso Dashboards, Reports, Scorecards saiam da 'fábrica' com suas propriedades definidas.

Como fazemos para determinar previamente o conteúdo das propriedades dos nossos documentos?

Sub TestRemoveDocumentInformation() 
  ' Set up a named range with a comment: 
  Dim nm As Name 
  Set nm = Names.Add(Name:="TestNamedRange", _ 
   RefersToR1C1:="=Sheet1!R1C1:R7C3") 
  nm.Name = "NamedRange" 
 
   ' You can see the comment by clicking the Formulas tab menu and then  
   ' clicking Name Manager. 
  nm.Comment = "Here is a comment" 
  
  ' Set some document properties: 
  Dim props As Office.DocumentProperties 
  Set props = ActiveWorkbook.BuiltinDocumentProperties 
  props("Author").Value = "Author Name" 
  props("Subject").Value = "Test Document" 
  
  ' Add a comment, which will include your name. 
  ' Removing information will convert author name to Author 
  
  Dim cmt As Comment 
  Set cmt = Range("B3").AddComment 
  cmt.Visible = False 
  cmt.Text "This is a test" 
 
  ' Remove comments, defined name comments, personal information, and document properties. 
  ActiveWorkbook.RemoveDocumentInformation xlRDIComments 
  ActiveWorkbook.RemoveDocumentInformation xlRDIDefinedNameComments 
  ActiveWorkbook.RemoveDocumentInformation xlRDIRemovePersonalInformation 
  ActiveWorkbook.RemoveDocumentInformation xlRDIDocumentProperties 
  
End Sub


Tags:  VBA, Excel, Office 2010 101 code samples, remove comments

Tips - Acrônimos - Technology, Electronics & Video Game Acronyms

Inline image 1

Como não é raro utilizarmos diversos acrônimos no nosso dia-a-dia, segue lista que acredito seja útil utilizarmos eventualmente.


3D - Three-dimensional
AC - Alternating Current
ADT - Abstract Data Type
AI - Artificial Intelligence
AM - Amplitude Modulation
API - Application Programming Interface
ASP - Active Server Page (web scripting language)
BIOS - Basic Input Output System
CB - Citizens' Band Amateur Radio
CD - Compact Disc
CE - Conformitée Européenne (Translated literally, it means European Conformity. "The CE Marking indicates that the product complies with all European requirements and conformity assessment procedures that apply to it." Source: http://www.cemarking.net)
CG - Computer Graphics
CGI - Common Gateway Interface (web scripting facility)
CIA - Computer Industry Almanac
CPU - Central Processing Unit
CRT - Cathode Ray Tube (type of TV)
DC - Direct Current
DOS - Disk Operating System
DPI - Dots per Inch
DSL - Digital Subscriber Line
DSS - Digital Spread Spectrum
DTS - Digital Theater Sound
DVD - Digital Video
DVR - Digital Video Recorder
ECM - Electronic Countermeasure
EDI - Electronic Data Interchange
EIA - Electronic Industries Alliance
EMP - Electro Magnetic Pulse
EULA - End User License Agreement (usually in reference to software)
FM - Frequency Modulation
GIF - Graphic Interchange Format
GUI - Graphic User Interface
HDTV - High Definition Television
HEPA - High-Efficiency Particulate Air (filter)
Hi-Fi - High Fidelity
HID - High Intensity Discharge
HUP - Home Use Program (Microsoft)
IT - Information Technology
JPEG - Joint Photographic Experts Group (24-bit image storage format)
LAN - Local Area Network
LASER - Light Amplification by Stimulated Emission of Radiation
LCD - Liquid Crystal Display
LED - Light Emitting Diode
MDK - Multimedia Developers Kit
MOM - Message Oriented Middleware
MP3 - Moving Picture Experts Group Layer-3 Audio
MRAM - Magnetic Random Access Memory
NA - Numeric Aperature
NIH - Not Invented Here
OLED - Organic Light Emitting Diode
OS - Operating System
PA - Public Address (System)
PC - Personal Computer
PDA - Personal Digital Assistant (like a Palm® Pilot)
PDF - Portable Document Format (created by Adobe Acrobat)
PHP - Personal Home Page (original name for PHP scripting language)
PLR - Personal Life Recorder (a recording device that relies on MRAM for its viability)
POP3 - Post Office Protocol, Version 3
POTS - Plain Old Telephone Service
PS2 - Play Station 2
PS3 - Play Station 3
PVC - Polyvinyl Chloride
CSQA - Certified Software Quality Analyst
CSTE - Certified Software Test Engineer
RADAR - Radio Detecting and Ranging
RAM - Random Access Memory
RC - Remote Control
RDF - Rich Data Format
RFID - Radio Frequency Identification Device
ROM - Read Only Memory
SMTP - Simple Mail Transfer Protocol
SONAR - Sound Navigation & Ranging
SSL - Secure Sockets Layer
SUMMA - System for Universal Multi Media Access
SUMS - System for Universal Media Searching
TDD - Telecommunication Device for the Deaf
TTY - Teletypewriter, also referred to as a Text Telephone (how the hearing impaired use telephones)
TV - Television
UI - User Interface
UL - Underwriters Laboratories Incorporated
UPS - Uninterrupted Power Source
USB - Universal Serial Bus
VCR - Videocassette Recorder
VOD - Video On Demand
VoIP - Voice-over Internet Protocol
VHS - Video Home System
3M - Minnesota Mining and Manufacturing
3PL - Third Party Logistics
A&W - Allen & Wright (Roy Allen and Frank Wright combined their initials to name A&W Root Beer in 1922)
AA - Author Alteration (a publishing term)
AAA - American Automobile Association
ADP - Automatic Data Processing
AIG - American International Group
AMD - Advanced Micro Devices, Inc. (producer of computer chips)
AMF - American Machine & Foundry (bowling lane operators and former owners of Harley Davidson motorcycles)
AOL - America Online
AT&T - American Telephone and Telegraph
AX - Armani Exchange
B&N - Barnes & Noble
B2B - Business to Business
B2C - Business to Consumer
BBB - Better Business Bureau
BHAG - Big, Hairy Audacious Goal
BOI - Business Object Interface
CEO - Chief Executive Officer
CFO - Chief Financial Officer
CK - Calvin Klein
COB - Close Of Business
COGS - Cost of Goods Sold
COLA - Cost of Living Adjustment
COO - Chief Operating Officer
CPK - California Pizza Kitchen
CRM - Client Relationship Management
CSP - Certified Speaking Professional
CTO - Chief Technology Officer
DBA - Doing Business As
DHL - Dalsey, Hillblom and Lynn (founders of DHL Worldwide Express)
DK - Dorling Kindersley
DKNY - Donna Karan New York
DSO - Days Sales Outstanding
DSW - Discount Shoe Warehouse
EA - Electronic Arts
EBX - Electronics Boutique X
EMS - Eastern Mountain Sports
FANNIE MAE - Federal National Mortgage Association (a privately owned corporation)
FLP - Family Limited Partnership
FSB - Fortune Small Business
FT - Full Time
FTE - Full Time Equivalent
FUBU - For Us, By Us
GE - General Electric
GEICO - Government Employees Insurance Company
GM - General Motors or General Mills
GNC - General Nutrition Centers
HP - Hewlett Packard
IBC - Independent Breweries Company (original manufacturer of IBC Root Beer)
IBD - Investors Business Daily
IBM - International Business Machines Corporation
ILM - Industrial Light and Magic
IMR - Information Management Research
ING - Internationale Nederlanden Group (a financial company)
IREA - Intermountain Rural Electric Association
JC Penney's - James Cash Penney
JOA - Joint Operating Agreement (example: the relationship between The Denver Post and The Rocky Mountain News)
JVC - Japan's Victor Company
KB - Kaybee Toys OR Kaufmann Broad (home builder)
KFC - Kentucy Fried Chicken
KPI - Key Performance Indicator
KPMG - Klynveld Peat Marwick Goerdeler (accounting firm)
LLC - Limited Liability Company
LLP - Limited Liability Partnership
MCI - Microwave Communications Incorporated
MOH - Message/Music On Hold
MSI - Multiple Streams of Income
MSN - Microsoft Network
MSRP - Manufacturer's Suggested Retail Price
MVI - Mini Vacations Incorporated
NBB - New Belgium Brewery
NCOA - National Change of Address (List)
NDA - Non-Disclosure Agreement
NIB - New In the Box
NSA - National Safety Associates
OPM - Other People's Money
OPR - Other People's Resources
OPT - Other People's Time
P&G - Proctor and Gamble
PBGC - The Pension Benefit Guaranty Corporation
PE - Printer Error (a publishing term)
PL - Profit and Loss
PO - Purchase Order
POP - Point of Purchase
PT - Part Time
QA - Quality Assurance
QAI - Quality Assurance International
QC - Quality Control
QSC - Quality, Service, Cleanliness (Ray Kroc's motto for McDonald's)
REI - Recreational Equipment, Inc
RFP - Request for Proposal
SBC - Southwestern Bell Corporation
SBI - Site Build It! (software for building web sites)
SFI - Six-Figure Income
SKU - Stock Keeping Unit
SM - Service Mark
SOHO - Small Office, Home Office
SOS - Switched On Schoolhouse
SYSTEM - Save YourSelf Time, Engergy, and Money (as reported by www.just15minutes.com)
TCBY - The Country's Best Yogurt (originally This Can't Be Yogurt)
TM - Trademark
TSR - Tactical Studies Rules (company that produces Dungeons & Dragons)
UMB - United Missouri Bank
UPS - United Parcel Service
USAA - United Services Automobile Association

Tags: Acronyms, Financial, Finance

KPI - Key Performance Indicator

Inline image 3


Os KPIs (Indicadores Chave de Desempenho), tiveram sua aplicação ampliada nas mais diversas questões referentes aos negócios nas empresas. Podem ser desenvolvidos com a finalidade de medir qualquer etapa de um processo ou resultado. Grandes empresas desenvolvem verdadeiros Cockpits, através dos quais acompanham metodicamente o seus resultados.


Os KPIs não estão limitados apenas às conhecidas métricas financeiras, a comparação entre os indicadores pode apontar o caminho para a conclusão dos objetivos estratégicos de um empresa. 

É claro que cabe aos altos executivos e suas equipes, definirem quais serão os indicadores chaves de desempenho, que apontarão os resultados, bem como apoiarão os diagnósticos. Um método constantemente aplicado nas organizações para a escolha dos indicadores chaves de desempenho é o Balanced Scorecard

A. Walker, vice-presidente dos serviços financeiros na filial de Londres da Hitachi Consulting é um perito em gestão de desempenho, fala de um banco no Reino Unido que não interpretou corretamente os seus indicadores. O banco procurou aumentar as receitas com um novo tipo de conta. Os funcionários top do banco definiram objetivos para o número de novas contas que cada filial teria de vender. Foi dito aos gestores da filial que seriam avaliados sobre o sucesso obtido em relação a estes objetivos de vendas.

"Os gestores trabalharam com grande entusiasmo para subscrever clientes novos e atuais a estas contas," diz Walker. "Tudo pareceu muito sensato."

No entanto, foi perdida uma medida financeira essencial na pressa em vender estas novas contas. As novas contas trouxeram menos receitas para o banco do que outros produtos já estabelecidos. Essas informações importantes não foram comunicadas aos gestores da filial, que encorajaram os clientes de longa data a transferir de outras contas (e, para o banco, mais lucrativas) para o novo e menos rentável produto.

Durante determinada altura, os números de vendas pareciam excelentes. Havia apenas um problema. O banco estava a perder dinheiro como resultado da mudança das contas antigas para as novas.

"O desempenho do negócio desceu significativamente," diz Walker.

Neste caso, os funcionários top do banco deviam ter considerado as seguintes questões fundamentais:

Qual é o objetivo da atual ou nova estratégia? 

De que forma seria possível verificar o sucesso? 

Quais são as medidas que devem ser utilizadas para avaliar este sucesso?

Poderia haver consequências não pretendidas ao focar em determinados KPIs?

Em vez da medida "novas contas abertas", o banco deveria ter-se focado em "novas contas abertas para novos clientes", diz Walker.

G. Boyd, diretor da unidade africana "Balanced Scorecard Collaborative" da Palladium Company, diz que medir o desempenho do negócio muitas vezes significa mudar o comportamento dos colaboradores, o que muitas vezes não é popular.

"As pessoas por vezes reagem menos positivamente quando se apercebem que serão avaliadas," diz Boyd, cuja organização ajudou a mais de 2.500 empresas, implementar sistemas de informação de negócio.

Os workshops que juntam os membros do conselho e os gestores top de diferentes unidades de negócio podem ajudar a alcançar um acordo sobre os KPIs. O próximo passo é levar a cabo workshops departamentais, nos quais gestores discutem com os colaboradores os KPIs que serão medidos, e por que razão. Os gestores devem considerar ligar as recompensas e sanções aos colaboradores em função do desempenho medido pelos KPIs, isto reforça a importância deles.

Outro aspecto relevante referente aos KPIs, é o fato de que ao serem disponibilizados, torna-se possível comparar desempenhos entre empresas. Aquelas com o melhor desempenho podem servir de Benchmark para outras que desejam alinhar-se com as melhores práticas no mercado.

Seguem alguns exemplos de KPIs:

Time to Market
Tempo de lançamento de um produto, faz parte do desenvolvimento do conceito a disponibilidade para venda.

Lead Time
Tempo de duração de um processo.

OTIF
On time in Full - No tempo e completo, aplicado a distribuição de produtos e/ou gerenciamento de fornecedores.

Stock Out
Número de vezes ou dias que determinado item controlado no estoque chega a saldo zero.

Market Share
Fatia de mercado que um determinado produto possui em um período.

Produtividade Homem/hora
Número de unidade produzidas por mão-de-obra escalada na produção.

Ociosidade
Percentual de tempo que um máquina, equipe, ou planta ficam parados.

Giro de Estoque
Consumo (saídas) / Saldo médio de estoque.


Os KPIs traduzem alertas e apontamentos que acompanharão a performance destes indicadores ligados a um Departamento, uma Gerência ou mesmo a Diretoria ou Border, dependendo do que se entende ser importante analisar e acompanhar.



Os KPIs são conceitos, e não necessariamente serão os mesmo  implementados em diferentes empresas. Estes são muito peculiares por precisarem refletir a importância otimizada que se deseja acompanhar.


Tenho experiência na implantação de diversos deles e alguns estão expostos nos diversos Dashboards que tenho publicado como exemplos na Internet, como poderá verificar abaixo:

Inline image 1

Inline image 2


Tenho trabalhado desenvolvendo estes conceitos junto as empresas e departamentos, ajudando a defini-los com as equipes ou individuo envolvido no processo/projeto.


VBA Excel - Deletando todas as procedures da planilha - Delete all macros in a workbook

Inline image 1

Simplemente passe o rodo na sua planilha!


Sub DeleteProcedureCode (ByVal wb As Workbook, _
                                            ByVal DeleteFromModuleName As String, 
                                            ByVal ProcedureName As String)

' deletes ProcedureName from DeleteFromModuleName in wb
Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long

    On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(DeleteFromModuleName).CodeModule

    If Not VBCM Is Nothing Then
        ' determine if the procedure exist in the codemodule
        Let ProcStartLine = 0
        Let ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)

        If ProcStartLine > 0 Then ' prosedyren finnes, slett den
            Let ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)
            VBCM.DeleteLines ProcStartLine, ProcLineCount
        End If

        Set VBCM = Nothing
    End If

    On Error GoTo 0
End Sub



Reference:
Tags:  VBA, Excel, content, module, módulo, Class Modules in VBA, delete, del, excluir, apagar, procedure, function  

VBA Excel - Deletando uma procedure de um módulo - Delete a procedure from a module

Inline image 1

Esse código permite que você apague somente uma procedure dentro de um módulo. Alteração cirúrgica!

DeleteProcedureCode Workbooks ("wb_Bernardes.xlsb"), "mdl_Functions", "ExtractData"

Sub DeleteProcedureCode (ByVal wb As Workbook, _
                                           ByVal DeleteFromModuleName As String, _
                                           ByVal ProcedureName As String)

' deletes ProcedureName from DeleteFromModuleName in wb
Dim VBCM As CodeModule, ProcStartLine As Long, ProcLineCount As Long

On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(DeleteFromModuleName).CodeModule

    If Not VBCM Is Nothing Then
        ' determine if the procedure exist in the codemodule
        Let ProcStartLine = 0
        Let ProcStartLine = VBCM.ProcStartLine(ProcedureName, vbext_pk_Proc)

        If ProcStartLine > 0 Then ' prosedyren finnes, slett den
            Let ProcLineCount = VBCM.ProcCountLines(ProcedureName, vbext_pk_Proc)

            VBCM.DeleteLines ProcStartLine, ProcLineCount
        End If

        Set VBCM = Nothing
    End If

    On Error GoTo 0
End Sub

Reference:
Tags: VBA, Excel, content, module, módulo, Class Modules in VBA, delete, del, excluir, apagar, procedure, function 

VBA excel - Deletando um módulo - Delete a module using VBA in Microsoft Excel

Inline image 1

Esse código aparentemente não tem uma grande importância, mas se souber usá-lo, poderá torná-lo parte da sua coletânea de artifícios para proteger seus projetos e aplicações.

Ao apagar um módulo, todas as funcionalidade da planilha dependentes desse módulo ficam automaticamente inativas. Que dica hein! 

Segue o código: DelVBComponent ActiveWorkbook, "mdl_MainFunctions"

Sub DelVBComponent (ByVal wb As Workbook, ByVal CompName As String)
' deletes the vbcomponent named CompName from wb

    Let Application.DisplayAlerts = False

    On Error Resume Next ' ignores any errors

    wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents (CompName) 

    ' delete the component
    On Error GoTo 0

    Let Application.DisplayAlerts = True
End Sub



Reference:
Tags:  VBA, Excel, content, module, módulo, Class Modules in VBA, delete, del, excluir, apagar,     

VBA Excel - Copiando o módulo entre os workbooks - Copy modules from one workbook to another

Inline image 1

Em algumas planilhas, em especial aquelas onde temos uns 4 ou 5 Dashboards, existem funções de navegação e mesmo layouts que são adaptáveis ao seu respectivo conteúdo (contexto). Em muitas delas o comportamento é similar, mas não exatamente igual. Podemos até tornar as funcionalidades customizáveis de acordo com a opção escolhida para análise. Com essa técnica podemos como que estender os 'poderes'  da planilha durante a análise feita nela. Isso é que é polimorfismo! O Mesmo objeto, mas com novas características nos eventos.

Bem, introdução à parte, o código abaixo permite que migre todo o conteúdo de um workbook para outro. Siga a sintaxe:CopyModule Workbooks ("Bernardes_Plan01.xlsb"), "mdl_Navigation_Functions", Workbooks ("Bernardes_Plan0.xlsb")

Sub CopyModule (SourceWB As Workbook, _
                            strModuleName As String, _
                            TargetWB As Workbook)

Dim strFolder As String, strTempFile As String
    Let strFolder = SourceWB.Path

    If Len(strFolder) = 0 Then Let strFolder = CurDir

    Let strFolder = strFolder & "\"
    Let strTempFile = strFolder & "~tmpexport.bas"
    
    On Error Resume Next

    SourceWB.VBProject.VBComponents(strModuleName).Export strTempFile
    TargetWB.VBProject.VBComponents.Import strTempFile
    
    Kill strTempFile
    
    On Error GoTo 0
End Sub


Reference:
Tags: VBA, Excel, content, add, module, módulo, copy, copiar, Module, conteúdo, Modules, Class Modules in VBA, kill, export, workbook   

VBA Excel - Adicionando um conteúdo para um módulo a partir de um arquivo - Add content to a module from a file using VBA in Microsoft Excel

Inline image 1

Ao efetuar a manutenção de uma aplicação talvez não desejemos importar todo um módulo, mas apenas algumas funcionalidades ou processos deste.

Selecionamos então as funcionalidades que desejamos e as colamos em um arquivo texto externo. Com o código abaixo somos capazes de importar o arquivo externo, inserindo o código dele no módulos que selecionarmos: ImportModuleCode ActiveWorkbook, "mdl_ExternalCode", "C:\Bernardes\nCodes.txt"


Sub ImportModuleCode (ByVal wb As Workbook, _
                                       ByVal ModuleName As String, _
                                       ByVal ImportFromFile As String)

' imports code to ModuleName in wb from a textfile named ImportFromFile
Dim VBCM As CodeModule

    If Dir(ImportFromFile) = "" Then Exit Sub
    On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(ModuleName).CodeModule

    If Not VBCM Is Nothing Then
        VBCM.AddFromFile ImportFromFile
        Set VBCM = Nothing
    End If

    On Error GoTo 0
End Sub


Reference:
Tags:    VBA, Excel, content, add, module, módulo, adicionar, Module, conteúdo, Modules, Class Modules in VBA,  

VBA Excel - Adicionando uma Procedure a um módulo - Add a procedure to a module using

Inline image 1

Podemos inserir Funções ou Subs em módulos pré-existentes na nossa planilha. Para isso basta que programemos o seguinte código em qualquer evento da nossa planilha:

InsertProcedureCode Workbooks("WorkBookBernardes.xlsb"), "mdl_Functions_AutomaticInserted"

Sub InsertProcedureCode (ByVal wb As Workbook, ByVal InsertToModuleName As String)
Dim VBCM As CodeModule
Dim InsertLineIndex As Long

    On Error Resume Next

    Set VBCM = wb.VBProject.VBComponents(InsertToModuleName).CodeModule

    If Not VBCM Is Nothing Then

        With VBCM
            Let InsertLineIndex = .CountOfLines + 1

            ' customize the next lines depending on the code you want to insert
            .InsertLines InsertLineIndex, "Sub NewSubName()" & Chr(13)
           
             Let InsertLineIndex = InsertLineIndex + 1
            .InsertLines InsertLineIndex, _
                "    Msgbox ""Olá Mundo!"",vbInformation,"".: Primeira""" & Chr(13)

            Let InsertLineIndex = InsertLineIndex + 1

            .InsertLines InsertLineIndex, "End Sub" & Chr(13)
            ' no need for more customizing
        End With

        Set VBCM = Nothing

    End If

    On Error GoTo 0
End Sub


Reference:
Tags:   Tags: VBA, Excel, procedure, add, module, módulo, adicionar, Modules, Class Modules in VBA 


VBA Excel - Criando um novo módulo automaticamente - Create a new module

Inline image 1

Inserir um novo módulo de maneira automática numa planilha talvez seja um processo que possa automatizar na estação de trabalho onde começa a desenvolver as suas novas aplicações com o MS Excel. Essa característica, sem dúvida, o ajudaria a tornar o seu ponto de partida mais ágil.

Como?

Bem, use o código abaixo e divirta-se!

CreateNewModule ActiveWorkbook, 1, "TestModule"

Sub CreateNewModule (ByVal wb As Workbook, _
                                      ByVal ModuleTypeIndex As Integer, _
                                      ByVal NewModuleName As String)

' creates a new module of ModuleTypeIndex 
' (1=standard module, 2=userform, 3=class module) in wb
' renames the new module to NewModuleName (if possible)

Dim VBC As VBComponent, mti As Integer
    Set VBC = Nothing
    Let mti = 0

    Select Case ModuleTypeIndex
        Case 1: mti = vbext_ct_StdModule ' standard module
        Case 2: mti = vbext_ct_MSForm ' userform
        Case 3: mti = vbext_ct_ClassModule ' class module
    End Select

    If mti <> 0 Then
        On Error Resume Next

        Set VBC = wb.VBProject.VBComponents.Add(mti)

        If Not VBC Is Nothing Then
            If NewModuleName <> "" Then
                Let VBC.Name = NewModuleName
            End If
        End If

        On Error GoTo 0

        Set VBC = Nothing
    End If
End Sub

Tags: VBA, Excel, content, module, módulo, Class Modules in VBA, create

VBA Access - Exportando dados para um arquivo texto com Delimitadores

Inline image 1
Criar arquivos texto, exportados dentro de um padrão, às vezes com delimitações específicas, é um desafio que pode aparecer no nosso caminho.

O código abaixo tem o objetivo de dar-nos a independência suficiente e necessária para ter total controle sobre o que está ocorrendo durante a exportação, inclusive controlando o tempo que isso leva se desejarmos.

O procedimento abaixo define o local onde o arquivo texto processado será gravado:

Call ExportData (CurrentProject.Path & "\" & "Bernardes" & ThisMoment() & ".txt")

Function ExportData(strExportFile As String)
    Dim rs As Recordset
    Dim strData As String
    Dim intFileNum As Integer
    Dim nDelim as String

    Let intFileNum = FreeFile()
    Let nDelimi = ";"

    Open strExportFile For Output As #intFileNum

    Set rs = CurrentDb.OpenRecordset("tbl_Bernardes_Export_Data", dbOpenSnapshot)

    With rs
        Do Until .EOF
            Let strData = ![Field01] & nDelimi & ![Field02] & nDelimi & ![Field03] & nDelimi & ![Field04] 

            Print #intFileNum, strData
            'Debug.Print Now() & "| " & ![Field01] & nDelimi & ![Field02] & nDelimi & ![Field03] & _
                                                                     nDelimi & ![Field04] 

            .MoveNext
            
            Loop
    End With

    Close #intFileNum

    rs.Close

    Set rs = Nothing

End Function


Tags: VBA, Access, export, file, txt, delimiter, delimitador, exportar, arquivo texto, text file, TXT

VBA Tips - Preenchendo com ESPAÇOS ou ZEROS - A Direita ou a Esquerda

Inline image 1

Ao lidarmos com a geração de arquivos texto a partir de um sistema legado, ou quando estamos exportando dados para outra base, facilmente nos depararemos com a necessidade de exportar dados em arquivos texto de grandes bases de dados.

Como posso automatizar o tamanho de um campo e automaticamente preenchê-lo com espaços ou zeros ao lado esquerdo ou direito?

Certamente demoraria algum tempo reunir todas essas características em uma só funcionalidade, mas para a sua alegria reuni-as em 2 funções. Espero que goste e possa utilizá-la de modo a ganhar bastante tempo no seu desenvolvimento.

A primeira função, FillSpace ([String], [Quantos dígitos a inserir],[boolean]) é capaz de retornar um valor com o número de espaços que desejarmos. E ainda podemos escolher se estes estarão à direita ou à esquerda.

Parametrizado assim: FillSpace ("André Bernardes",20,True)
Retornará isso: "     André Bernardes"

Parametrizado assim: FillSpace ("André Bernardes",20,False)
Retornará isso: "André Bernardes     "

A função FillSpace é assim:

Function FillSpace (nPar As Variant, nOccurs As Integer, L_R As Boolean) _ 
             As String
    ' Author:                     Date:               Contact:
    ' André Bernardes             20/06/2012 11:50    bernardess@gmail.com     https://sites.google.com/site/bernardescvcurriculumvitae/
    ' Preenche com espaços.

    Dim nSize As Integer
    Dim nParticle As String
    
    Let nSize = Len(Trim(nPar))
    
    ' Informa se será preenchido na frente (LEFT) ou atrás (RIGHT).
    If L_R Then
        Let nParticle = Space(nOccurs - nSize) & Trim(nPar)
    Else
        Let nParticle = Trim(nPar) & Space(nOccurs - nSize)
    End If

    Let FillSpace = nParticle
End Function


A primeira função, FillZeros ([String], [Quantos dígitos a inserir],[boolean]) é capaz de retornar um valor com o número de zeros que desejarmos. E ainda podemos escolher se estes estarão à direita ou à esquerda.

Parametrizado assim:  FillZeros ("2500",10,False)
Retornará isso: 2500000000

Parametrizado assim:  FillZeros ("25000",10,true)
Retornará isso: 0000025000

A função FillZeros é assim:

Function FillZeros (nPar As Variant, nOccurs As Integer, L_R As Boolean) As String
    ' Author:                     Date:               Contact:
    ' André Bernardes             20/06/2012 12:50    bernardess@gmail.com     https://sites.google.com/site/bernardescvcurriculumvitae/
    ' Preenche com zeros.
    
    Let FillZeros = Replace(FillSpace(nPar, nOccurs, L_R), " ", "0")
End Function

Espero que possa usar bastante essas funções nas suas aplicações. Se desejarem, deixem comentários e novas sugestões de códigos.

Tags: VBA, Tips, espaço, zero, preenchendo, fill, Zed, Zeros, Space, preencher, completar

VBA Tips - Criptografando parte do código VBA - parte 1 - Versão mirim.


Inline image 1

Como bom desenvolvedor, sabe que seus códigos VBA podem ser facilmente quebrados por inúmeros utilitários disponíveis por aí. O modo como estrutura as suas strings SQL podem ser facilmente devassadas, as suas funções podem ser utilizadas sem a sua autorização.

Como podemos proteger o conteúdo que desenvolvemos?

Bem, talvez possamos criptografar parte do código do VBE, assim a pessoa que o utilizasse necessitaria conhecer a nossa chave de decriptação. Como?

Neste artigo, abordaremos como efetuar a criptografia da String SQL que utilizamos no MS Excel, MS Access, MS Powerpoint ou no MS Outlook.

Nos próximos artigos ampliaremos essa visão ensinando como inserir módulos a partir de templates pré-formatados, automatizando o modo como desenvolvemos as nossas próprias aplicações. Assim, estaremos usufruindo a automação em todos os níveis. Desde o desenvolvimento até a implementação.

Geralmente nossos códigos que processam códigos SQL estão estruturados assim:

Exemplo no VBA Access:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim intResult As Integer
Dim strSQL As String

Set db = CurrentDb

strSQL = "SELECT COUNT(*) As RecordCount FROM tblProducts"

Set rs = db.OpenRecordset(strSQL, dbOpenSnapShot)

intResult = rs("RecordCount")

rs.Close
db.Close

O que desejamos é tornar o conteúdo da String SQL (strSQL) ilegível ao usuário que acessar o nosso código VBA, de modo que ele não compreenda o conteúdo da String. A versão criptografada ficaria assim:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim intResult As Integer
Dim strSQL As String

Set db = CurrentDb

strSQL = Cripto ("
¦Š˜Š†¨@†žªœ¨PTR@‚æ@¤ÊÆÞäȆÞêÜè@Œ¤žš@èÄØ äÞÈêÆèæ")

Set rs = db.OpenRecordset(strSQL, dbOpenSnapShot)

intResult = rs("RecordCount")

rs.Close
db.Close

Devemos converter o conteúdo dos comandos SQL pouco antes do seu processamento. Desse modo resguardamos a string.

Também podemos fazer o mesmo quanto a gravação de conteúdo nas nossas tabelas. antes de efetuarmos a gravação de algum dado na tabela, efetuamos uma criptografia no código. E só descriptografamos antes do o utilizarmos nos nossos processos, tais como: Relatórios, Cálculos, Gráficos, Dashboards, etc.

Possivelmente está se perguntando: Mas cadê a função que efetua a criptografia? Bem, existem inúmeras funções de criptografia por aí. Neste link poderá ver diversas delas listadas, ficando a sua escolha eleger a que melhor se adapta a sua necessidade. 


Tags: VBA, Tips, criptografia, decriptar, encriptar, criptografar





VBA Excel - Excluindo Abas onde não tem qualquer conteúdo - Delete/Remove Blank/Empty Worksheets

Blog Office VBA | Blog Excel | Blog Access |
Inline image 1

Sub DeleteBlankSheets()
    Dim sh As Variant
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
On Error GoTo Exits:
    For Each sh In Sheets
'IsChart checks, if sh is a Chart Object or some other object.
        If Not IsChart(sh) Then

'CountA checks if there is any data in cells of the sheet
            If Application.WorksheetFunction.CountA(sh.Cells) = 0 Then sh.Delete
        End If
    Next sh
Exits:
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

Function IsChart As Boolean
    Dim tmpChart As Chart
    On Error Resume Next
    Set tmpChart = Charts(sh.Name)
    IsChart = IIf(tmpChart Is Nothing, False, True)
End Function

Reference:
Tags: VBA, 



VBA Excel - Ordenando Alfabeticamente as Abas - Sort all worksheets on the basis of Sheet names

Blog Office VBA | Blog Excel | Blog Access |
Inline image 1

Quando a nossa aplicação gera novas abas com conteúdo no MS Excel, é importante que ordenemos o resultado. Como?

Sub SortALLSheets()

  'This module will sort all the worksheets present in active workbook.
  Dim iSheet As Long, iBefore As Long

  For iSheet = 1 To ActiveWorkbook.Sheets.count
    Sheets(iSheet).Visible = True

    For iBefore = 1 To iSheet - 1
      If UCase(Sheets(iBefore).Name) > UCase(Sheets(iSheet).Name) Then
        ActiveWorkbook.Sheets(iSheet).Move before:=ActiveWorkbook.Sheets(iBefore)

        Exit For
      End If
    Next iBefore

  Next iSheet

End Sub

Reference:
Tags: VBA, Excel, ordenar, alfabético, sort, worksheets, 



eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine