Notifications
Clear all

Abrir diversos arquivos

2 Posts
2 Usuários
0 Reactions
1,340 Visualizações
(@danielsc)
Posts: 4
New Member
Topic starter
 

Pessoal:

Peco a ajuda de vocês para a solução da minha dúvida abaixo:

Tenho uma macro que abre vários arquivos que estão em uma determinada pasta com a extensão (.RET). Gostaria de aperfeiçoar a mesma abrindo alguns arquivos pré determinados por mim.
Exemplo: tenho na pasta os arquivos abaixo onde as variáveis são os 4 campos em amarelo e a data que esta como M (mês) DD (dia) :
10101MDD.RET
10102MDD.RET
10103MDD.RET
10104MDD.RET
10105MDD.RET

Hoje consigo abrir um arquivo de cada vez, gostaria de uma ajuda em abrir por exemplo somente os arquivos 10103MDD.RET e 10104MDD.RET.

Segue o código que uso hoje:

Sub S()

NDATA = InputBox("DIGITAR Data ")

With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:Proces10101" & NDATA & ".ret", Destination:=Range("$A$2"))
        .Name = "0101202.ret"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlFixedWidth
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 9, 1, 9, 1, 9, 1, 9, 9, 1, 1, 1, 1, 1, 1, 9, 1, 9)
        .TextFileFixedColumnWidths = Array(3, 3, 4, 1, 12, 1, 6, 3, 17, 2, 3, 3, 4, 4, 12, 3, 8, 58, _
        3)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False

End With
End Sub
 
Postado : 10/02/2015 3:44 pm
(@mussato)
Posts: 11
Active Member
 

Bom dia Daniel,

Pelo que entendi hoje vc executa essa macro para cada arquivo certo? E gostaria de automatizar esse processo podendo escolher mais de um arquivo por vês. Nesse caso você teria que digitar o valor da variável NDATA para cada arquivo, ou como imagino que seja melhor abrir uma caixa de diálogo e navegar até os arquivos selecionando um ou mais, assim você teria o caminho do(s) arquivo(s).

Segue abaixo um exemplo(não testado!), talvez vc precise adaptar o seu código para que essa mudança funcione.


Sub S()

dim arr_arquivos as variant ' este array irá armazenar os caminhos dos arquivos selecionados

' NDATA = InputBox("DIGITAR Data ") esse trecho agora é desnecessário

armazena o caminho dos arquivos selecionados
arr_caminhos = Application.GetOpenFilename(filefilter:="Arquivos ROT (*.rot*), *.rot*", _
                    MultiSelect:=True, Title:="Selecione os arquivos rot")

'inicia o looping para cada arquivo selecionado
For arr_caminhos = LBound(arr_caminhos) To UBound(arr_caminhos)

'daqui pra frente você vai ter que adaptar seu código usando a variável arr_caminhos no lugar do caminho do arquivo. Se tudo der certo você vai conseguir automatizar 'seu processo
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:Proces10101" & NDATA & ".ret", Destination:=Range("$A$2"))
.Name = "0101202.ret"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 9, 1, 9, 1, 9, 1, 9, 9, 1, 1, 1, 1, 1, 1, 9, 1, 9)
.TextFileFixedColumnWidths = Array(3, 3, 4, 1, 12, 1, 6, 3, 17, 2, 3, 3, 4, 4, 12, 3, 8, 58, _
3)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False

End With

Next

End Sub

V. Mussato
Office Developer
-------------------
Windows 7 64 bits
Office 2013

 
Postado : 11/02/2015 6:43 am