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

VBA Tips - Retornando Milissegundos

Inline image 1

Hello again folks!

Medir o tempo de processamento de certos momentos das nossas aplicações é sumamente importante para otimizarmos os nossos códigos, processos, acessos, etc... Essa prática não deve ser ignorada, antes, devemos re-escrever códigos, algoritmos, mudarmos técnicas e experimentarmos até encontrarmos a mais eficiente.

Faça questão de medir a performance das suas queries, a geração de arquivos em determinandos processo de automação. Busque identificar qual é a interface que se comporta melhor no ambiente para o qual está desenvolvendo.

Mas, para medir, precisa mensurar, detectar. Como? Fácil, a função abaixo lhe permitirá tal liberdade.

Function MilisSeconds() As String

Let MilisSeconds = Strings.Format(Now, "dd-MMM-yyyy HH:nn:ss") & "." & Strings.Right(Strings.Format(Timer, "#0.00"), 2)

End Function

Mas como posso aplicar isso nas minhas procedures e functions ?

Private Sub btnSave_Click()
    ' Author:                     Date:               Contact:
    ' André Bernardes             10/05/2011 15:31    bernardess@gmail.com     http://inanyplace.blogspot.com/
    ' Application: ********.
    ' Cria a **************************************.
    ' Listening: Recognizer - Daft Punk - Tron Legacy.


    Dim nStart As String

    DoCmd.RunCommand acCmdSaveRecord

    Let nStart = Right(TimeInMS(), 11) 'Right(Now(), 8)

    Call AdjustSpecialties
    Call AssemblerCentralEngine
    Call AssemblerCentralEngine2
    Call SeedData                                                    ' Arquiva os dados para consulta e análise posteriores

    Me.cmbCenarios.Requery                                    ' Atualiza o Combo de Exclusão de cenários.

    Let Me.cxVersion.Value = Now() & " Versão 00"   ' Atualiza a caixa de texto onde se dá os nomes para novos cenários.

    MsgBox "Tabela criada com sucesso!" & Chr(10) & Chr(13) & _
           "" & Chr(10) & Chr(13) & _
           " TABELA: tbl_Bernardes" & Chr(10) & Chr(13) & _
           "" & Chr(10) & Chr(13) & _
           "CENÁRIO: " & ReturnVersion() & Chr(10) & Chr(13) & _
           "" & Chr(10) & Chr(13) & _
           "Iniciou em: " & nStart & " - Finalizou em: " & Right(TimeInMS(), 11) & Chr(10) & Chr(13) & _
           "" & Chr(10) & Chr(13) & _
           "Os dados foram preservados para análises posteriores." & Chr(10) & Chr(13) & _
           "", vbInformation, ".: Informação: Versão " & ReturnVersion()
End Sub
 
Existe um outro modo de ter este mesmo resultado, utilizando API e DLL. Não acredito que seja mais útil, mas em todo caso, teste-o você mesmo se desejar:

Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Private Declare Sub GetSystemTime Lib "kernel32" 
(lpSystemTime As SYSTEMTIME)
Public Function nMillisecond() As String
Dim tSystem As SYSTEMTIME
Dim nRet
On Error Resume Next
GetSystemTime tSystem
Let sRet = Hour(Now()) & ":" & Minute(Now()) & ":" & Second(Now()) & _
":" & tSystem.wMilliseconds
Let nMillisecond = nRet
End Function

Vocês sabem como sou, se existe um outra forma, e a conheço, não deixo de lhes mostrar (medindo processamento em centésimos de segundos com o método Timer):

Public Sub TestBernardes()
Dim fTimeStart As Single
Dim fTimeEnd As Single
Let fTimeStart = Timer

SomeProcedure

Let fTimeEnd = Timer

Debug.Print Format$((fTimeEnd - fTimeStart) * 100!, "0.00 "" Centésimos de segundos""")
End Sub


Public Sub SomeProcedure()
    Dim i As Long, r As Double

    For i = 0& To 10000000
        Let r = Rnd
    Next

End Sub


Reference:

VBAADUD
Excel Forum
Stack Overflow


Inspiration:


Tags: VBA, Tips, API, Millisecond, milesegundos, Milliseconds, timer, get, DLL, milissegundo, timer


Tips - Postagens mais visualizadas dos últimos 100 artigos.

Tips - Postagens mais visualizadas dos últimos 100 artigos.

Inline image 1

Estas são as postagens mais visualizadas dos últimos 100 artigos publicados:


Access

VBA Access - Criando tabelas temporárias no Banco de dados MS Access - Creating temporary tables in MS Access DB


Access VBA - Como copiar a tela ou janela para a área de transferência a partir do Visual Basic - How To Capture and Print the Screen, a Form, or Any Window


Inline image 1

VBA Access - Exportando dados para um arquivo texto com Delimitadores



Excel

VBA Excel - Inserindo o caracter de barra ao formatar as Datas


Inline image 1

VBA Excel - Carregando uma Matriz com um Recordset


Inline image 4

VBA Excel - Como converter texto das células em comentários - How to convert Excel Text to Comments using VBA


