Ir ao conteúdo

Crafteribanez

Membro Pleno
  • Posts

    76
  • Cadastrado em

  • Última visita

posts postados por Crafteribanez

  1. Boa tarde

     

    Estou tentando no Python => Google Colab o seguinte procedimento sem êxito.

    Encontrar todas as ocorrências de um texto e localizar o índice de cada ocorrência.

    Pretendo exportar os resultados obtidos para um arquivo externo.

     

    Código até o momento:

    from google.colab import files
    
    arquivo = files.upload()
    
    
    
    pip install pdfminer.six
    
    
    
    from pdfminer.high_level import extract_text
    
    texto = extract_text('dopa.pdf')
    
    print(texto)
    
    
    
    print("Termo Aditivo " + str(texto.count('EXTRATO DE TERMO ADITIVO')))

     

    Este código me retorna a quantidade de ocorrências, porém precisaria encontrar os índices das 4 ocorrências para poder extrair as strings.

    Depois do texto, sempre tem o número do aditivo, é o que me interessa;

     

    Aceito sugestões.

    Grato.

     

     

     

     

     

     

     

     

  2. Option Explicit
    
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim sql As String
        Dim x As Integer
        Dim i As Long
    
    
    Sub Consolida()
    
        Application.ScreenUpdating = False
    
        Dim arq(1 To 3) As String
        Dim WB1 As Workbook
        Dim WS1 As Worksheet
        Dim ULD As Long
        Dim i As Integer
        
        Set WB1 = ActiveWorkbook
        Set WS1 = WB1.Sheets("Dados")
        Set cn = New ADODB.Connection
        Set rs = New ADODB.Recordset
        
        WS1.Select
        Cells.Clear
        
        arq(1) = "\\caminho" & "\Arquivo01.xlsx"
        arq(2) = "\\Caminho" & "\Arquivo02.xlsx"
        arq(3) = "\\Caminho" & "\Arquivo03.xlsx"
        
        For i = Plan2.Range("Célula alvo").Value To (UBound(arq))
        
            With cn
                .Provider = "Microsoft.ACE.OLEDB.12.0"
                .ConnectionString = "Data Source=" & arq(i)
                .Properties("Extended Properties") = "Excel 8.0;HDR=YES"
                .Open
            End With
            
            sql = "Select * from [Planilha$]"
            
            rs.Open sql, cn, adOpenKeyset, adLockOptimistic
            
            WS1.Activate
            ULD = WS1.Cells(Rows.Count, 1).End(xlUp).Row
            WS1.Range("A" & ULD + 1).CopyFromRecordset rs
            
            For x = 1 To rs.Fields.Count
                WS1.Cells(1, x) = rs.Fields(x - 1).Name
            Next x
            
            cn.Close
        
        Next i
        
        Set cn = Nothing
        Set rs = Nothing
        
        Plan1.Activate
        
        MsgBox "Consolidação concluída ! "
        Plan2.Activate
        
        Application.ScreenUpdating = False
    
    End Sub

     

    Eu utilizo esta macro para juntar meus arquivos, que tem colunas iguais.

    Ativar a Referência "Microsoft Activex Data Objects 2.8 Library" ou superior para utilização da macro

     

    Adaptar conforme sua pasta de trabalho e planilhas.
    Felicidades.

  3. Adaptei uma função de verificação que encontrei em um site e funcionou bem.

    Criei um array para os 6 valores da planilha.

     

    Function verificar(vRegiao As Range) As Integer
    
    Dim vValores(6)
    Dim b As Variant
    Dim i As Integer
    Dim vContagem As Integer
    Dim w As Range
    
    vContagem = 0
    
    vValores(1) = Plan1.Range("C3").Value
    vValores(2) = Plan1.Range("D3").Value
    vValores(3) = Plan1.Range("E3").Value
    vValores(4) = Plan1.Range("F3").Value
    vValores(5) = Plan1.Range("G3").Value
    vValores(6) = Plan1.Range("H3").Value
    
    For Each w In vRegiao
    
        For i = 1 To UBound(vValores)
    
            If vValores(i) = w.Value Then
                vContagem = vContagem + 1
            End If
        
        Next i
    
    Next w
    
    verificar = vContagem
    
    End Function

    Site original para procura com String em Array :

    https://planilhando.com.br/forum/vba-macros/buscar-string-dentro-de-array/

     

    Anexei a tua planilha com esta função VBA

    Acho que atende.
    Dá um grito se não for isto.
    Feliciddes.

     

     

    clube hardware1.7z

  4. Boa tarde

    Função no Excel pronta para este propósito não encontrei, porém criei agora, uma função personalizada que talvez te atenda.

    Function junta(celula As Range) As String
    
        'Teste condicional: Se na célula F1 célula do critério estiver vazia
        If Plan1.Range("F1").Value = "" Then
            'Retorna para a função "Não encontrado"
            junta = "Não encontrado"
        'Caso contrário
        Else
    
            'Delcaração de veriáveis
            Dim uld As Long
            Dim a As Long
            Dim vCriterio As Integer
            Dim vTexto As String
            
            'Busca o valor do critério
            vCriterio = Plan1.Range("F1").Value
            'inicia a variável texto com vazio
            vTexto = ""
            
            'Verifica a última linha da coluna "A" da planilha 1 para looping for
            uld = Plan1.Cells(Rows.Count, 1).End(xlUp).Row
            
            'Inicia o looping for
            For a = 2 To uld
            
                'Se a célula da coluna A da linha "a" for igual ao critério
                If Plan1.Range("A" & a).Value = vCriterio Then
                
                    'Acrescenta a variável vTexto o conteúdo da celula atual do looping
                    vTexto = vTexto & " - " & Plan1.Range("B" & a).Value
                
                End If
            
            Next a
            
            'Retorna para a função o texto concatenado de todos os critérios
            junta = vTexto
        
        End If
    
    End Function

     

    Inseri no posto o arquivo que criei com a macro.
    Dá uma olhada na função.

    Tentei descrever cada linha do código para melhor entendimento.

    Se te servir altera de acordo com as tuas planilhas.

    Felicidades.

     

    Função Junta.7z

  5. Boa tarde

    Trabalho em meus projetos tanto com planilhas direto, bem como com userforms (Formulários).
    Em ambos é possível retornar valores desejados.

    No caso dos userforms pode-se com certeza armazenar resultados em planilhas, faço isto direto.
    Poderia ser mais específico na questão ?
    Acredito que o que desejas seja possível, mesmo não tendo entendido bem a questão.

    • Amei 1
  6. Bom dia.

    Não tenho por procedimento utilizar planilhas compartilhadas.

    Para estas necessidades em que temos vários usuários geralmente utilizo um arquivo por pessoa em ambiente de rede com consulta sql, para os que somente "consultam" e procedimento de gravação para os que modificam. Base de dados separada em arquivo no servidor.

    Fica como dica.

    Provavelmente no fórum, haverá quem tenha melhor conhecimento em compartilhadas.

    Se necessitar informações de como proceder sql para consultas. Contate.

    Felicidades.

  7. Boa noite Marina
    Não sei se já conseguiste resolver esta questão.
    Olhei tua planilha e não vi datas inseridas em nenhum local, então acredito que desejas inserir isto de forma automática.
    Pode-se fazer um monitoramente de células de uma planilha e através de uma "mudança" ou inserção de valores em um local, registrar em outra planiha, a data desta ocorrência, usuário logado e célula alvo.
    Tenho alguns projetos em que registro alterações de valores em células e usuários que as procedeu, para fins de registro.
    Não sei se é isto que desejas.
    Caso tenha resolvido, felicidades, caso ainda não podes descrever melhor o problema.

    Boa noite e felicidades.
     

  8. Boa noite

     

    Diretamente por funções de planilha não encontrei uma função que atendesse esta necessidade, porém via VBA, tem esta aqui que funciona.

     

    A única coisa que tens que cuidar é o indice de ColorIndex do VBA.

     

    Function verificaColorIndex(celula As Range)
    
        If celula.Font.ColorIndex = 3 Then
        
            verificaColorIndex = "Vermelho"
            
        ElseIf celula.Font.ColorIndex = 33 Then
        
            verificaColorIndex = "Azul-Claro"
            
        Else
        
            verificaColorIndex = "Indefinido"
            
        End If
    
    End Function



     

    Se necessitar auxilio para achar os códigos das cores contata.
    Felicidades.

  9. A algum tempo tive este mesmo problema, resolvi com a utilização de mais de uma célula na função SE.

    Arquivo anexo.

    Não achei isto vantajoso, depois de algum tempo, criei uma função em VBA que ficava menos poluída na planilha.

    Más de qualquer forma vai aí o método que encontrei e resolveu naquele momento.

    As últimas 03 colunas observe que são uma junção da função SE, neste modelo consigo colocar quantos níveis quiser, somente ir colocando cada 7 Se's em uma coluna e referenciar esta nova coluna (célula) ao final da coluna anterior.

    Boa sorte!

    15 Niveis Funcao SE.xls

  10. Perfeito.

    Set SH2 = Plan1 é mais lógico sendo na mesma pasta de trabalho.

     

    Porém como geralmente trabalho com duas pastas de trabalhos, a referência ao nome interno de uma planilha em outra pasta de trabalho seria possível ou utilizamos o modo "convencional'  set sh3 = worksheets("Cadastro").

     

    A questão tem seu valor pois utilizamos planilhas em rede e que facilmente usuários podem renomear planilhas sem a prévia comunicação, prejudicando assim as rotinas de VBA.

     

  11. Boa Tarde

     

    Como referenciar no vba as planilhas pela propriedade (Name) primeira da listagem e não pela propriedade Name.

     

    Exemplo, aqui refencio pelo nome que está na aba da planilha

    Dim WK2 As Workbook

    Dim SH2 As Worksheet

    Set WK2 = ActiveWorkbook
    Set SH2 = WK2.Worksheets("Clientes")

     

    Agora na expressão:

    Set SH2 = WK2.Worksheets("Plan1")  gostaria de referenciar a propriedade (Name) Plan1

    Tentei

    Set SH2 = WK2.Plan1 - Não aceita

    Set SH2 = WK2.(Plan1) - Não aceita

    Set SH2 = WK2.[Plan1] - Não aceita.

     

    Aceito sugestões.

    Grato.

     

     

     

  12. Boa Tarde

     

    Por um equívoco, consegui desconfigurar as janelas do VBA no Excel. Janela Explorer, Propriedades e Código.

    Eu fico movimentando sempre as janelas e quando clico para encaixar, só encaixa na horizontal. Fica muito ruim a visualização.

    Não consigo mais encaixar como default Explorer e Properties na esquerda uma em cima da outra e e a janela de códigos na direita ocupando a maioria do espaço.

    Alguma sugestão de comando para voltar ao default da IDE ?

    Grato.

     

  13. Boa Tarde

     

    Tenho um form em Excel2013 e coloquei um textbox para receber entrada de usuários.

    Textos muito extensos ele não aceite por limite de caracteres. Pesquisando pelo que pude descobrir o limite é 255 caracteres.

    Preciso incluir em muitos casos 1000 caracteres.

    Pesquisando novamente descobri o comando " Textbox35.MaxLength = 1000"

    Coloquei isto no userform initialize.

    Não funcionou, continua limitando.

    Alguma forma de poder incluir mais de 255 caracteres em um texto box ?

     

    ** Detalhe adicional **

    Utilizo um comando SQL para buscar este campo e inserir os dados em outra planilha.

    Todos os outros campos de texto funcionam normalmente na SQL.

     

  14. Bom dia

     

    Uma dúvida que não sei se é possível.

     

    Tenho um código SQL em Excel que lê dados de uma tabela e e coloca os dados em outra.

    Perfeito se não fosse o fato de colar todos os dados.

    O que quero fazer ?

    Na cláusula de pesquisa Where da SQL quero colocar um código de produto.

    Más não é só um código.

    O usuário em uma Sheet "Planilha" específica do Excel tipo "Plan3" vai ir digitando os códigos que quer filtrar no relatório.

    Vou colocar um cabeçalho na primeira coluna "A1" da Plan3 escrito " Código" e aí o usuário nas linhas A2, A3 e assim por diante vai colocando os códigos que ele quer filtrar.

    Gostaria de passar esta tabela/coluna "Plan3/A" como parâmetro para a cláusula Where da SQL. Seria tecnicamente um Where de uma Range.

    Assim o resultado seria a pesquisa Where de todos os códigos constantes na coluna A da Tabela Plan3.

    Tem como fazer isto ?

     

    Código que tenho e funciona perfeito para todos os dados.

    Sub SQLBusca()
    
        Application.ScreenUpdating = False
        
        On Error GoTo SQLSEMRETORNO
        
        Dim cn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim sql As String    
        Dim ws As Worksheet 
        
        Set ws = Worksheets("DESCARREGAR")
        
        ws.Activate
        Range("A:M").Select
        Selection.Clear
        
        Set cn = New ADODB.Connection
        
        With cn
            .Provider = "Microsoft.ACE.OLEDB.12.0"
            .ConnectionString = ThisWorkbook.FullName
            .Properties("Extended Properties") = "Excel 8.0;HDR=YES"
            .Open
        End With
        
        sql = "Select * from [P0100_UniaoGeral$] WHERE CODIGO ????"
    
        Set rs = New ADODB.Recordset
        rs.Open sql, cn, adOpenKeyset, adLockOptimistic, adCmdText
        
        Application.ScreenUpdating = True
        
        ws.Activate
        
        Application.ScreenUpdating = False
       
        Range("A2").CopyFromRecordset rs
        
        Cells.Select
        Selection.RowHeight = 15
        
        For x = 1 To rs.Fields.Count
    
            Cells(1, x) = rs.Fields(x - 1).Name
    
        Next x
        
        Application.ScreenUpdating = True
        
        rs.Close
        cn.Close
        Set rs = Nothing
        Set cn = Nothing
        Exit Sub
        
    SQLSEMRETORNO:
    
        MsgBox "A consulta não gera nenhum resultado"
        rs.Close
        cn.Close
        Set rs = Nothing
        Set cn = Nothing
        
        Application.ScreenUpdating = True
        
    End Sub

     

  15. Bom dia

     

    Tenho o seguinte erro quando rodo um script python 3.6.3.

    (unicode error)'unicodeescape' codec can't decode bytes in position 22-23 truncated\UXXXXX escape

     

    Código:

    import os
    
    arquivo = open("Arvore.txt","w")
    
    for folderName, subfolders, filenames in os.walk('\\\PstaPrincipalRede\PasteSecundariaRede\Pasta_Interna'):
        arquivo.write("%s\n" % folderName)
    
    arquivo.close()

    Acredito que o erro seja no underscore da pasta interna, pois verifique que não salva o arquivo txt exatamente em todas as pastas internas que tem o underscore.

    tem alguma maneira de no Python 3.6.3 resolver este problema do underscore ?

     

    • Obrigado 1
  16. Bom dia, adaptei o seguinte código que achei na web em um Listbox no Excel.

    Ele pesquisa correto na segunda coluna do listbox, porém somente busca os valores digitados que "começam" com o ditigado.

    Se a palavra estiver no meio da string na coluna, não busca.

    Ex: Se buscar  " João de Deus " e digitar " João " encontra, más se eu quiser buscar " de Deus " não localiza visto não começar com " de Deus".

    Tentei colocar "*" & TextBox1.Text & "*"

    Não funciona.

    Alguma ideia ?

     

    Private Sub TextBox11_Change()
        
        valor_pesquisado_i = TextBox11.Text
        Dim guia As Worksheet
        Dim linha As Integer
        Dim coluna As Integer
        Dim linhalistbox As Integer
        Dim valor_celula As String
            
        Set guia = ThisWorkbook.Worksheets("ListaFormPregao")
        
        codigo = txt_codigo
        linha = 2
        coluna = 2
        linhalistbox = 0
        
        frmListaPregoes.ListBox1.RowSource = ""
        
        With guia
            While .Cells(linha, coluna).Value <> Empty
                valor_celula = .Cells(linha, coluna).Value
                
                If UCase(Left(valor_celula, Len(valor_pesquisado_i))) = UCase(valor_pesquisado_i) Then
                    
                 With frmListaPregoes.ListBox1
                    .AddItem
                    .List(linhalistbox, 0) = Sheets("ListaFormPregao").Cells(linha, 1)
                    .List(linhalistbox, 1) = Sheets("ListaFormPregao").Cells(linha, 2)
                    linhalistbox = linhalistbox + 1
                 End With
                                 
                End If
                linha = linha + 1
            Wend
        End With
    
    End Sub

     

  17. Sim, Python no Windows 7.

     

    Não conhecia a extensão .pyw, o material que tenho "os livros" não falam sobre esta extensão, mesmo porque estes livros para iniciantes não trabalham com GUI, pelo menos não encontrei ainda um que explicasse isto.

     

    Abri o arquivo no editor (PyScripter) e salvei como Calculo.pyw como indicado. Funcionou, abriu direto o formulário e está calculando perfeito.

     

    Era isto mesmo que eu precisava.

     

    Grato.

     

    • Curtir 1

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!