
Crafteribanez
-
Posts
76 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
posts postados por Crafteribanez
-
-
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.
-
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. -
=aleatórioentre(1;9999)
-
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. -
Pelo que vi na tua planilha, o retorno que desejas é na range J6:J9. ? Confere ?
Se for quer por fórmulas do Excel ou uma função do VBA ?
Acho que por fórmulas vai ser bem mais "comprido" o texto a ser digitado.
-
1
-
-
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.
-
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.-
1
-
-
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.
-
Boa noite
Uma das possibilidades de se fazer isto via código seria:
Private Sub Worksheet_Activate() If Environ("username") = "usuario que se quer restringir" Then Planilha1.Visible = False End If End Sub
Eu particularmente, utilizaria um UserForm com envio de informações direto para a Pasta de Trabalho e planilha desejada.
-
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.
-
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. -
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!
-
-
-
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.
-
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.
-
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.
-
Acredito que o erro seja porque o SQL considera o máximo comprimento possível de colunas no Excel 250.
Sendo assim tive de reduzir a quantidade de caracteres as informações.
Assim o form funciona perfeitamente.
-
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.
-
Resolvido.
Utilizei um laço for each na tabela e coloquei todos os valores em uma variável, a qual busquei na SQL.
-
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
-
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 ?
-
1
-
-
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
-
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.
-
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
Python - Procurar a mesma palavra várias vezes em string e retornar o índice
em Programação - outros
Postado
Resolvido a pesquisa com o seguinte comando Python