Автоматизировать мастер импорта текста в Excel?

20012
Dave Mackey

Иногда я получаю файлы в формате фиксированной ширины. Мне нужно импортировать их в Excel, но Excel не совсем подхватывает столбцы. Я могу делать это каждый раз вручную с помощью мастера импорта текста, но мне интересно, есть ли способ создать «шаблон импорта текста» или что-то подобное - поскольку эти файлы всегда имеют одинаковый формат.

3

3 ответа на вопрос

3
dkusleika

Если вы запишите макрос (Инструменты - Макрос - Запись нового макроса) во время открытия файла, вы получите параметры, необходимые для использования метода OpenText. Вот пример

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 

Аргумент FieldInfo - это тот, который вас волнует. Это массив 2d массивов. Первый элемент - это столбец, а второй - тип данных. В этом примере текстовый файл разбивается на следующие столбцы: 0, 8, 31, 41, 57, 77, 80, 82, 84 и 86.

С этим вы, вы можете написать макрос, чтобы открыть текстовый файл. См. Метод GetOpenFileName объекта Application, чтобы узнать, как выбрать файл для открытия.

1
Weaver

В Excel можно сохранить настройки импорта текста (в виде «шаблона») и позже использовать их с любым текстовым файлом. В блоге Excel MVP Ян Карел Питерс описывает это подробно: http://blogs.office.com/2010/06/10/importing-text-files-in-an-excel-sheet/

«Шаблон импорта текста» автоматически создается по завершении работы с мастером импорта текста. Убедитесь, что вы сохранили свою книгу, чтобы сохранить «шаблон».

Чтобы повторно использовать его с другим (или тем же) текстовым файлом:

  1. Щелкните по любой ячейке на вашем листе, которая содержит (использовалась для хранения) данные предыдущего импорта.
    • Excel 2007/2010: нажмите «Данные» -> «Обновить все» -> «Обновить»
    • Excel 2003 и старше: нажмите «Данные» -> «Обновить данные»

Если вы используете этот «шаблон» для постоянного импорта файла с одним и тем же именем и местоположением, вы можете настроить «шаблон» так, чтобы Excel не запрашивал имя файла каждый раз, когда вы нажимаете кнопку «Обновить».

Во время импорта текста нажмите «Свойства ...» в диалоговом окне «Импорт данных» и снимите флажок «Запросить имя файла при обновлении» в диалоговом окне «Свойства внешнего диапазона данных». Вы также можете отредактировать это позже в диалоге свойств соединения.

Я бы опубликовал скриншоты, но мне «нужно как минимум 10 репутаций, чтобы размещать изображения».

0
nik

Если вы хорошо разбираетесь вPerl программировании,
есть модуль Spreadsheet, который поддерживает WriteExcel .

Я использовал это ранее, чтобы сделать обратное тому, что вы хотите - конвертировать файл Excel в формат CSV,
я использовал ReadExcelдля этого.

Посмотрите на примеры в WriteExcelссылке здесь и другие ссылки на XLS-to-CSV по этому вопросу, вы можете найти что-то, что работает для вас между ними.