Inquiridor
Importação de arquivo .txt automaticamente.

Pergunta
-
Como buscar um arquivo .txt para importação no Excel automaticamente, dentro de uma pasta no C:, sem precisar abrir o código VBA para alterar o endereço do arquivo?
Observação: O nome da pasta e do arquivo .txt mudam mensalmente.
Segue o código:
Sub Importar_Relatório()
'
' Importar_Relatório Macro
'
' Atalho do teclado: Ctrl+Shift+R
'
Range("A2").Select
Rows("2:2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.ClearContents
Range("A3").Select
Range("A2").Select
Application.CutCopyMode = False
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Conciliação da Retenções Federais\10-2019\Relatório - 10-2019.txt" _
, Destination:=Range("$A$2"))
.Name = "Relatório.txt"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileOtherDelimiter = ";"
.TextFileColumnDataTypes = Array(1, 2, 2, 4, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Rows("2:2").Select
Selection.RowHeight = 35
Columns("A:A").ColumnWidth = 14
Range("A3").Select
End Sub
Todas as Respostas
-
Luciano Polchera,
Você pode colocar esse caminho do arquivo e nome do arquivo em uma célula do Excel e alterar o valor apartir da célula. Quando o programa quiser saber o caminho e nome do arquivo, irá ler essa célula.
Como o nome do arquivo muda, fica impossível para o programa procurar o arquivo no HD automaticamente.
[]'s,
Fabio I. -
-
Luciano Polchera,
Tem vários jeitos... estou trabalhando com isso agora:
Private Sub CommandButton1_Click() Set r = Range("C1:D5") For n = 1 To r.Rows.Count If r.Cells(n, 1).Value < 0 Then Cells(1, 5).Value = r.Cells(n, 2).Value Exit For End If Next End Sub
Mas, por favor veja os tutorias abaixo:
==========================================
Pegar valores no vba dentro do excel
Primeiros Passos
var1 = range("B1").value'............... (armazena o valor da primeira célula, A1) var2 = range("B2").value'...............(armazena o valor da segunda célula, A2) varSoma = var1 + var2'............... (codigo que armazena a soma dos valores das celulas) Cells(4, 2).Value = varSoma'....... (codigo que informa o valor da soma na celula "B4")
http://excelevba.com.br/pegar-valores/
==========================================
VBA & Excel: ler em uma planilha fechada
https://br.ccm.net/faq/10142-vba-excel-ler-em-uma-planilha-fechada
==========================================
Como selecionar células/intervalos usando os procedimentos do Visual Basic no Excel
https://docs.microsoft.com/pt-br/office/troubleshoot/office-developer/select-cells-rangs-with-visual-basic
==========================================
E se gostou, não se esqueça de me pontuar.
[]'s,
Fabio I. -
Boa tarde.
Além da solução proposta pelo Fábio, você pode importar arquivos TXT utilizando o PowerQuery no Excel em Dados/New Query/From File/From Folder
Ao sinalizar a pasta, e seguir os passos posteriores, todo arquivo que você incluir nela, será carregado no seu excel ao atualizar os dados.
Att.