Inline image 1

VBA Excel - Como salvar uma planilha como somente leitura - How to Make a File ReadOnly using Excel VBA


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

VBA Excel - Extraindo Dígitos - Extract Digits (Remove Alphabets) from Selected Range


Inline image 1

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


Inline image 1

VBA Excel - Copiando uma Tabela ou List para uma nova planilha - Copying a Table or List to a New Worksheet in the Current Workbook


Inline image 1

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



Powerpoint

Inline image 2

VBA Powerpoint - Exportando os Títulos dos Slides e seus respectivos Números das páginas - Export Slide Number and Title Text to a text file




Word
Inline image 1

VBA Word - Compare o rodapé e o cabeçalho de dois documentos - Compare Word Documents with Headers and Footers using VBA


Inline image 1

VBA Word - Inserindo cabeçalho e rodapé no documento - Word Footer and Header Code




Tips

Inline image 1

VBA Tips - Inserindo quebra automática - Insert automatic line breaks


Inline image 1

VBA Tips - Capturando Imagens de uma Câmera USB - Capture USB Webcam Images on Access form with command button click


Inline image 1
VBA Tips - Tabela ASCII - American Standard Code for Information Interchange, EBCDIC, UNICODE

Inline image 1

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


Inline image 1

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




Office

Inline image 5

Office 2013 - Microsoft apresenta nova geração do Office para uso tanto em PCs como tablets


Inline image 1

MS Office 15 suportará padrão de documentos abertos ODF 1.2



Outlook

VBA Outlook - Como enviar um e-mail com uma assinatura dinâmica - How to send an email with an automatic signature


Inline image 1

VBA Outlook - Pesquise todos os e-mails no Outlook e extraia informações - Browse through all emails in Sub Folders of Specific Folder in Outlook and extract the information




Envie seus comentários e sugestões e compartilhe este artigo!
brazilsalesforceeffectiveness@gmail.com
✔ Brazil SFE®✔ Brazil SFE®´s Facebook´s Profile  Google+   Author´s Professional Profile  ✔ Brazil SFE®´s Pinterest       ✔ Brazil SFE®´s Tweets

VBA Tips - Interface de Desenvolvimento do VBA - VBE Visual Basic Editor

Inline image 1

Sim, é muito, mas muito básico...Mas necessário...

Para começar a escrever códigos VBA é necessário que conheça a interface de desenvolvimento do VBA.

Para acessar O VBE clique em 'Desenvolvedor' e depois clique no botão Visual Basic ou simplemeste pressione as teclas [ALT] + [F11] simultaneamente.

Inline image 2

O VBE possue 3 painéis diferente:

Projeto

Propriedades

Área de Codificação

Inline image 3

Projeto: Neste painel podemos navegar por todos os elementos como os formulários, módulos classes, ... Perceba que o VBA considera cada planilha aberta como um projeto.

Como padrão o VBE agrupa objetos semelhantes dentro da mesma pasta.

Microsoft Excel Objetos: Toda planilha numa pasta de trabalho é considerado um objeto.

Formulários: A pasta formulários armazena os formulários adicionados ao projeto.

Módulos: Um módulo é um container que armazena todos os procedimentos e funcionalidades que escrevemos. Antes de começar a escrever os códigos, iniciamos inserindo um módulo.

Módulos de Classe: Módulos de classe são um tipo especial de módulo que nos permite criar os nossos próprios objetos.

Perceba que no canto superior esquerdo do painel Projeto existem 3 botões: Exibir código, Exibir Objeto e Alternar pastas.

O botão Exibir código mostra o código relacionado ao objeto selecionado no painel Projeto.

O botão Exibir Objeto acessa o objeto selecionado. Por exemplo se selecionarmos uma planilha e clicarmos no painel do Projeto e em ver objeto seremos levados automaticamente para a respectiva planilha.

O botão Alternar pastas muda a maneira como os objetos são apresentados na janela do projeto, agrupados em pastas, ou não.

É interessante perceber que se estivermos com mais de uma planilha aberta e arrastarmos Módulos, Formulários, Classes entre eles, estes são copiados automaticamente. Isso certamente economiza muito o nosso tempo.

Inline image 4

Propriedades: No Painel de Propriedades podemos alterar uma série de características dos Objetos ou Formulários. Esse painel muda de contexto de acordo com a seleção ou enquanto desenhamos um formulário as propriedades exibidas são relacionadas ao objeto manuseado no momento.

Código: A maior área é preparada para que escrevamos os nossos  códigos e/ou criemos os nossos formulários.

A área maior é onde você vai escrever seus códigos ou criar seus formulários, não tenho muito a dizer sobre ela agora, mas você vai utilizá-la e muito, em breve.

Se você ainda não sabe como inserir formulários ou módulos nos seus projetos de VBA, isso é muito tranqüilo. clique sobre o VBAProject, botão direito e insirta o objeto que desejar, é bem intuitivo. Explore bem a janela do VBE.

Inline image 5


Reference:
ExcelVBA2007.BlogSpot
Inspiration:

Tags: VBA, tips, VBE, code, editor,

