Ir ao conteúdo

Posts recomendados

Postado

Fiz esse macro aqui, porém queria trocar que invés de selecionar sempre o arquivo pelo nome dele selecionar apenas pelo 2021
alguém conseguiria me explicar como fazer?
 

Sub Teste()
'
' Teste Macro
' Teste
'
' Atalho do teclado: Ctrl+Shift+S
'
    Range("A1").Select
    ActiveWorkbook.Queries.Add Name:="2021-01-19-08-37-02", Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Fonte = Table.FromColumns({Lines.FromBinary(File.Contents(""C:\Users\ryu.higashi\Desktop\CANTracer\2021-01-19-08-37-02.txt""), null, null, 1252)})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Fonte"
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=2021-01-19-08-37-02;Extended Properties=""""" _
        , Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array("SELECT * FROM [2021-01-19-08-37-02]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "_2021_01_19_08_37_02"
        .Refresh BackgroundQuery:=False
    End With
End Sub

Ja tentei fazer o uso do Dim, mas não sei explicitamente como fazer!

Postado

Seu código precisa do nome completo já que tem procedimentos que usam ele para carregar o arquivo. Para entrar apenas com o ano esse teria que ser o nome do arquivo, ou então teria que criar uma forma de buscar o arquivo com o critério só do ano.

Postado

@Midori Então o Arquivo sempre começa com o Ano que seria 2021, e no proximo ano mudaria para 2022, mas não estou conseguindo fazer a implementação desse Começo de nome, assim como em Python, em que eu poderia buscar um arquivo com os 4 primeiros caracteres, por exemplo:

 

Arquivo "2021-01-19-08-37-02"
Outros como "2021-05-19-13-37-02"
Gostaria de buscar apenas "2021-01-19-08-37-02"

Postado

@Ryu Higashi Você pode fazer um loop no diretório para para listar os arquivos e testar os primeiros 4 caracteres com o ano. Para listar esses arquivos tem a função Dir e para testar você pode usar Left para pegar uma parte o nome, supondo p.ex que os arquivos estejam em C:\Arquivos pode ser feito assim,

 

Sub Macro()
    Dim Arquivo As String
    Dim Ano     As String
    
    Ano = "2021"
    Arquivo = Dir("C:\Arquivos\")
    
    Do While Arquivo <> ""
        If Left(Arquivo, 4) = Ano Then Exit Do
        Arquivo = Dir
    Loop
    MsgBox Arquivo
End Sub

 

Dessa forma a variável Arquivo vai receber o nome do primeiro arquivo encontrado que começa com 2021.

 

Só tem um detalhe, de acordo com a documentação do VBA essa listagem não garante que os arquivos venham numa ordem especifica. Então o ideal seria jogar todos os arquivos de 2001 na planilha, ordenar e pegar o primeiro ou algo assim.

Postado

@Midori Então sempre há apenas 1 arquivo, sempre com o começo de 2021, ele começa desse jeito depois vem mes, hora dia segundo entre outros, mas sempre substituimos o antigo pelo novo, não sou muito avançado em VBA, conseguiria implementar esse codigo Dir dentro do meu?

Postado
9 horas atrás, Ryu Higashi disse:

conseguiria implementar esse codigo Dir dentro do meu?

 

Basicamente só tem que substituir as strings do nome e diretório do arquivo pelas variáveis,

Sub Teste()
    Dim Arquivo     As String
    Dim Diretorio   As String
    Dim Ano         As String
    Dim Nome        As String
    
    Ano = "2021"
    Diretorio = "C:\Arquivos\"
    Arquivo = Dir(Diretorio)
    
    Do While Arquivo <> ""
        If Left(Arquivo, 4) = Ano Then Exit Do
        Arquivo = Dir
    Loop
    
    If Arquivo <> "" Then
        Nome = Mid(Arquivo, 1, Len(Arquivo) - 4)
    
        Range("A1").Select
        ActiveWorkbook.Queries.Add Name:=Nome, Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Fonte = Table." & _
        "FromColumns({Lines.FromBinary(File.Contents(""" & _
        Diretorio & Arquivo & """), null, null, 1252)})" & Chr(13) & _
        "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    Fonte"
    
        With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
            "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & _
            Nome & ";Extended Properties=""""", Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdSql
            .CommandText = Array("SELECT * FROM [" & Nome & "]")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .Refresh BackgroundQuery:=False
        End With
    End If
End Sub

 

7 horas atrás, Ryu Higashi disse:

E outra coisa, saberia me informar onde estudar VBA para se aperfeiçoar?

Achei muito bom o livro Desenvolvendo Macros no Excel do Steven Roman, publicado pela O'Reilly. É um livro antigo mas acho que ainda ajuda a conhecer mais o ambiente do VBA. Além disso tem o help do VBA que direciona para a documentação com F1 sobre algum comando no editor.

  • Curtir 1
  • 2 semanas depois...
Postado

@Ryu Higashi Não funciona em que sentido? Dá algum erro no código? A macro importa algum arquivo? Dê mais detalhes. E se possível anexe um modelo da planilha e do arquivo texto, pode ser com dados fictícios.

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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!