Views

Important:

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

...

21 de dezembro de 2012

VBA Excel - Inserindo uma logomarca animada - Animating Your Company’s Logo in Excel




As Logomarcas são uma maneira fácil de adicionar um senso de profissionalismo ao trabalho que estamos entregando. 

Telas iniciais e logotipos são parte de cada produto de software que adquirimos e também devem ser parte integrante de cada aplicação que você fornecer ao seu Cliente. 

Agora, se o seu logo for animando...Isso será ainda mais divertido! 

Além de divertir os usuários, definirá o seu trabalho para além da média com um desenvolvedor de aplicações para o Excel.

Eu procuro usá-los quando a primeira pasta de trabalho é aberta (Passo-a-passo até para os iniciantes hein!):

- Abra uma pasta de trabalho em branco

- Renomeie a primeira guia "Dados"

- Esta será a planilha exibida quando o nosso workbook for aberto

- Agora, obtenha uma cópia animada do logotipo da sua empresa

  No site da sua empresa provavelmente tem um com o tamanho certo

- Cole-o na planilha de dados

- Precisamos de nomeá-lo "Logo"

- Selecione-o, e em seguida, use Alt-F11 para chegar ao Editor do Visual Basic

- Use Ctrl-R para abrir o Project Explorer

- Dê um duplo clique em "ThisWorkbook" (ou EstaPasta_de_trabalho) 
Isso traz à tona a janela de código da pasta de trabalho. 

- Essa rotina deve ser executada logo que o workbook for aberto, por isso vamos codificá-la em Workbook_Open

- Esta rotina ativavá a aba que renomeamos para "Data", e em seguida passa à nossa "Logo" para duas rotinas. 

- A primeira faz "crescer" a nossa logomarca. 

- A segunda faz girá-la uma vez.

Private Sub Workbook_Open()
 
    Worksheets("Dados").Activate
    ActiveSheet.Shapes("Logo").LockAspectRatio = False
    GrowShape ActiveSheet.Shapes("Logo"), 10
    SpinShape ActiveSheet.Shapes("Logo"), 10
           
End Sub



A rotina GrowShape expandirá qualquer shape à vista. Primeiro desligará atualização de tela. Isso nos permitirá fazer alterações nos bastidores e exibir os resultados quando estivermos prontos. 

Em seguida, a rotina GrowShape se lembrará das dimensões do shape. Em seguida, a rotina muda o tamanho do shape, exibe-o, congela a tela e faz loops até terminar. Antes de finalizar, a rotina GrowShape garante que o shape está exatamente como o encontramos.

A rotina SpinShape é quase idêntica. Congela a tela, lembra as dimensões originais do shape, em seguida, altera o tamanho do shape num circuito que simula-o girando em torno do seu eixo Y. Quando termina, a rotina SpinShape restaura o shape ao seu tamanho original.

Isso é tudo o que precisamos para animarmos um logotipo!

Function GrowShape (ByRef Shape As Shape, Step As Integer) As Boolean
'   Description:Expands a shape into view
'   Parameters: Shape       The shape to animate
'               Step        Larger #s animate faster
'   Example:    GrowShape ActiveSheet.Shapes("Logo"), 10
'   Note:       For best results, shape should be hidden before calling
'               this routine
'     Date   Init Modification
'   01/10/11 CWH  Initial Programming
    Dim lCenterX As Long    'Shape's center X coordinate
    Dim lCenterY As Long    'Shape's center Y coordiante
    Dim lWidth   As Long    'Shape's width
    Dim lHeight  As Long    'Shape's height
    Dim l        As Long    'Generic Counter for the loop
   
    Application.ScreenUpdating = False
   
    With Shape
       'Remember shape's original dimensions
        lCenterX = .Width / 2 + .Left
        lCenterY = .Height / 2 + .Top
        lWidth = .Width
        lHeight = .Height
       'Animation Loop
        For l = 0 To lWidth Step Step
            .Width = l
            .Height = l * lHeight / lWidth
            .Left = lCenterX - .Width / 2
            .Top = lCenterY - .Height / 2
            Shape.Visible = True
            Application.ScreenUpdating = True
            Application.ScreenUpdating = False
        Next l
       'Restore shape's original dimensions
        .Width = lWidth
        .Height = lHeight
        .Left = lCenterX - .Width / 2
        .Top = lCenterY - .Height / 2
    End With
   
    Application.ScreenUpdating = True
End Function
 
Function SpinShape (ByRef Shape As Shape, Step As Integer) As Boolean
'   Description:Expands a shape into view
'   Parameters: Shape       The shape to animate
'               Step        Larger #s animate faster
'                           Steps should divide 90 evenly
'   Example:    SpinShape ActiveSheet.Shapes("Logo"), 10
'     Date   Init Modification
'   01/10/11 CWH  Initial Programming
   
    Const Pi = 3.14159265358979
    Dim sng01 As Single     '1 Degree in Radians
        sng01 = Pi / 180
       
    Dim lCenterX As Long    'Shape's center X coordinate
    Dim lCenterY As Long    'Shape's center Y coordiante
    Dim lWidth   As Long    'Shape's width
    Dim lHeight  As Long    'Shape's height
    Dim l        As Long    'Generic Counter for the loop
   
    Application.ScreenUpdating = False
   
    With Shape
        .LockAspectRatio = False
       'Remember shape's original dimensions
        lCenterX = .Width / 2 + .Left
        lCenterY = .Height / 2 + .Top
        lWidth = .Width
        lHeight = .Height
       'Animation Loop
        For l = 0 To 360 Step Step
            .Width = lWidth * Abs(Cos(l * sng01))
            .Left = lCenterX - .Width / 2
            If l = 90 Or l = 270 Then .Flip msoFlipHorizontal
            Shape.Visible = True
            Application.ScreenUpdating = True
            Application.ScreenUpdating = False
        Next l
       'Restore shape's original dimensions
        .Width = lWidth
        .Height = lHeight
        .Left = lCenterX - .Width / 2
        .Top = lCenterY - .Height / 2
    End With
   
    Application.ScreenUpdating = True
End Function


Tags: VBA, Excel, development, Microsoft Excel, tutorial, logo, logomarca, animar, animated,


Nenhum comentário:

Postar um comentário

eBooks VBA na AMAZOM.com.br

Vitrine