Notifications
Clear all

importar txt

7 Posts
1 Usuários
0 Reactions
4,359 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Eu de novo.

Na planilha que estou tentando montar faço a importação de um txt usando este código

Sub Importartxt()
If Range("AL97") = 1 Then
ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:UsersClaudineiBackUpFormulários CemigFaixaImportar.txt", Destination:=Range("BF97")).Refresh BackgroundQuery:=False

etc..

Como faço para não deixar o endereço salvo dentro do código; e sim abrir uma "caixa" tipo aquela de abrir arquivos ,onde vou navegando até achar o arquivo a ser importado.

Se não complicar muito; de maneira que ele guarde o ultimo endereço visitado ; para que na proxima importação ele já abra a "caixa" no ultimo endereço aberto?

 
Postado : 01/02/2012 10:27 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!

Ai um exemplo..
Fonte:

Sub Abrir_Caixa()
ChDrive "C:"
ChDir "C:Arquivos de programas"
FileToOpen = Application.GetOpenFilename _
(Title:="Por favor escolha o arquivo pra importar", _
FileFilter:="Excel Files *.xls (*.xls),") ' para arquivos de excel 
''
If FileToOpen = False Then
MsgBox "Não espcificado.", vbExclamation, "Atenção!!!"
Exit Sub
Else
Workbooks.Open Filename:=FileToOpen
End If
End Sub
 
Postado : 02/02/2012 4:27 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!!

Pesquisando encontrei isso veja é bem preciso com o que quer.

Se for necessário faça uma adaptação.

Fonte:. http://en.allexperts.com/q/Excel-1059/2 ... -Macro.htm

Sub Macro1()
  Dim sPath As String
  Dim fName As String
  Dim s As String
  s = CurDir
  'mudar para onde deseja que o diálogo seja apontado
  'para quando ele é exibido
  sPath = "C:Seu dirtorioSeus arquivos"
  ChDrive sPath
  ChDir sPath
  fName = Application.GetOpenFilename( _
   Filefilter:="CSV Files (*.CSV),*.CSV")
  ChDrive s
  ChDir s
  If LCase(fName) = "false" Then Exit Sub
  With ActiveSheet.QueryTables.Add _
     (Connection:="TEXT;" & fName, _
      Destination:=Range("A1"))
      .Name = Replace(LCase(fName), ".xls", "")
      .TextFileSemicolonDelimiter = True
      .TextFileCommaDelimiter = False
      .TextFileSpaceDelimiter = False
      .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
      .TextFileTrailingMinusNumbers = True
      .Refresh BackgroundQuery:=False
  End With
End Sub
 
Postado : 02/02/2012 4:54 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia Alexandre,

É mais ou menos isto ,

O arquivo que preciso abrir é" Documento de Texto (.txt)" e lá na descrição do "Abre Com:" do arquivo está Bloco de notas o que devo colocar no FileFilter

anexo.

 
Postado : 02/02/2012 4:58 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!!

Faça assim e vej se vi dar certo.

De..

 Filefilter:="CSV Files (*.CSV),*.CSV")

Para..

Filefilter:="Arquivos Texto(*.txt), *.txt")
 
Postado : 02/02/2012 5:04 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Bom dia!!!

Teste isso também
Autor: JValq
Veja se consegue adaptar este código à sua necessidade

Sub ImportarTXT()
    Dim Campos As Variant
    Dim Arquivo As String
    Dim i As Long, j As Long
    
    'Contador de linhas
    i = 2
    'abre um "mini" explorer de arquivos
    Arquivo = Application.GetOpenFilename("Arquivos Texto(*.txt), *.txt")
    'abre o arquivo texto
    Open Arquivo For Input As #1
    'Enquanto não chega ao fim do arquivo
    While Not (EOF(1))
        'Captura 1 linha e armazena na variável Linha
        Line Input #1, linha
        'separa os campos e armazena na variável "Campos"
        Campos = Split(linha, ";")
        'Distribui os campos na planilha
        For j = 0 To UBound(Campos)
            Cells(i, j + 1).Value = Campos(j)
        Next
        'incrementa uma linha
        i = i + 1
    Wend
    'fecha o arquivo texto
    Close #1
    MsgBox "Fim de execução da macro"
End Sub
 
Postado : 02/02/2012 5:12 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

MATOU A PAU , Arrebentou , destruiu ;

Fiz isso , daquele jeito cola todos os campos em uma só célula , assim cola cada "coluna txt" na "coluna xls"
Nota 1000 Alexandre
Dim Campos As Variant
Dim Arquivo As String
Dim i As Long, j As Long
Arquivo = Application.GetOpenFilename("Arquivos Texto(*.txt), *.txt")
Open Arquivo For Input As #1
ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & Arquivo, Destination:=Range("BF97")).Refresh BackgroundQuery:=False
Close #1
MsgBox "Fim de execução da macro"
End SubSe a mensagem foi util Favor Clicar na

 
Postado : 02/02/2012 8:05 am