• +351 91 33 888 29
    • clico@clico.pt

    Blog

    Excel

    Tabela periódica Atalhos Excel

    360085765_741849454613471_1290443440714800397_n Tabela periódica Atalhos Excel
    PowerApp Low Code - Collection Large Sharepoint Lists

    Collecting large lists in PowerApps from SharePoint

    Collecting large lists in PowerApps from SharePoint

    // — Process Start —
    // — Clear all collections —
    Clear(colDummy);
    Clear(colIterations);
    Clear(colNumbersTable);
    Clear(cCollection);  // — Collection where store all Sharepoint records

     

    /*****************************************************************************************
    Start generate records series
    List up to 2 million records, if necessary increases the value of the records in the vectors
    *******************************************************************************************************/
    ClearCollect(
        colNumTemp,
        [
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8,
            9,
            10
        ]
    );
    ForAll(
        colNumTemp,
        ForAll(
            colNumTemp,
            ForAll(
                colNumTemp,
                Collect(
                    colDummy,
                    {dummy: 1}
                );
                Collect(
                    colNumbersTable,
                    {Number: CountRows(colDummy)}
                )
            )
        )
    );
    // — Series end
    // — Get the first and last record of the list
    UpdateContext(
        {
            FirstRecord: First(
                Sort(
                    sharepointList, //— Sharepoint list to go find the records
                    ID,
                    Ascending
                )
            )
        }
    );
    UpdateContext(
        {
            LastRecord: First(
                Sort(
                    sharepointList, //— Sharepoint list to go find the records
                    ID,
                    Descending
                )
            )
        }
    );
    // —The capture of records begins
    UpdateContext(
        {
            Iterations: RoundUp(
                (LastRecord.ID – FirstRecord.ID) / 2000,
                0
            )
        }
    );
    // —Create a new collection to register the first ID found
    ClearCollect(
        varCounter,
        {min_Num: FirstRecord.ID}
    );
    /*****************************************************************************************
    A ForAll loop is used where the column number is less than or equal to the number of iterations
    Updates the iteration collection with the current iteration number, minimum and maximum numbers
    update the collection of counters
    ********************************************************************************************************/
    ForAll(
        Filter(
            colNumbersTable,
            Number <= Iterations
        ),
        Collect(
            colIterations,
            {
                Number: Last(
                    FirstN(
                        colNumbersTable,
                        CountRows(colIterations) + 1
                    )
                ).Number,
                min_Num: First(varCounter).min_Num,
                max_Num: First(varCounter).min_Num + 1999
            }
        );
        Patch(
            varCounter,
            First(varCounter),
            {
                min_Num: Last(
                    FirstN(
                        colIterations,
                        CountRows(colIterations) + 1
                    )
                ).max_Num + 1
            }
        )
    );
    // End of capture of records
    /*************************************************************************************
    Finally, with a ForAll loop we will collect all our items
    ** !! Unable to use the ID column to make delegations !! **
    ** The ID here must be a numeric field (numID)**
    ****************************************************************************************************/
    ForAll(
        colIterations,
        Collect(
            sharepointList, //— Sharepoint list to go find the records
            Filter(
                sharepointList, //— Sharepoint list to go find the records
                numID >= min_Num && numID <= max_Num
            )
        )
    );
    // Downloads collections
    // — END —

    Desproteger Livro Excel

    Protegeu a sua folha ou livro de excel e esqueceu-se da senha?
    Tem um livro de excel que se encontra protegido e precisa ver as fórmulas mas não sabe a senha?
    Então, neste artigo, poderemos ver com hackear um ficheiro excel de forma simples.
    Lembre-se sempre: use o seu conhecimento para o bem! 😉 e com responsabilidade 👨‍⚖️

    O Código funciona em versões de Excel anteriores a 2010, mas nada que não se consiga resolver .

    Se o ficheiro protegido for de uma versão recente ou posterior a 2003, basta fazer-se o seguinte:

    1° Guarde o seu ficheiro no formato 97-2003.

    Clique no separador “Arquivo”, depois clique em “Salvar como” e selecione a opção “Pasta de trabalho do Excel 97-2003”

    1 Desproteger Livro Excel

    Depois do ficheiro guardado numa versão suportada,  segue-se o desbloqueio 🙃.

    Para proceder ao desbloqueio, abrimos o ficheiro, carregamos nas teclas “Alt+F11” para abrir o VBE, o editor de códigos do Excel. De seguida, carregamos em “Inserir” e selecionamos “Módulo”.

    2 Desproteger Livro Excel

    Por fim, basta copiar o código abaixo e colar dentro do módulo que criamos:

    Sub DesbloquearFolhaExcel()

    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

    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 “Folha de Excel desprotegida com sucesso!”, vbInformation

    Exit Sub

    End If

    Next

    Next

    Next

    Next

    Next

    Next

    Next

    Next

    Next

    Next

    Next

    Next

    End Sub

    3 Desproteger Livro Excel

    O impacto da Impressão em Série Word (VBA)

    O código a seguir, guarda em Word e em PDF documento a documentos de um ficheiro de impressão em série. 

    Copie o código abaixo e cole em VBA no Microsoft Word, para abrir o Editor Visual Basic Applications:  (Alt+F11) ou lado direito do rato no separador(friso), personalizar separador e depois seleccionar Programador.

    Sub Guardar_Imprimir_Individualmente()

    ‘Separa um registo de um ficheiro de impressão em série de cada vez para a pasta escolhida

    Application.ScreenUpdating = False

    Dim StrFolder As String, StrName As String, MainDoc As Document, i As Long

    Set MainDoc = ActiveDocument

    With MainDoc

      StrFolder = .Path & “”

      For i = 1 To .MailMerge.DataSource.RecordCount

        With .MailMerge

          .Destination = wdSendToNewDocument

          .SuppressBlankLines = True

          With .DataSource

            .FirstRecord = i

            .LastRecord = i

            .ActiveRecord = i

            StrName = .DataFields(“Partners”)

          End With

          .Execute Pause:=False

        End With

        With ActiveDocument

          .SaveAs2 FileName:=StrPath & StrName & “.docx”, FileFormat:=wdFormatXMLDocument, AddToRecentFiles:=False

          ‘ and/or:

          .SaveAs2 FileName:=StrPath & StrName & “.pdf”, FileFormat:=wdFormatPDF, AddToRecentFiles:=False

          .Close SaveChanges:=False

        End With

      Next i

    End With

    Application.ScreenUpdating = True

    End Sub

    PowerApp Adicionar e Ler PDF

    Incorporar documentos PDF no Powerapps

    Para inserir um PDf na Aplicação Powerapp é necessario criar um fluxo.

    O fluxo de automatização da Microsoft que permite tudo isto é tão simples como se segue:

    Fluxo PowerAutomate:

    Fluxopdf PowerApp Adicionar e Ler PDF
    1. É necessário criar um Fluxo instantâneo a partir do Powerapps. Comecei com um fluxo em branco e depois adicionei a ação “PowerApps – Trigger”
    PDF1 PowerApp Adicionar e Ler PDF
    1.É necessário criar um Flow que possa correr de forma instantanea a partir do PowerApps. Comecei com um Fluxo em branco e adicionei a ação “PowerApps – Trigger” para começar.

    2. Sharepoint  – Get file content using path, aqui coloquei o caminho do ficheiro onde se encontra o PDF, depois de carregar onde diz “Ask in PowerApps”, temos o getfilecontent…

    pdf2 PowerApp Adicionar e Ler PDF
    pdf3 PowerApp Adicionar e Ler PDF

    3. Resposta ao PowerApps, na verdade, só precisamos retornar as informações de arquivo corretas que o controle do Power Apps PDF Viewer entende.

    Para que o valor do parâmetro do arquivo PDF retorne ao PowerApps, selecionamos Expression e onde aparece fx, colamos a seguinte expressão:

    body(‘Get_file_content_using_path’)[‘$content’]

     

    pdf4 PowerApp Adicionar e Ler PDF

    Terminamos aqui o nosso fluxo.

    No PowerApps:

    Criar uma nova aplicação em PowerApps, depois disso já dentro do PowerApps, no Menu Action, vai a PowerAutomate e insere o Fluxo criado, basta carregar em cima e é inserido no PowerApps.

    fluxopdf-1 PowerApp Adicionar e Ler PDF

    Na aplicação, cria um formulário com o Botão que pretende abrir o PDF e outro formulário onde vai inserir o componente PDF Viewer (Experimental).

    No primeiro formulário, onde tem o Botão que vai abrir o formulário seguinte, na propriedade On Select, o código é:

    Navigate( ViewPDF, ScreenTransition.None, { { selecteditem_v: “name of your pdf without extension” } )

    No formulário criado, onde tem o componente PDF Viewer (Experimental), na propriedade do formulário On Visible, vou criar uma variável que oculta o controlo do PDF Viewer enquanto o fluxo é executado para retornar o conteúdo do PDF. Quando o fluxo é concluído, defino a propriedade “loading_v” de volta para false, para que o PDF fique visível.

    O código aqui é:

    UpdateContext({ loading_v: true }); UpdateContext({ pdf_v: ‘name of your flow’.Run( Concatenate( First( Split( selecteditem_v.Name, “.” ) ).Result, “.pdf” ) ) }); UpdateContext({ loading_v: false })

    No código acima, passo o nome do arquivo para o fluxo e crio e uso uma variável “pdf_v” que conterá o conteúdo do documento PDF retornado pelo fluxo.

    O objetivo da função “Split” usada no código acima é remover a extensão do nome do arquivo original do nome do documento original e depois substituí-la por um nome de extensão do arquivo “.pdf”.

    PDF PowerApp Adicionar e Ler PDF

    Por fim, no controlo PDF Viewer, defino a propriedade “Document” como pdf_v.pdf e a propriedade Visible como !loading_v.

    Modelo Desporto

    Template de Powerpoint – Desporto

    Modelo Powerpoint

    Template de Powerpoint Natureza

    Mapa Assiduidade com Controlo de Horas

    Mapa de Assiduidade com controlo de Horas.

    Calculo Semanal e Mensal de horas trabalhadas por cada colaborador.

    Para mais informações: clico@clico.pt

    Mapa_Assiduidade-1024x528 Mapa Assiduidade com Controlo de Horas
    Excel Geocoding

    Geocodificação com Microsoft Excel e Bing Maps

    Numa pesquisa sobre geocodificação usando Excel e Google Maps, encontrei um modelo de excel com todo o código já feito, bastante interessante. Para que funcione basta somente ativar as Macros no Microsoft Excel e criar uma chave API do Bing Maps.

    Faça download em:

    Excel Geocoding tool

    Bing-Excel-geocoding_head-300x147 Geocodificação com Microsoft Excel e Bing Maps

    Identificar linha e coluna

    VBA- Identificar ultima linha e coluna da folha de calculo

    Uma rotina que sempre precisamos recorrer nos nossos códigos e macros é aquela onde podemos recuperar a última linha e coluna que estão escritas na nossa folha de cálculo.Em diversas situações torna-se necessário utilizar esta informação, como por exemplo, quando precisamos percorrer todas as linhas da nossa folha de cálculo que possuam dados, seja uma lista de nomes, de produtos, de telefones ou qualquer outro tipo de lista. 

    Neste artigo vou explicar como obter esta informação em qualquer folha de cálculo, automaticamente. 

    O código aqui apresentado, serve para utilizar em qualquer folha de cálculo.

    Já utilizei este código várias vezes, inclusive em exemplos já disponibilizados aqui no site. Um exemplo deste uso pode ser encontrado no artigo onde ensino a macro para enviar emails para sua lista ou neste outro no qual mostro como exibir uma barra de progresso para controlar o andamento do processamento da macro.

    Este código é um exemplo e deverá ser contextualizado a cada projecto.

    Para aceder ao editor de Macros VBA, carregue nas seguintes teclas: (ALT+F11),  de seguida insira um Módulo e digite/copie o código abaixo.

    Sub UltimaLinhaColuna()

    Dim iUltimaLinha As Long
    Dim iUltimaColuna As Long
    Dim sh As Worksheet
    Dim rng As Range

    Set sh = ActiveSheet ‘Referência a folha que pretendemos encontrar a ultima linha e coluna

    Set rng = sh.Range(“A1”).SpecialCells(xlCellTypeLastCell)

    iUltimaLinha = rng.Row ‘Encontra a última linha
    iUltimaColuna = rng.Column ‘Encontra a última coluna

    MsgBox “A última linha com dados é: ” & iUltimaLinha & vbCrLf & “A última coluna com dados é: ” & iUltimaColuna, vbInformation

    End Sub

    Voltando a folha de cálculo, para ver a lista de Macros criadas, carregue nas teclas:(Alt+F8) e de seguida execute  a macro criada (neste caso UltimaLinhaColuna)

    Identificarultimalinhaecolunacomdados_acedermacro VBA- Identificar ultima linha e coluna da folha de calculo

    Resultado final:

    Identificarultimalinhaecolunacomdados VBA- Identificar ultima linha e coluna da folha de calculo
    Show Buttons
    Hide Buttons