VBA Tips - Envie Fax através de suas aplicações VBA - Add Fax functionality to your VBA programs

Inline image 1

Envie Faxes através das suas aplicações de VBA por utilizar APIs Web Services.

Uma simples chamada ao WebserviceX.net permite que envie faxes gratuitamente para uma série de países. É verdade que ficará limitado a quantidade de textos que poderá enviar, mas é uma excelente ferramenta para mensagens essenciais. E vale a pena pelo preço, se o código de área-alvo for suportado. 

A função retornará True se o fax foi enviado.

Function SendFax (fromEmail As String, subject As String, faxNumber As String, bodyText As String, toName As String) As Boolean
' for coverage and detailed usage instructions
Dim xml As Object
Dim result As String
  Set xml = CreateObject("MSXML2.XMLHTTP.6.0")
  xml.Open "GET", _
      fromEmail & "&Subject=" & subject & "&FaxNumber=" & faxNumber & _
      "&BodyText=" & bodyText & "&ToName=" & toName, False
  xml.Send
  result = xml.responsetext
  ' parse response for msg
  If InStr(result, "Your Message has sent successfully") > 0 Then
    SendFax = True
  End If
End Function

Como usuar?
Seu endereço de email
O assunto do fax
O número do fax (sem hífens ou espaços)
O texto do fax
Seu Nome

Sub TestSendFax()
MsgBox SendFax ("seus_email@bernardes.com", "Seu Assunto", "<Telefone>","O texto", "Seu nome") 
End Sub


Reference:

Inspiration:

Tags: VBA, Tips, send, fax, Faxes, Fac-Símile, WebserviceX.net, 

VBA Excel - Apague células vazias - Delete Empty Rows

Inline image 1

Como posso apagar células vazias na minha planilha?

Sub Del_Empty_Rows()
Dim R As Long
Dim rng As Range
Application.ScreenUpdating = False
 
If Selection.Rows.Count > 1 Then
   Set rng = Selection
Else
   Set rng = ActiveSheet.UsedRange.Rows
End If
 
For R = rng.Rows.count To 1 Step -1
   If WorksheetFunction.CountA(rng.Rows(R).EntireRow) = 0 Then
      rng.Rows(R).EntireRow.Delete
   End If
Next R
 
Application.ScreenUpdating = True
End Sub

Reference:
Inspiration:

Tags: VBA, Excel, delete, cells, cell, apaga, célula

VBA Excel - Proteja-se para que ninguém copie e cole conteúdo nas suas planilhas - To prevent people cutting/copying and pasting when your workbook is open

Inline image 1
Geralmente, se não todas as vezes, desejamos que os nosso relatório, Dashboards e aplicações não sejam copiadas, ou tenham os seus conteúdos e layouts alterados por alguém que inadvertidamente cole dados na nossa planilha. 

Há como protegê-las dessas intempéries? Sim! Divirta-se com os códigos abaixo:

Sub DisableCutAndPaste()    EnableControl 21, False   ' cut    EnableControl 19, False   ' copy    EnableControl 22, False   ' paste    EnableControl 755, False  ' pastespecial    Application.OnKey "^c", ""    Application.OnKey "^v", ""    Application.OnKey "+{DEL}", ""    Application.OnKey "+{INSERT}", ""    Let Application.CellDragAndDrop = False  End Sub    Sub EnableCutAndPaste()    EnableControl 21, True   ' cut    EnableControl 19, True   ' copy    EnableControl 22, True   ' paste    EnableControl 755, True  ' pastespecial    Application.OnKey "^c"    Application.OnKey "^v"    Application.OnKey "+{DEL}"    Application.OnKey "+{INSERT}"    Let Application.CellDragAndDrop = True  End Sub    Sub EnableControl (Id As Integer, Enabled As Boolean)    Dim CB As CommandBar    Dim C As CommandBarControl
    For Each CB In Application.CommandBars      Set C = CB.FindControl(Id:=Id, recursive:=True)      
     If Not C Is Nothing Then Let C.Enabled = Enabled    Next  End Sub
Reference:
Bill Manville
Tags: VBA, Excel, cutting, copying, pasting, cut, copy, past

VBA Excel - Localize células que contenham fórmulas com valores literais - To locate cells containing formulas with literal values

Inline image 1
Sempre tem alguém que pergunta, mas prá que serve essa função? Bem, se você ainda não sabe prá que essa função serve é porque ainda tem alguma experiência a desenvolver com o MS Excel ou mesmo com o desenvolvimento VBA.

Faça o seguinte: Guarde essa função em sua biblioteca, e te garanto que no futuro precisará dela, mas do que imagina.

Aos demais que compreendem sobre o que estou falando, segue:

Function CellUsesLiteralValue (Cell As Range) As Boolean      If Not Cell.HasFormula Then          Let CellUsesLiteralValue = False      Else          Let CellUsesLiteralValue = Cell.Formula Like "*[=^/*+-/()><, ]#*"      End If  End Function

Reference:
John Walkenbach e John Green
Tags: VBA, Excel, cell, formulas

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine