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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2016, 17:21   #1
Flekker
Новичок
Джуниор
 
Регистрация: 12.07.2016
Сообщений: 5
По умолчанию Копирование данных из одной таблицы в множество других файлов

Добрый день! Такой вопрос: теоретически можно ли макросом вставлять диапазон заполненных ячеек из одного файла во множество других?
Т.е.у меня есть исходный файл, внизу которого заполнены ячейки с А23:А29 которые надо скопировать в n-е кол-во других однотипных файлов на те же места с 23-29. Заранее спасибо за помощь!!
Flekker вне форума Ответить с цитированием
Старый 12.07.2016, 17:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Такой вопрос: теоретически можно ли макросом вставлять диапазон заполненных ячеек из одного файла во множество других?
да, возможно.
Именно макросом можно открывать другие файлы (в цикле) и писать туда всё, что угодно.

начать можно с чтения этих тем на форуме:

http://programmersforum.ru/showthread.php?t=288911

http://programmersforum.ru/showthread.php?t=288306

http://programmersforum.ru/showthread.php?t=279490

p.s. Это не совсем то, что Вам надо. Но в этим темах затрагивается работа с файлами с помощью макросов...

Последний раз редактировалось Serge_Bliznykov; 12.07.2016 в 17:51.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2016, 17:50   #3
Flekker
Новичок
Джуниор
 
Регистрация: 12.07.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
да, возможно.
Именно макросом можно открывать другие файлы (в цикле) и писать туда всё, что угодно.
Спасибо! Не поможете с макросом? Или хотя бы что то примерное, что можно доработать, так как от программирования крайне далек
Flekker вне форума Ответить с цитированием
Старый 12.07.2016, 18:06   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

1. в исходном файле 1 лист?
2. всегда копировать А23:А29? если копировать другой диапазон, понимаете, что Вам необхоимо будет каждый раз исправлять текст макроса, макрос, который нужно поправить каждый раз перед выполнением - это не макрос, а недоразумение
3. однотипные это какие? что позволяет определить, что файл однотипный с исходным?
4. в тех, однотипных файлах только 1 лист? куда копировать данные?

сможете описать Вашу задачу может кто-то и сможет ее "решить", пока нет задачи - нечего "решать". хотя, судя по описанию, тут и решать-то нечего.

если Вы крайне лдалеки от программирования, то приблизительный пример ничем Вам не поможет. поможет только точное решение на основании точного описания.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 13.07.2016, 10:55   #5
Flekker
Новичок
Джуниор
 
Регистрация: 12.07.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
1. в исходном файле 1 лист?
2. всегда копировать А23:А29? если копировать другой диапазон, понимаете, что Вам необхоимо будет каждый раз исправлять текст макроса, макрос, который нужно поправить каждый раз перед выполнением - это не макрос, а недоразумение
3. однотипные это какие? что позволяет определить, что файл однотипный с исходным?
4. в тех, однотипных файлах только 1 лист? куда копировать данные?

сможете описать Вашу задачу может кто-то и сможет ее "решить", пока нет задачи - нечего "решать". хотя, судя по описанию, тут и решать-то нечего.

если Вы крайне лдалеки от программирования, то приблизительный пример ничем Вам не поможет. поможет только точное решение на основании точного описания.
Да, всегда один и тот же диапазон. Однотипные - файлы содержащие в себе один лист и таблицу, которая отличается только заполнением. Т.е. кол-во строк и столбцов в ней одинаково. Т.е. у меня есть 81 эксель файл, в каждом из которых есть таблица с заголовком, состоящая из 2 столбцов и 19 строк. Соответственно макрос должен копировать значения из некой исходной таблицы (диапазон А23:А29) и вставлять их в те же места во всех других таблицах
Flekker вне форума Ответить с цитированием
Старый 13.07.2016, 11:23   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Однотипные - файлы содержащие в себе один лист и таблицу, которая отличается только заполнением.
у... т.е. макрос должен открыть xls файл (без открытия не узнаешь, что там внутри, сколько листов, чем заполнено), потом проверить, сколько столбцов заполнено, сколько строк заполнено и только потом вставлять данные?

