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

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

Classificando os Dados de uma Planilha - Alphabetizing a Column


Você já precisou classificar os dados de uma planilha, seja para facilitar a pesquisa, seja preparar uma análise prévia?

E se você tivesse uma função disponível para isso?
(Perceba que existem outras funções utilizadas no código, mas todas estão aqui no Blog)


Function SortColumn (nSheet As String, nCellStart As String)
    ' © 2007-20 A&A - In Any Place®, except where noted, all rights reserved.
    ' THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
    ' LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
    ' Feel free to use the code as you wish but kindly keep this header section intact.
    ' Copyright© A&A - In Any Place®, all Rights Reserved.    '      Author: André Bernardes
    '     Contact: andreluizbernardess@gmail.com | https://goo.gl/EUMbSe/
    ' Description: Sort by column.

    Dim nRowIni As String
    Dim nRowFin As String
    Dim nColIni As String
    Dim nColFin As String
    Dim nRng As String

    Let nRowIni = Range(nCellStart).Row                         ' A partir da referência (nCellStart), determina a linha inicial.
    Let nColIni = ColumnLettersFromRange (Range(nCellStart))     ' A partir da referência (nCellStart), determina a coluna inicial.
    Let nRowFin = FindingLastRow (nSheet, nColIni)               ' A partir da referência (nSheet), determina a última linha.
    
    Sheets(nSheet).Select

    Let nColFin = FindLastColumn (False)                         ' A partir da referência (nSheet), determina a última linha.
    Let nRng = nColIni & nRowIni & ":" & nColFin & nRowFin      ' A partir das referências (nSheet e nCellStart) e algumas funções, determina o range.

    Range(nCellStart).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    ActiveWorkbook.Worksheets(nSheet).Sort.SortFields.Clear

    With ActiveWorkbook.Worksheets(nSheet).Sort
        .SetRange Range(nRng) 
        
        Let .Header = xlYes
        Let .MatchCase = False
        Let .Orientation = xlTopToBottom
        Let .SortMethod = xlPinYin
        
        .Apply
    End With

End Function

⬛◼◾▪ Social Media ▪◾◼⬛
• FACEBOOK • TWITTER • INSTAGRAM • TUMBLR • GOOGLE+ • LINKEDIN • PINTEREST

⬛◼◾▪ Blogs ▪◾◼⬛ 

⬛◼◾▪ CONTATO ▪

SANDWICH PROJECT 2016 - VBA Excel - Crack Sheet Protection Password

SANDWICH PROJECT 2016 - VBA Excel: Quebrando a proteção de Planilha Protegida - Crack Sheet Protection Password






Às vezes protegemos nossas planilhas e simplesmente esquecemos a senha que havíamos colocado nela. Aí ficamos várias horas tentando lembrar, o que trás muito transtorno quando estamos com pressa, o que não é raro.

O código abaixo deve ser colado na mesma Sheet (ALT + F11) que estiver protegida.


Sub WorkBookPasswordBreaker()
    '      Author: André Luiz Bernardes - A&A - In Any Place - andreluizbernardes@gmail.com
    '        Date: 11/05/2016 - 14:45
    ' Application: Field Force Dashboard Analysis® - © A&A - In Any Place 2016, Inc. Todos os direitos reservados.
    '     Company: © A&A - In Any Place 2016, Inc. Todos os direitos reservados.
    '     Purpose: Crack Sheet Protection Password
  
  Dim i As Integer, j As Integer, k As Integer
  Dim l As Integer, m As Integer, n As Integer
  Dim i1 As Integer, i2 As Integer, i3 As Integer
  Dim i4 As Integer, i5 As Integer, i6 As Integer
  On Error Resume Next
  For i = 65 To 66: For j = 65 To 66: For k = 65 To 66
  For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66
  For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66
  For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126
    Debug.Print Chr(i) & Chr(j) & Chr(k) & _
      Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
      Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _
      Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _
      Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
    If ActiveSheet.ProtectContents = False Then
      MsgBox "A possível senha é " & Chr(i) & Chr(j) & _
          Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
          Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
        ActiveWorkbook.Sheets(1).Select
        Let Range("a1").FormulaR1C1 = Chr(i) & Chr(j) & _
          Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _
          Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)
       Exit Sub
    End If
  Next: Next: Next: Next: Next: Next
  Next: Next: Next: Next: Next: Next
