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.

Views

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,

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 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





Searched Profile

Realmente sinto-me lisonjeado quando percebo meu perfil sendo visto por um dos mais destacados profissionais que utilizam o MS Excel no mundo...


Se você também quiser saber maiores detalhes sobre o meu perfil profissional não deixe de olhá-lo aqui.



VBA Access - Como realmente desabilitar o Menu do MS Access 2007 - How To Really Hide Access 2007 Ribbons With VBA

Inline image 1
Já adianto-lhe que esse código funciona também com a versão do MS Access 2010.

Geralmente a visão que temos do nosso menu é algo como o demonstrado abaixo:

Inline image 1


Mas queremos que nossas aplicações desenvolvidas com o MS Access tenham uma apresentação mais clean, por otimizá-las assim:

Inline image 2

Mas como podemos esconder o Quick Access toolbar? É simples, apenas adicionamos a linha de código abaixo nos eventos abrir  e fechar dos nosso formulários:

Inline image 3

Com um pouco mais de criatividade você pode adicionar este código a uma SUB a atribuir essa característica ao abrir relatórios, formulários, Dashboards, Pivot Table Analyse, etc...

Tags: VBA, Access, Access 2007, Ribbons,Microsoft Access 2010,Microsoft Access 2007, Quick Access toolbar

VBA Tips - Fazendo o download de um arquivo - Downloading A File From The Web

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

Sua aplicação pode precisar baixar um arquivo da web, esta é uma tarefa fácil de concluir. 

O código abaixo usa a função de API URLDownloadToFile do Windows para executar o download real. O algoritmo deste artigo manipula essa API é uma função chamada DownloadFile, e manipula as circunstâncias em que o arquivo de destino local já existe. 

O protótipo da função de DownloadFile é como se segue:

Public Function DownloadFile(UrlFileName As String, _
                            DestinationFileName As String, _
                            Overwrite As DownloadFileDisposition, _
                            ErrorText As String) As Boolean


Option Explicit
Option Compare Text

'''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' modDownloadFile
' Date: 23-April-2003
' This module contains the DownloadFile function and supporting players to
' download a file from a URL to a local file name.
'
' Example Usage:
'
'        Dim URL As String
'        Dim LocalFileName As String
'        Dim B As Boolean
'        Dim ErrorText As String
'
'        LocalFileName = "C:\Test\FindAll.zip"
'        B = DownloadFile(UrlFileName:=URL, _
'                        DestinationFileName:=LocalFileName, _
'                        Overwrite:=OverwriteRecycle, _
'                        ErrorText:=ErrorText)
'        If B = True Then
'            Debug.Print "Download successful"
'        Else
'            Debug.Print "Download unsuccessful: " & ErrorText
'        End If
'
' The Overwrite parameter of DownloadFile indicates how to handle the
' case when LocalFileName already exists. It is one of the following
' values:
'        OverwriteKill      use Kill to delete the existing file.
'        OverwriteRecycle   send the existing file to the Recycle Bin.
'        DoNotOverwrite     do not overwrite and terminate the procedure.
'        PromptUser         prompt the user asking whether to overwrite file.
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Public Enum DownloadFileDisposition
    OverwriteKill = 0
    OverwriteRecycle = 1
    DoNotOverwrite = 2
    PromptUser = 3
End Enum

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Windows API functions, constants,and types.
' Used for RecycleFile.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Private Declare Function SHFileOperation Lib "shell32.dll" Alias _
    "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Private Declare Function PathIsNetworkPath Lib "shlwapi.dll" _
    Alias "PathIsNetworkPathA" ( _
    ByVal pszPath As String) As Long

Private Declare Function GetSystemDirectory Lib "kernel32" _
    Alias "GetSystemDirectoryA" ( _
    ByVal lpBuffer As String, _
    ByVal nSize As Long) As Long

Private Declare Function SHEmptyRecycleBin _
    Lib "shell32" Alias "SHEmptyRecycleBinA" _
    (ByVal hwnd As Long, _
     ByVal pszRootPath As String, _
     ByVal dwFlags As Long) As Long

Private Const FO_DELETE = &H3
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_NOCONFIRMATION = &H10
Private Const MAX_PATH As Long = 260

Private Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Boolean
    hNameMappings As Long
    lpszProgressTitle As String
End Type

'''''''''''''''''''''''''''
' Download API function.
''''''''''''''''''''''''''''''''''''''
Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
                        "URLDownloadToFileA" ( _
                            ByVal pCaller As Long, _
                            ByVal szURL As String, _
                            ByVal szFileName As String, _
                            ByVal dwReserved As Long, _
                            ByVal lpfnCB As Long) As Long



