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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2014, 18:49   #1
DimST
 
Регистрация: 02.12.2014
Сообщений: 9
По умолчанию Прошу помощи с импортом данных

Здравствуйте.

Прошу помочь, так как мозг не очень понимает Excel (

1. Есть первый файл, в котором лишь 3 столбца данных, Ячейки А1, В1 и С1 - заголовок (Наименование, Количество, Цена). Данные начинаются с ячеек А2, В2 и С2. Строк в каждом столбце не более 10 000. (во вложении - File1).

2. Есть основной файл (во вложении - File2), куда требуется осуществлять импорт данных из первого файла, с диапазона А2:C10000 (это если учитывать, что максимум данных есть) в аналогичный в основном файле. Беда в том, что строк может быть и 820 и 9900 и 10000.

Как макросом можно импортировать регулярно данные из первого файла в основной?

Заранее огромное спасибо!
Вложения
Тип файла: rar Files.rar (13.9 Кб, 13 просмотров)
DimST вне форума Ответить с цитированием
Старый 04.12.2014, 19:21   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а "регулярно импортировать" - это как?
по времени, по пинку оператора?

каждая очередная порция импортируемых данных должна:
- дописаться в конец данных
- должна обновить данные
- предварительно удалить старые данные
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.12.2014, 19:25   #3
DimST
 
Регистрация: 02.12.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
а "регулярно импортировать" - это как?
по времени, по пинку оператора?

каждая очередная порция импортируемых данных должна:
- дописаться в конец данных
- должна обновить данные
- предварительно удалить старые данные
Простите, сразу не указал.

Да, по пинку оператора.

Я сделаю макрос, зачищающий диапазон А2:С10000 (чтоб наверняка)

Соответственно, перед запуском процедуры импорта все будет писаться по-новому...
DimST вне форума Ответить с цитированием
Старый 04.12.2014, 19:46   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

предполагается, что файл1 открыт в экселе

при активном листе, в который собираетесь импортировать данные, выполните этот макрос:
Код:
Sub Import1()
  Cells(2, 1).Resize(ActiveSheet.UsedRange.Rows.Count, 3).ClearContents
  With Workbooks("file1.xlsx").Worksheets(1)
    .Cells(2, 1).Resize(.UsedRange.Rows.Count, 3).Copy Cells(2, 1)
  End With
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 04.12.2014, 21:06   #5
DimST
 
Регистрация: 02.12.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
предполагается, что файл1 открыт в экселе
Спасибо огромное!

А с закрытым возможно операцию подобную сделать?

Что-то вроде
Код:
Workbooks.Open Filename:="file.xlsx"
Workbooks("file.xlsx").Close
не поможет в таком случае?

Последний раз редактировалось DimST; 04.12.2014 в 21:35.
DimST вне форума Ответить с цитированием
Старый 04.12.2014, 22:23   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

поможет, только здесь укажите имя файла с полным путем к нему:

Filename:="диск:\папка\...file.xlsx "
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 05.12.2014, 12:36   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Не проще ли сделать копию файла под новым именем? Или ещё проще - переименовать.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 05.12.2014, 14:21   #8
DimST
 
Регистрация: 02.12.2014
Сообщений: 9
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
поможет, только здесь укажите имя файла с полным путем к нему:

Filename:="диск:\папка\...file.xlsx "
Огромное спасибо Вам за помощь!
DimST вне форума Ответить с цитированием
Старый 06.12.2014, 17:10   #9
DimST
 
Регистрация: 02.12.2014
Сообщений: 9
По умолчанию

Как обычно в таких случаях происходит, доп вопрос разве что возник

Не подскажете, каким образом такое же копирование осуществляется между листами? То есть, имеется лист с данными в 3 столбца, эти 3 столбца просто скопировать в другой лист в таком же виде, как и импортировались они?

Опять же, по пинку оператора

Я понимаю, что можно выделить и скопировать, однако если уж началась автоматизация, кнопкой было бы просто эстетичнее ))

Последний раз редактировалось DimST; 06.12.2014 в 17:14.
DimST вне форума Ответить с цитированием
Старый 06.12.2014, 17:20   #10
DimST
 
Регистрация: 02.12.2014
Сообщений: 9
По умолчанию

В принципе, разобрался.

Sheets("Лист1").Range("A2:С10000"). Copy Sheets("Лист2").Range("A2")

Больше, чем 10000 все равно не будет!

Спасибо ещё раз за помощь всем откликнувшимся )
DimST вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прошу помощи! alexxxx Фриланс 1 07.06.2008 17:05