End Sub

VBA Excel - Criando Índice de todas as Abas - Create An Index Page



Nós desenvolvedores gostaríamos todos de viver num mundo ideal onde tivéssemos bastante tempo para analisar os dados que transformaremos em informações. Seria muito importante que pudéssemos gastar algum tempo prospectando o modo como as informações serão analisadas pelos usuários finais. 

Raras são as vezes onde conseguimos tempo para isso. O código a seguir implementa uma facilidade que não requererá nada do nosso tempo para desenvolver. Apenas podemos copiar e colar.

Tornar os Dashboards mais funcionais, rápidos e práticos é uma das nossas obrigações.

Estamos constantemente sob o paradoxo de não termos tempo para implementar as facilidades que farão com que os usuários utilizem massivamente as nossas soluções. 

A criação de um índice para as diversas planilhas dentro do nosso workbook certamente será bem vinda.

- Acrescente a chamada a este procedimento assim que o workbook for aberto:


Private Sub Workbook_Open()

    Call CreateIndex

End Sub

Crie um novo módulo e cole o conteúdo abaixo:


Sub CreateIndex()

    Let Application.DisplayAlerts = False

    

    On Error Resume Next

    

    Sheets("Index").Delete

    

    On Error GoTo 0

    

    Set myIndex = Sheets.Add(Sheets(1))

    

    Let myIndex.Name = "Index"

    Let iRow = 1

    

    For Each theSheet In ThisWorkbook.Sheets

        If iRow = 1 Then

            Let Cells(iRow, 1).Value = "INDEX"

        Else

            ActiveSheet.Hyperlinks.Add Anchor:=Cells(iRow, 1) _

             , Address:="", SubAddress:= _

             "'" & theSheet.Name & "'" & "!A1", TextToDisplay:=theSheet.Name

        End If

        

        Let iRow = iRow + 1

    Next



    Sheets("Index").Move After:=Sheets(1)

End Sub


Tags: VBA, index, sheet, page, create, índice, planilha, worksheet



VBA Excel - Gravando histórico das alterações na planilha - Log in Sheet


Que tal acompanhar as alterações e intervenções efetuadas nos seus Relatórios, Dashboards e Scorecards desenvolvidos com o MS Excel?

Sim, com uma simples implementação, e algum código poderá acompanhar tudo o que foi alterado na sua planilha.

Este recurso pode ser útil:

Ao acompanharmos padrões de manipulação dos dados.

Para rastrearmos as ações de um determinado usuário.

Na detecção de erros.

Se você tiver algum tempo adicional, poderá implementar essa alteração em todas as planilhas corporativas ou nas que você disponibilizar, podendo concentrar o histórico de todas num único local.

Sim, é possível fazer tais registros em arquivo texto, ou mesmo numa base de dados MS Access

1 - Crie uma aba History
2 - Cole o código abaixo no módulo EstaPasta_de_trabalho (ThisWorkbook).

Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)

    ' Author:                     Date:               Contact:                 URL:
    ' André Bernardes             02/10/2012 10:58    bernardess@gmail.com     http://inanyplace.blogspot.com/
    ' documenta as alterações efetuadas nessa planilha.
    
    Dim wsHist As Worksheet, Rng As Range
    
    Set wsHist = Sheets("History")
    Let Application.ScreenUpdating = False
    Let Sheets("History").Visible = True
    
    If Sh Is wsHist Then Exit Sub

    Set Rng = wsHist.Range("A" & Rows.Count).End(xlUp).Offset(1)

    With Rng
        Let .Value = Now
        Let .Offset(, 1) = "Sheet: " & Sh.Name & " in Workbook: " & Replace(Sh.Application.Caption, "Microsoft Excel - ", "") & " no Path: " & Sh.Application.DefaultFilePath
        Let .Offset(, 2) = "Alterado por: " & Sh.Application.UserName
        Let .Offset(, 3) = Target.Address
        Let .Offset(, 4) = Target.Formula
    End With

    Let Application.ScreenUpdating = True
    Let Sheets("History").Visible = False
End Sub

3 - Salve a planilha e altere o conteúdo de uma célula.


Tags: VBA, Excel, Log, Sheet, Info, histórico, registro, histórico, alteração, planilha

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine