Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2011, 15:59   #1
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию Как загрузить несколько файлов TXT, введя настройки только 1 раз?

Есть не более 12 *.txt файлов (фин.отчетность за каждый месяц)
Каждый представляет из себя некую "шапку" и таблицу под ней с отчетностью.

Выбор файлов и загрузку первого файла я знаю как сделать.

А как сделать так, что бы при загрузке в ексель первого файла он спрашивал настройки загрузки (окошко, где выбираешь как разбивать по столбцам), а последующие файлы загружались автоматически по таким же настройкам?
(каждый файл на отдельной странице)

Эти настройки хранятся в строке:
.TextFileFixedColumnWidths = Array(1, 7, 1, 24, 1, 30, 1, 6, 1, 18, 1, 18, 1, 18, 1, 18, 1, _
18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1, 18, 1)

Вот как в первом файле их выбрать вручную и "распространить" на остальные файлы?


P.S.

предполагаю, что нужно задать переменную и настройки произвести так:
.TextFileFixedColumnWidths = MyFixed
Это уже сделал в приложенном файле.

Только как теперь остается вопрос, как вызвать окошко, в котором разбивается текст на столбцы и записать результата этого разбиения в переменную
MyFixed = Array(1, 7, 1, 24, 1 и т.д.)
Вложения
Тип файла: rar Загрузка txt файлов.rar (33.1 Кб, 12 просмотров)
Нет ничего невозможного, главное верить в это.
Snekich вне форума Ответить с цитированием
Старый 19.11.2011, 17:37   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Можно вызвать диалог импорта файла, а потом взять данные запроса:
Код:
Sub bb()
Dim MyFixed(), MyColumn()
'чтобы диалог не выдал ошибку, все запросы к данным на текущем листе надо удалить
For Each x In ActiveSheet.QueryTables
    x.Delete
Next
ChDir "c:\temp" 'папка, с которой начать выбор файла для импорта
If Application.Dialogs(xlDialogImportTextFile).Show Then
    With ActiveSheet.QueryTables(1)
        MyColumn = .TextFileColumnDataTypes
        MyFixed = .TextFileFixedColumnWidths
    End With
Else: MsgBox "Файл не импортирован!"
End If
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 19.11.2011, 19:23   #3
Snekich
Форумчанин
 
Аватар для Snekich
 
Регистрация: 19.11.2011
Сообщений: 128
По умолчанию

Цитата:
Сообщение от Казанский Посмотреть сообщение
Можно вызвать диалог импорта файла, а потом взять данные запроса:
Код:
Sub bb()
Dim MyFixed(), MyColumn()
'чтобы диалог не выдал ошибку, все запросы к данным на текущем листе надо удалить
For Each x In ActiveSheet.QueryTables
    x.Delete
Next
ChDir "c:\temp" 'папка, с которой начать выбор файла для импорта
If Application.Dialogs(xlDialogImportTextFile).Show Then
    With ActiveSheet.QueryTables(1)
        MyColumn = .TextFileColumnDataTypes
        MyFixed = .TextFileFixedColumnWidths
    End With
Else: MsgBox "Файл не импортирован!"
End If
End Sub

Спасибо! Немножко изменил для себя и все получилось.
Нет ничего невозможного, главное верить в это.
Snekich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проголосовать несколько раз? RECstart Свободное общение 13 18.05.2017 21:42
Одни из jpg файлов реальные JPEG а другие только название. как загрузиь только картинки? AgressiveBehavior Общие вопросы Delphi 1 16.09.2009 09:39
Как загрузить .txt? TwiX Общие вопросы Delphi 6 01.08.2009 01:47
Как загрузить текст.txt в label1 Sergeu Общие вопросы Delphi 8 16.01.2009 00:16
как загрузить в ListBox несколько текстовых файлов? One.Love Общие вопросы Delphi 5 14.01.2008 11:54