Цитата:
19 строк. Соответственно макрос должен копировать значения из некой исходной таблицы (диапазон А23:А29)
если в таблице заполнено 19 строк, то как можно вставить 23 - 29 строки в
Цитата:
вставлять их в те же места
?!

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


p.s. создавайте пример (данные можете записать левые - но структуру сохранить обязательно) для исходной таблицы и парочки "однотипных", которые надо заполнить. нарисуйте пример, куда должны быть вставлены данные, это всё запакуйте в архив, выложите на форум. Тогда у Вас будет шанс получить даром работающий макрос. Или обращайтесь во фриланс. Там уж точно реализуют ваши хотелки!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.07.2016, 11:31   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Я понял так - создаём объектную переменную из этого диапазона
Код:
set r=[А23:А29]
, затем в цикле открываем эти 81 файл и тупо без проверок
Код:
r.copy [a23]
и закрываем сохраняя изменения.
Делать на своих примерах желания и времени нет.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 13.07.2016 в 11:35.
Hugo121 вне форума Ответить с цитированием
Старый 13.07.2016, 12:29   #8
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

1. этот
Код:
Sub CopyA23A29ToAll()
  Dim rg As Range, p$, fm$
  Set rg = [a23:a29]
  p = ThisWorkbook.Path & Application.PathSeparator
  fm = Dir(p & "*.xls*")
  Do While fm <> ""
    If Right(fm, Len(ThisWorkbook.Name)) <> ThisWorkbook.Name Then
      With Workbooks.Open(p & fm)
        rg.Copy [a23]: .Save: .Close
      End With
    End If
    fm = Dir()
  Loop
End Sub
скопируйте в модуль файла, с которого необходимо копировать диапазоню назовем его исходный файл.
2. Исходный и ВСЕ файлы, в которые нужно скопировать данные переместите в отдельную папку
3. Откройте исходный файл, выполните код
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.07.2016, 13:31   #9
Flekker
Новичок
Джуниор
 
Регистрация: 12.07.2016
Сообщений: 5
По умолчанию

Огромное спасибо!!! Сработало!!!
Flekker вне форума Ответить с цитированием
Старый 14.07.2016, 14:07   #10
Flekker
Новичок
Джуниор
 
Регистрация: 12.07.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
1. этот
Код:
Sub CopyA23A29ToAll()
  Dim rg As Range, p$, fm$
  Set rg = [a23:a29]
  p = ThisWorkbook.Path & Application.PathSeparator
  fm = Dir(p & "*.xls*")
  Do While fm <> ""
    If Right(fm, Len(ThisWorkbook.Name)) <> ThisWorkbook.Name Then
      With Workbooks.Open(p & fm)
        rg.Copy [a23]: .Save: .Close
      End With
    End If
    fm = Dir()
  Loop
End Sub
скопируйте в модуль файла, с которого необходимо копировать диапазоню назовем его исходный файл.
2. Исходный и ВСЕ файлы, в которые нужно скопировать данные переместите в отдельную папку
3. Откройте исходный файл, выполните код

Подскажите, а если я хочу еще и выставить определенный шрифт и размер, каким образом это можно добавить в код? Нашел на соседних страницах следующий макрос:
For Each objCell In ActiveWorkbook.ActiveSheet.UsedRang e.Cells
With objCell.Font
.Name = "Arial"
.Size = 8
End With
В моем случае это будет times new roman, 10
Flekker вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование данных из одной таблицы в другую Streb БД в Delphi 17 12.03.2014 12:47
Копирование данных из одной таблицы в другую Streb БД в Delphi 12 24.02.2014 14:51
Копирование части данных из одной таблицы в другую ekspert126 Microsoft Office Excel 2 24.08.2013 08:39
Копирование данных из одной таблицы в другую Arega Microsoft Office Access 0 11.07.2012 17:01
Копирование данных из одной таблицы в другую! фЁдОр БД в Delphi 18 06.01.2008 19:27