Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos,
Estou com um problema que não encontro a solução em nenhum lugar do planeta. :upset:
Gostaria de criar uma conexão com o txt, mas sem salvar a definição da consulta, pois depois de vários loops o Excel acaba sobrecarregado de tantas conexões e fica lento.
Parte do código que estou utilizando:
Sub ImportaTxt()
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Relatorio.txt", _
Destination:=Range("$A$1"))
.Name = "Teste"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 932
.TextFileStartRow = 1
.TextFileParseType = xlFixedWidth
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileFixedColumnWidths = Array(24, 2, 4)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
End Sub
Queria saber qual a propriedade no VBA referente a opção no Excel 2007: DADOS > CONEXÕES > PROPRIEDADES. Ítem "Salvar definição de consulta"
Obrigado!
>
Olá Kadu,não tenho muito conhecimento em VBA excel.
Mas...
Para acessar dados de um arquivo texto em VB é assim:
http://www.macoratti.net/txt_arqs.htm
Você pode fazer uma aplicativo em vb que importe os dados do arquivo texto e depois exporte para o excel.
Não se isso que você precisa.
Aquiles, Obrigado pela resposta! Esse link me ajuda muito em outros projetos, mas para esse não tenho como usar uma aplicação VB, precisaria saber qual propriedade da QueryTable é relativo a imagem abaixo porque só tenho como usar o excel:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img109.imageshack.us/img109/6785/conexoexcel.jpg&key=8ae959db6e2599088680d87739c20b1920854978642481d1e3f921e772b5690f" alt="conexoexcel.jpg" />
Ja tentei também apagar a conexão depois de feita, mas dá erro quando faço outra conexão.
Abraço!
Amigos,
Alguém consegue decifrar esse enigma? :upset:
Abraço!
Você utilizou
conexao.dispose()
para apagar e na hora de criar de novo se lembrou de colocar
Connection nome as new connection(...)
Olá Khaos!
Não consegui inserir sua sugestão nessa macro. Poderia detalhar como posso fazer?
Obrigado!
>
Você utilizou
conexao.dispose()
para apagar e na hora de criar de novo se lembrou de colocar
Connection nome as new connection(...)
Tente desativar manualmente a definição de consulta.
Olá, Tive o mesmo problema e consegui mechendo até acertar.
Sub importar()
'Faz com que a tela não pisque acelerando a macro
'Obs.: no final do codigo deve colocar "Application.ScreenUpdating = True"
Application.ScreenUpdating = False
'Apaga a os dados antigos
Sheets("Plan1").Select
Range("A1:j1048576").Select
Selection.ClearContents
Range("A1").Select
'Importa arquivo
Sheets("Plan1").Select
Range("A1").Select
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\relatorio.txt", _
Destination:=Range("$A$1"))
.Name = "relatorio"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = False
.AdjustColumnWidth = False
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
'Apaga a conexão
Selection.QueryTable.Delete
'atualiza a tela
Application.ScreenUpdating = True
'Exibe a mensagem
MsgBox ("Atualizado com Sucesso!!!")
End With
End Sub
Planilha
http://www.4shared.com/rar/0T34oEIN/teste.html
Coloque o arquivo de texto na pasta c:\
Se vc conseguiu de outra forma posta aí.
Jonas,
Como eu tinha um for com mais de 1.000 arquivos, eu estava utilizando de outra forma, após concluir todas as conexões tinha um outro for que apagava as conexões com o:
ThisWorkbook.Connections(x).Delete
O problema é que em alguns casos depois de deletar, nunca mais conseguia conectar outro arquivo, dava erro.
Vou testar sua sugestão.
Obrigado!
Olá Kadu,
Estava buscando solucionar a mesma questão e achei em outro blog, não sei se já resolveu isso, mas para que fique aqui para próximas referências:
O código para deletar todas as propriedades de pesquisa de uma planilha (sheet) é:
Dim qt As QueryTable
For Each qt In ActiveSheet.QueryTables
If qt.Refreshing Then qt.CancelRefresh
qt.Delete
Next
ActiveSheet.UsedRange.Clear
Caso queira deletar somente uma específica pode usar a seguinte opção:
ActiveSheet.QueryTables("ftp_data_integration_gdrive_50").Delete
Espero ter ajudado!
Abs,
Olá Kadu,não tenho muito conhecimento em VBA excel.
Mas...
Para acessar dados de um arquivo texto em VB é assim:
http://www.macoratti.net/txt_arqs.htm
Você pode fazer uma aplicativo em vb que importe os dados do arquivo texto e depois exporte para o excel.
Não se isso que você precisa.