Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador caption. Mostrar todas as postagens
Mostrando postagens com marcador caption. Mostrar todas as postagens

VBA Word Tips - Insira Imagens de um diretório no Word - Batch insert pictures with filenames as captions

Inline image 1












Imagine que o seu trabalho envolva tirar fotos e apresentá-las num relatório com comentários, que são na verdade os nomes dos respectivos arquivos, dentro de um bem elaborado template do MS Word.

Seria muito bom ter uma ferramenta que pudesse fazer a importação de todas as fotos de um diretório e colocar os seus respectivos nomes de arquivo como comentário abaixo das fotos não seria?

Outra provável situação seria precisar inserir imagens de uma aplicação num manual de uma aplicação.

Você já capturou todas as imagens, colocou os respectivos nomes e agora deseja inserí-las no seu documento, acrescentando os respectivos textos.

Mas ainda há mais uma possibilidade na qual consigo pensar:

Imagine que a sua aplicação MS Excel, conectado ao MS Access, contém uma macro que exporta todos os seus gráficos como imagens para um diretório.

Mas a sua macro não exporta somente gráficos, ela exporta também tabelas, conjuntos de dados, Ranges nomeados e mesmo alguns Mapas que inseriu para ilustrar as áreas que desejava dar foco nas suas análises.

Digamos que agora você precise criar um relatório tal como um Annual Report ou um Financial Report.

Então divirta-se com a solução abaixo.

O código abaixo permite que insira fotos .JPG:

Sub InsertAllPicsWithCaption() 
    Dim file 
    Dim path As String 

    Let path = "C:\Bernardes\Photos\" 
    Let file = Dir(path & "*.jpg") 
     
    CaptionLabels.Add Name:="Filename" 

    Do While file <> "" 

        With Selection 
            .EndKey Unit:=wdStory 
            .InlineShapes.AddPicture FileName:=path & file, _ 
            LinkToFile:=False, SaveWithDocument:=True 
            .InsertAfter vbCrLf & vbCrLf 
            .Collapse 0 
            .MoveLeft Unit:=wdCharacter, Count:=1 
            .Style = "Comentário: " 
            .Text = path & file 
        End With 

        Let file = Dir() 
    Loop 
    Selection.EndKey Unit:=wdStory 
End Sub

Neste código poderá insirir fotos .JPG, .PNG e . TIF:

Sub InsertAllPicsWithCaption2() 
    Dim file 
    Dim path As String 

    Let path = "C:\Bernardes\Photos\" 
    Let file = Dir(path & "*.jpg") 
     
    CaptionLabels.Add Name:="Filename" 

    Do While file <> "" 
         ' Testando as extensões...
        If UCase(Right(file, 3)) = "PNG" Or _ 
           UCase(Right(file,3)) = "TIF" Or _ 
           UCase(Right(file,3)) = "JPG" Then 

            With Selection 
                .EndKey Unit:=wdStory 
                .InlineShapes.AddPicture FileName:=path & file, _ 
                LinkToFile:=False, SaveWithDocument:=True 
                .InsertAfter vbCrLf & vbCrLf 
                .Collapse 0 
                .MoveLeft Unit:=wdCharacter, Count:=1 
                .Style = "Comentário: " 
                .Text = path & file 
            End With 

        End If 

        Let file = Dir() 
    Loop 

    Selection.EndKey Unit:=wdStory 
End Sub 

Tags: Tips, Word, batch, pictures, pic, imagem, caption, legenda, .JPG, .PNG, .TIF, 



VBA Access - Animando o título do formulário e do ícone da Barra de Tarefas - Animate String


Neste exemplo estou aplicando o código no MS Access, mas com poucas adaptações também pode ser aplicado aos demais produtos da suíte MS Office.

É um efeito que deve ser usado de forma comedida, caso contrário chama muito a atenção. Talvez possa utilizá-lo:

- Quando termina um processamento e você deseja chamar a atenção para o formulário;
- Quando determinado valor é alcançado, deseja que o formulário já indique chamando a atenção;
- etc...

Para aplicá-lo a um formulário insira o código dessa maneira (Defina 300 ms para testar):

Private Sub Form_Timer()
    ' Author:                     Date:               Contact:                 URL:
    ' André Bernardes             20/05/2010 11:15    bernardess@gmail.com     André Luiz Bernardes - CURRICULUM VITAE
    ' Atualiza o relógio para ver que funciona.    

    [Form_frm_Avisos].Caption = AniText("  Software Bernardes® - Copyright© Bernardes S.A.", 3)
    
    [Form_frm_Avisos].Repaint
End Sub

Agora, você pode aplicar este efeito também no título da aplicação, ou seja, alterar o Caption do próprio MS Access. Isso envolve o título da janela aberta e também o ícone na barra de trabalho. Como?

Private Sub Form_Timer()
    ' Author:                     Date:               Contact:                 URL:
    ' André Bernardes             20/05/2010 11:15    bernardess@gmail.com     https://sites.google.com/site/bernardescvcurriculumvitae/
    ' Atualiza o relógio para ver que funciona.
    
    Dim dbs As Database
    Set dbs = CurrentDb

    'Me.lblTime.Caption = ""
    [Form_frm_Avisos].lblTime.Caption = Right(Now(), 9)

    [Form_frm_Avisos].Caption = AniText("  Software Bernardes® - Copyright© Bernardes S.A.", 3)
    
    dbs.Properties!AppTitle = AniText("  Software Bernardes® - Copyright© Bernardes S.A.", 1)

    Application.RefreshTitleBar

    [Form_frm_Avisos].Repaint
End Sub

Sim, mas para que esse processo funcione, precisamos da função AniText, segue:

Global Cl As Integer
Global at As Integer
Public Function AniText(str As String, eff As Integer) As String

    ' Author:                     Date:               Contact:                 URL:
    ' André Bernardes             13/03/2010 12:22    bernardess@gmail.com     https://sites.google.com/site/bernardescvcurriculumvitae/
    ' Retorna a string animada.
    
    Dim lop

    Let Cl = Len(str) + 1
    Let at = at + 1

    If at >= Cl Then
        Let at = 1
    End If

    Select Case eff
    Case 0          'Move to Right
        Let AniText = Mid(str, at) + Left(str, at)
    Case 1          'Move to Left
        Let AniText = Mid(str, (Cl - at)) + Left(str, (Cl - at))
    Case 2          'Move to Centre
        Let AniText = Mid(str, (Cl - at)) + Left(str, (Cl - at)) + Mid(str, at) + Left(str, at)
    Case 3          'Move to BothSide
        Let AniText = Mid(str, at) + Left(str, at) + Mid(str, (Cl - at)) + Left(str, (Cl - at))
    End Select
End Function


References:


Tags: VBA, Office, Access, Tips, animar, animate, form, formulário, caption, move, mover, string, texto,
diHITT - Notícias