''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' DownloadFile
' This downloads a file from a URL to a local filename.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Public Function DownloadFile(UrlFileName As String, _
                            DestinationFileName As String, _
                            Overwrite As DownloadFileDisposition, _
                            ErrorText As String) As Boolean

Dim Disp As DownloadFileDisposition
Dim Res As VbMsgBoxResult
Dim B As Boolean
Dim S As String
Dim L As Long

ErrorText = vbNullString

If Dir(DestinationFileName, vbNormal) <> vbNullString Then
    Select Case Overwrite
        Case OverwriteKill
            On Error Resume Next
            Err.Clear
            Kill DestinationFileName
            If Err.Number <> 0 Then
                ErrorText = "Error Kill'ing file '" & DestinationFileName & "'." & vbCrLf & Err.Description
                DownloadFile = False
                Exit Function
            End If
    
        Case OverwriteRecycle
            On Error Resume Next
            Err.Clear
            B = RecycleFileOrFolder(DestinationFileName)
            If B = False Then
                ErrorText = "Error Recycle'ing file '" & DestinationFileName & "." & vbCrLf & Err.Description
                DownloadFile = False
                Exit Function
            End If
        
        Case DoNotOverwrite
            DownloadFile = False
            ErrorText = "File '" & DestinationFileName & "' exists and disposition is set to DoNotOverwrite."
            Exit Function
            
        'Case PromptUser
        Case Else
            S = "The destination file '" & DestinationFileName & "' already exists." & vbCrLf & _
                "Do you want to overwrite the existing file?"
            Res = MsgBox(S, vbYesNo, "Download File")
            If Res = vbNo Then
                ErrorText = "User selected not to overwrite existing file."
                DownloadFile = False
                Exit Function
            End If
            B = RecycleFileOrFolder(DestinationFileName)
            If B = False Then
                ErrorText = "Error Recycle'ing file '" & DestinationFileName & "." & vbCrLf & Err.Description
                DownloadFile = False
                Exit Function
            End If
    End Select
End If

L = URLDownloadToFile(0&, UrlFileName, DestinationFileName, 0&, 0&)
If L = 0 Then
    DownloadFile = True
Else
    ErrorText = "Buffer length invalid or not enough memory."
    DownloadFile = False
End If
    
End Function
                            
Private Function RecycleFileOrFolder(FileSpec As String) As Boolean

    Dim FileOperation As SHFILEOPSTRUCT
    Dim lReturn As Long

    If (Dir(FileSpec, vbNormal) = vbNullString) And _
        (Dir(FileSpec, vbDirectory) = vbNullString) Then
        RecycleFileOrFolder = True
        Exit Function
    End If

    With FileOperation
        .wFunc = FO_DELETE
        .pFrom = FileSpec
        .fFlags = FOF_ALLOWUNDO
' Or
        .fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
    End With

    lReturn = SHFileOperation(FileOperation)
    If lReturn = 0 Then
        RecycleFileOrFolder = True
    Else
        RecycleFileOrFolder = False
    End If
End Function


Tags: VBA, download, URL, Web,file

LinkWithinBrazilVBAAccessSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine