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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2014, 08:20   #1
McSim
Новичок
Джуниор
 
Регистрация: 25.02.2014
Сообщений: 2
По умолчанию Выборочный импорт exel в exel

Привет всем и прошу помощи.
Появилась у меня тут задачка на VBA, думал разберусь, а ннет, не все так просто(семантика сильно отличается от других языков).

Порыскал на форуме и нашел много подобных тем, но вних крайне мало полезного из того, что мне нужно.

Задачка:
Выборочно импортировать данные из одного xls файла в другой

Подробнее с примерами(абстрактно)
Есть файл blank.xls, в котором несколько листов. Все листы этого файла фиксированы по длине и ширине, т.е. известны столбцы, которые нужно импортировать. На первом листе мне нужно импортировать столбцы B, D, G, I, на втором C,D,F,J, на третьем листе свои ....
Импортировать нужно в существующий файл, который находится в той же директории tmp.xls, файл не перетирать. Перенести данные нужно на первый лист, таким образом, чтобы столбцы B, D, G, I из первого листа файла blank.xls находились в столбцах A,B,C,D, а столбцы из второго листа C,D,F,J находились в F,G,H,I и так далее.

Алгоритм более или менее понятен.
Мне бы понять как перенести с первого листа столбец в файл tmp (существующий!) и как работать с листами.
Существует ли тип array ? Столбцов и листов много, хотелось бы заранее набить массив идентификаторами столбцов, для того, чтобы пробежаться по ним в цикле.
McSim вне форума Ответить с цитированием
Старый 01.03.2014, 11:16   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Изучайте свойства и методы объектов Range, Worksheet, Workbook.
Записывайте ручные действия макрорекордером (кнопка "запись макроса"), потом смотрите, что получилось. Потом код можно оптимизировать, добавить циклы, условные операторы и т.д.
Вот, например, запись копирования столбцов B, D, G, I текущего листа и вставку их на лист другой книги:
Код:
    Range("B:B,D:D,G:G,I:I").Select
    Range("I1").Activate
    Selection.Copy
    Windows("Место (1).xls").Activate
    Sheets("Лист3").Select
    ActiveSheet.Paste
Это же можно сделать в одно действие:
Код:
    Range("B:B,D:D,G:G,I:I").Copy Workbooks("Место (1).xls").Sheets("Лист3").Range("A1")
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 01.03.2014, 12:58   #3
McSim
Новичок
Джуниор
 
Регистрация: 25.02.2014
Сообщений: 2
По умолчанию

Я даже и не знал, что так можно делать. Спасибо.
Сразу испытал, круто)

Заметил, что указывается имя файла, из которого переносятся данные
Код:
Windows("Место (1).xls").Activate
Но файл имеет специфичное имя, в которое входит дата.
Код:
 Windows("Файл_от_20140301.xls").Activate
Как бы мне сделать так, чтобы макрос сам знал файл (это не самый главный вопрос, думаю найду на него ответ).

Проблемка заключается в том, что я не хочу открывать второй файл (tmp.xls), а макрос ругается, что файл не активен. Как бы мне перенести данные в файл не открывая его ?!

Мне нужно записать в файл tmp.xls данные, после чего вызвать макрос tmp.xls из Файл_от_20140301.xls, который на выход даст мне файл txt.
McSim вне форума Ответить с цитированием
Старый 01.03.2014, 18:25   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

"Не открывая" теоретически можно через ADO, но фактически это АДО его и откроет, и закроет.
Так что проще и нагляднее всё сделать кодом - открыть файл, скопировать в него данные, сохранить/закрыть.
Код:
Set wb = Workbooks.Open(полный путь к файлу в кавычках)
'тут копирование в wb.sheets(индекс_листа числом или "название_листа" строкой)
wb.Close True
И никаких .Activate!
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 01.03.2014 в 19:09.
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт данных из интернета в exel EGORXX87 Microsoft Office Excel 2 15.12.2013 18:29
EXEL chernisghf Помощь студентам 0 12.12.2012 22:36
exel timka8812 Microsoft Office Excel 2 03.11.2011 00:32
автоматический импорт txt файлов в exel andreton Microsoft Office Excel 5 01.06.2010 01:29
EXEL Artomes Microsoft Office Excel 0 02.11.2008 23:18