Ir ao conteúdo
  • Cadastre-se

Kleber Bispo

Membro Pleno
  • Posts

    68
  • Cadastrado em

  • Última visita

posts postados por Kleber Bispo

  1. Okay, boa tarde!

     

    Instalei o Linux em dual boot com windows por suas vezes e distros diferentes (mint e Ubuntu), mas em ambas as tentativas, o Linux ficou extremamente lento e não reconhecia o wi-fi.

     

    Alguém já passou por esse problema. Eu fiz a instalação bdo Linux ao lado da instalação do windows.

     

     

    obrigado.

  2. 2 horas atrás, Midori disse:

    @Kleber Bispo Da forma que está fazendo dá muito trabalho colocar as colunas, se fossem 100 teria que escrever essa quantidade de linhas. Não percebo nenhum erro no código. Se possível anexe a planilha com dados fictícios onde o erro acontece.

     

    Uma forma de deixar o código mais simples é com outro loop para as colunas, p.ex,

     

    Assim é só passar a quantidade de colunas para o parâmetro QtdCol. Neste caso foram 45, mas pode passar a quantidade necessária sem ter que editar a Sub.

     

    Sub MacroGeraTXT()
        Call GeraTXT( _
            ThisWorkbook.ActiveSheet, _
            ThisWorkbook.Path & "\NomeDoArquivo2.txt", 45)
    
        MsgBox "Processo concluído!"
    End Sub
    
    Sub GeraTXT(Planilha As Worksheet, Arquivo As String, QtdCol As Integer)
        Dim Texto   As String
        Dim Linha   As Long
        Dim Coluna  As Integer
        
        Linha = 2
        Coluna = 1
        
        Open Arquivo For Output As #1
        
        Do Until Planilha.Cells(Linha, 1).Value = ""
            While Coluna <= QtdCol
                Texto = Texto & Planilha.Cells(Linha, Coluna).Value _
                    & IIf(Coluna < QtdCol, "|", "")
                Coluna = Coluna + 1
            Wend
            Print #1, Texto
            Texto = ""
            Coluna = 1
            Linha = Linha + 1
        Loop
        Close #1
    End Sub

     

    Sua macro é mais inteligente. Vou utilizar.

     

    Na verdade, essa tabela que estou transformando em txt está preenchida com fórmulas. Vi que o erro acontece quando existe #Ref ou #Valor em alguma célula.

     

    Vou ter que tratar isso.

     

    Obrigado.

    • Curtir 1
  3. Olá, boa noite!

     

    Tenho uma macro que exporta os dados de uma determinada planilha para um arquivo de texto. Funciona que é uma beleza!

     

    Mas ao utilizar está macro em uma planilha com muitas colunas ocorre erro. Notei que acima de 25 colunas gera um erro em tempo de execução 13: tipos incompatíveis.

     

    É possível contornar? Essa planilha tem mais de 40 colunas...

    Sub gerar_txt()
    
    Dim linha As Integer
    
        linha = 2
    
        Open Application.ThisWorkbook.Path & "\" & "NomeDoArquivo" & ".txt" For Output As 1
    
    
    
        Do Until plan1.Cells(linha, 1) = ""
    
            v1 = plan1.Cells(linha, 1).Value
    
            v2 = plan1.Cells(linha, 2).Value
    
            v3 = plan1.Cells(linha, 3).Value
    
            v4 = plan1.Cells(linha, 4).Value
    
            v5 = plan1.Cells(linha, 5).Value
    
            v6 = plan1.Cells(linha, 6).Value
    
            v7 = plan1.Cells(linha, 7).Value
    
            v8 = plan1.Cells(linha, 8).Value
    
            v9 = plan1.Cells(linha, 9).Value
    
            v10 = plan1.Cells(linha, 10).Value
    
            v11 = plan1.Cells(linha, 11).Value
    
            v12 = plan1.Cells(linha, 12).Value
    
            v13 = plan1.Cells(linha, 13).Value
    
            v14 = plan1.Cells(linha, 14).Value
    
            v15 = plan1.Cells(linha, 15).Value
    
            v16 = plan1.Cells(linha, 16).Value
    
            v17 = plan1.Cells(linha, 17).Value
    
            v18 = plan1.Cells(linha, 18).Value
    
            v19 = plan1.Cells(linha, 19).Value
    
            v20 = plan1.Cells(linha, 20).Value
    
            v21 = plan1.Cells(linha, 21).Value
    
            v22 = plan1.Cells(linha, 22).Value
    
            v23 = plan1.Cells(linha, 23).Value
    
            v24 = plan1.Cells(linha, 24).Value
    
            v25 = plan1.Cells(linha, 25).Value
    
            v26 = plan1.Cells(linha, 26).Value
    
            v27 = plan1.Cells(linha, 27).Value
    
            v28 = plan1.Cells(linha, 28).Value
    
            v29 = plan1.Cells(linha, 29).Value
    
            v30 = plan1.Cells(linha, 30).Value
    
            v31 = plan1.Cells(linha, 31).Value
    
            v32 = plan1.Cells(linha, 32).Value
    
            v33 = plan1.Cells(linha, 33).Value
    
            v34 = plan1.Cells(linha, 34).Value
    
            v35 = plan1.Cells(linha, 35).Value
    
            v36 = plan1.Cells(linha, 36).Value
    
            v37 = plan1.Cells(linha, 37).Value
    
            v38 = plan1.Cells(linha, 38).Value
    
            v39 = plan1.Cells(linha, 39).Value
    
            v40 = plan1.Cells(linha, 40).Value
    
            v41 = plan1.Cells(linha, 41).Value
    
            v42 = plan1.Cells(linha, 42).Value
    
            v43 = plan1.Cells(linha, 43).Value
    
            v44 = plan1.Cells(linha, 44).Value
    
            v45 = plan1.Cells(linha, 45).Value
    
    
    
            Print #1, v1 & "|" & v2 & "|" & v3 & "|" & v4 & "|" & v5 & "|" & v6 & "|" & v7 & "|" & v8 & "|" & v9 & "|" & v10 & "|" & v11 & "|" _
    
            & v12 & "|" & v13 & "|" & v14 & "|" & v15 & "|" & v16 & "|" & v17 & "|" & v18 & "|" & v19 & "|" & v20 & "|" & v21 _
    
            & v22 & "|" & v23 & "|" & v24 & "|" & v25 & "|" & v26 & "|" & v27 & "|" & v28 & "|" & v29 & "|" & v30 & "|" & v31 _
    
            & v32 & "|" & v33 & "|" & v34 & "|" & v35 & "|" & v36 & "|" & v37 & "|" & v38 & "|" & v39 & "|" & v40 & "|" & v41 _
    
            & v42 & "|" & v43 & "|" & v44 & "|" & v45
    
    
    
            linha = linha + 1
    
    
    
        Loop
    
       
    
        Close 1
    
       
    
        MsgBox "Processo concluído!"
    
      
    
    End Sub

     

     

  4. @lonan  A dica funciona sim, jovem. Seu código que não está certo.

    Você está fazendo a conexão e a consulta com o pyodbc.
    Depois você cria a variável dados que recebe o método read_sql do pandas e passa apenas o caminho do banco de dados e não passa a string de conexão.

     

    O erro que o python informou mostra isso: TypeError Traceback (most recent call last) Input In [878], in <cell line: 1>() ----> 1 dados = pd.read_sql(r'C:\Users\romilson\Desktop\SDC AcademY 2022\Dados\Estados.accdb') 2 print(dados.read()) TypeError: read_sql() missing 1 required positional argument: 'con'

     

    fiz dois testes e funcionaram. Atualiza a variável "caminho_do_arquivo" e o nome da tabela na consulta SQL:

     

     

    Consulta só com pyodbc:

    import pyodbc
    
    
    driver = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}"
    caminho_do_arquivo = "DBQ=.\\conexao_python_access.accdb"
    
    string_de_conexao = driver + ";" + caminho_do_arquivo
    consulta = ("SELECT * FROM Data")
    
    conexao = pyodbc.connect(string_de_conexao)
    cursor = conexao.cursor()
    cursor.execute(consulta)
    
    linhas = cursor.fetchall()
    
    for linha in linhas:
        print(linha)
    
    conexao.close()

     

     

    Consulta com pyodbc e pandas:

    import pyodbc
    import pandas as pd
    
    driver = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}"
    caminho_do_arquivo = "DBQ=.\\conexao_python_access.accdb"
    
    string_de_conexao = driver + ";" + caminho_do_arquivo
    consulta = ("SELECT * FROM Data")
    
    conexao = pyodbc.connect(string_de_conexao)
    df = pd.read_sql(consulta, conexao)
    print(df)
    
    conexao.close()

     

     

    Testa e depois chama se precisar de mais alguma ajuda!

     

     

  5. Olá, fiz duas subs no vba para retornar a última hora que um determinado workbook foi salvo.

    Na primeira retorno o dado do próprio worbook e dá ok.

    Já na segunda, passo o endereço de outra pasta de trabalho e semre ocorre o erro: "qualificador inválido" e destaca a minha variável arquivo.

    Poderia me ajudar a interpretar?

     

    Sub teste_1()
        Dim last_save As String
        last_save = ActiveWorkbook.BuiltinDocumentProperties(12)
        MsgBox last_save
    End Sub
    
    Sub teste_2()
        Dim arquivo As String
        Dim resultado As String   
        arquivo = "C:\Users\kbisp\OneDrive\controle de horas.xlsm"
        resultado = arquivo.BuiltinDocumentProperties(12)
    End Sub

     

     

    Grato

  6. @Junior Borges  vejo duas alternativas para sua necessidade:

     

    A mais fácil é usar o power automate como sugeri. Dá uma olhada no vídeo abaixo. 

     

    Agora se quiser usar python, tem que fazer um script para conectar na conta, procurar as mensagens, fazer o download dos anexos e depois salvá-los no diretório.

    Para "startar" a execução do processo você precisará utilizar o agendador de tarefas do windows, programando os horários que você quer que o sistema operacional rode seu código.

      

     

    • Curtir 1
  7. Em 16/10/2021 às 09:42, Denis Bopp disse:

    Qual a necessidade de preencher estes dados diariamente se eles não mudam? Basta apenas um registro! Sua aplicação deveria cuidar da lógica e não sua base de dados, se o seu aplicativo precisa de dados que mudam diariamente, justificaria um registro por dia, mas se os dados não se alteram por que gerar dados diários?

    @Denis Bopp  Pensando aqui, você tem total razão. Eu já estava partindo por uma lógica errada e criando dados desnecessários. Obrigado por me ajudar.

  8. Prezados(as), tendo uma tabela com alguns dados fixos como parametro, que são alterados eventualmente,

     

    ex.:

    Pagamento Pix      Pagamento Dinheiro      Pagamento Cartão Débito    Pagamento Cartão Crédito
    10 %                        7%                                      3%                                             0,25% 
     

     

     

    É possível criar uma base de dados em que ela se auto-preencha diariamente?

    ex.:

     

    Data                Pagamento Pix      Pagamento Dinheiro      Pagamento Cartão Débito    Pagamento Cartão Crédito

    10/10/2021     10 %                        7%                                      3%                                             0,25% 

    11/10/2021     10 %                        7%                                      3%                                             0,25% 

    12/10/2021     10 %                        7%                                      3%                                             0,25% 

    13/10/2021     10 %                        7%                                      3%                                             0,25% 

    14/10/2021     10 %                        7%                                      3%                                             0,25% 

    15/10/2021     10 %                        7%                                      3%                                             0,25% 

     

     

    Se sim, poderia me orientar com a lógica de construção?

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...