Automatizar o Assistente de Importação de Texto do Excel?

3

Eu recebo arquivos ocasionalmente em um formato de largura fixa. Eu preciso importá-los para o Excel, mas o Excel não pega perfeitamente as colunas. Eu posso fazer isso manualmente cada vez com o Assistente de importação de texto, mas eu estou querendo saber se existe uma maneira de criar um "modelo de importação de texto" ou algo similar - já que esses arquivos são sempre o mesmo formato.

    
por Dave Mackey 16.06.2010 / 15:46

3 respostas

3

Se você gravar uma macro (Ferramentas - Macro - Gravar nova macro) enquanto abre o arquivo, você obterá os parâmetros necessários para usar o método OpenText. Aqui está um exemplo

Workbooks.OpenText Filename:= _
    "C:\Documents and Settings\dick\My Documents\actsynclog.txt", Origin:=437, _
    StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(8, _
    1), Array(31, 1), Array(41, 1), Array(57, 1), Array(77, 1), Array(80, 1), Array(82, 1), _
    Array(84, 1), Array(86, 1)), TrailingMinusNumbers:=True

O argumento FieldInfo é aquele com o qual você se importa. É uma matriz de matrizes 2D. O primeiro elemento é a coluna e o segundo é o tipo de dados. Este exemplo divide o arquivo de texto nas seguintes colunas: 0, 8, 31, 41, 57, 77, 80, 82, 84 e 86.

Com isso, você pode escrever uma macro para abrir o arquivo de texto. Veja o método GetOpenFileName do objeto Application para saber como selecionar qual arquivo abrir.

    
por 16.06.2010 / 16:50
1

No Excel, é possível salvar configurações de importação de texto (como um "modelo") e reutilizá-las com qualquer arquivo de texto posteriormente. Uma postagem no blog do Excel MVP Jan Karel Pieterse descreve isso em detalhes: link

O "modelo de importação de texto" é criado automaticamente quando você termina o Assistente de importação de texto. Certifique-se de salvar sua pasta de trabalho para manter o "modelo".

Para reutilizá-lo com outro (ou o mesmo) arquivo de texto:

  1. Clique em qualquer célula da sua planilha que mantenha (usada para reter) dados de uma importação anterior.
    • Excel 2007/2010: clique em Dados - > Atualizar tudo suspenso - > Atualizar
    • Excel 2003 e anteriores: clique em Dados - > Atualizar dados

Se você usar esse "modelo" para sempre importar um arquivo com o mesmo nome e local, poderá personalizar o "modelo" para que o Excel não solicite um nome de arquivo sempre que você pressionar o botão Atualizar.

Durante a importação de texto, clique em Propriedades ... na caixa de diálogo Importar dados e desmarque Solicitar nome do arquivo ao atualizar na caixa de diálogo Propriedades do intervalo de dados externos. Você também pode editá-lo posteriormente na caixa de diálogo Connection Properties.

Eu colocaria capturas de tela, mas "preciso de pelo menos 10 de reputação para postar imagens".

    
por 30.04.2014 / 11:48
0

Se você está bem com alguns Perl de programação,
existe um módulo Spreadsheet que suporta WriteExcel .

Eu usei isso antes para fazer o inverso do que você quer - converte um arquivo do Excel para o formato CSV ,
Eu usei ReadExcel para isso.

Veja os exemplos no link WriteExcel aqui e outras referências para o XLS-to-CSV nessa questão, você pode encontrar algo que funcione para você entre os dois.

    
por 16.06.2010 / 15:52