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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.04.2017, 08:25   #1
chib_sv
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 65
По умолчанию Копирование из нескольких книг в одну сводную

Добрый день! Помогите скопировать все файлы .xls и .xlsx из указанной папки (этих файлов каждый раз будет разное) в файл который открыт, обязательно чтобы копирование проиходило без открытия диалогового окна для выбора папок. Заранее благодарю всех откликнувшихся!

Последний раз редактировалось chib_sv; 20.04.2017 в 08:32.
chib_sv вне форума Ответить с цитированием
Старый 20.04.2017, 09:18   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от chib_sv Посмотреть сообщение
скопировать все файлы .xls и .xlsx из указанной папки (этих файлов каждый раз будет разное) в файл который открыт
начните отсюда - http://www.programmersforum.ru/showp...36&postcount=2
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.04.2017, 09:29   #3
chib_sv
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 65
По умолчанию

Я просматривал много вариантов решения такой задачи, но везде идет копирования с открытием диалогового окна, а мне нужно именно без выбора файлов. Просто все файлы .xls копируются и указанной папки и все листы вставляются открытый.
chib_sv вне форума Ответить с цитированием
Старый 20.04.2017, 09:34   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от chib_sv Посмотреть сообщение
Я просматривал много вариантов решения такой задачи, но везде идет копирования с открытием диалогового окна, а мне нужно именно без выбора файлов.
Конечно, вряд ли Вы найдёте 100% готовый и подходящий вашим хотелкам вариант.

значит, нужно взять подходящий код и доработать его - диалога выбора файлой/папки заменить на жёстко прописанный путь к вашей папке.

ну, или заинтересовать местных специалистов по VBA, чтобы они доработали макрос под ваши нужды.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.04.2017, 09:44   #5
chib_sv
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 65
По умолчанию

Меня устраивает такой вариант, но как от туда убрать диалоговое окно я не знаю
Код:
Sub CombineWorkbooks()
    Dim FilesToOpen
    Dim x As Integer
 
    Application.ScreenUpdating = False  'отключаем обновление экрана для скорости
     
    'вызываем диалог выбора файлов для импорта
    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="All files (*.*), *.*", _
      MultiSelect:=True, Title:="Files to Merge")
 
    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "Не выбрано ни одного файла!"
        Exit Sub
    End If
     
    'проходим по всем выбранным файлам
    x = 1
    While x <= UBound(FilesToOpen)
        Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
        Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        importWB.Close savechanges:=False
        x = x + 1
    Wend
 
    Application.ScreenUpdating = True
End Sub

_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 20.04.2017 в 10:28.
chib_sv вне форума Ответить с цитированием
Старый 20.04.2017, 10:29   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от chib_sv Посмотреть сообщение
как от туда убрать диалоговое окно я не знаю
какая у Вас версия MS Excel ?


вот ТУТ, например, есть код получения всех xls* файлов.

попробуйте у себя выполнить такой макрос (заменив путь "D:\datafolder\" на свой):
Код:
Sub ShowAllFilesInDirectory()
  Dim pt$, fn$
  pt = "D:\datafolder\"
  fn = Dir(pt & "*.xls*")
  Do While fn <> ""
      MsgBox "Found file: " & pt & fn
      fn = Dir
  Loop
End Sub
если отработает, то этот цикл и берите за основу.

Последний раз редактировалось Serge_Bliznykov; 20.04.2017 в 10:39.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.04.2017, 10:39   #7
chib_sv
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 65
По умолчанию

будет использоваться офиис 2007 и 2010
chib_sv вне форума Ответить с цитированием
Старый 20.04.2017, 10:41   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от chib_sv Посмотреть сообщение
будет использоваться офиис 2007 и 2010
я выше привёл код, проверьте его в обоих версиях офиса (в MS Excel 2010 я проверил, он работает...).
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.04.2017, 11:04   #9
chib_sv
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 65
По умолчанию

Serge_Bliznykov, спасибо за помощь, но вы не могли бы выложить полный код для сборки данных, не пойму куда ваш код нужно вставить чтобы работало.
chib_sv вне форума Ответить с цитированием
Старый 20.04.2017, 11:34   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от chib_sv Посмотреть сообщение
не пойму куда ваш код нужно вставить чтобы работало.
вы проверили работоспособность макроса ShowAllFilesInDirectory в ваших версиях Excel?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование данных из множества книг XL в одну Z0RGE Microsoft Office Excel 6 31.03.2015 15:55
Сбор информации из нескольких книг в одну Dunaevba Microsoft Office Excel 4 21.03.2013 10:57
сбор данных из нескольких книг Excel в одну! hna79 Microsoft Office Excel 2 28.10.2012 14:30
Копирование столбцов из книг в одну книгу с плавающим условием( Табита Microsoft Office Excel 1 14.10.2011 20:52
копирование ячеек из книг в одну(общую) DEsh Microsoft Office Excel 3 12.11.2010 12:38