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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.08.2009, 14:25   #1
Stoodentka
 
Регистрация: 06.06.2009
Сообщений: 7
По умолчанию Каким методом выбрать несколько файлов?

Уважаемые формучане!
Подскажите, пожалуйста, какой метод применить для выбора сразу нескольких файлов, из которых нужно скопировать данные. Во вложении пример, который открывает только выбранный файл и копирует из него данные в сводный файл. Затем нужно выбрать следующий и все повторить. А если таких файлов много, можно ли как-нибудь выбрать все одним методом?
Заранее спасибо тем, кто откликнулся
Вложения
Тип файла: rar сбор данных.rar (20.4 Кб, 22 просмотров)
Stoodentka вне форума Ответить с цитированием
Старый 30.08.2009, 14:36   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Теперь в диалоговом окне выбора файла Вы можете выделить сразу несколько файлов (удерживая клавишу Ctrl), и все выбранные файлы будут обработаны:
Код:
Option Explicit

Sub ВсеМагазины()
    On Error GoTo MyErrors
    Dim rgData As Range, rgAll As Range, rgPaste As Range
    Dim Sh As Worksheet, wbShop As Workbook, strFile As Variant
    Application.ScreenUpdating = False

    Application.FileDialog(msoFileDialogOpen).Show
    For Each strFile In Application.FileDialog(msoFileDialogOpen).SelectedItems
        Set wbShop = Application.Workbooks.Open(strFile)

        For Each Sh In wbShop.Worksheets
            Set rgData = Sh.Range("A1").CurrentRegion    '
            Set rgData = rgData.Offset(1).Resize(rgData.Rows.Count - 1)
            Set rgAll = ThisWorkbook.Worksheets("Сводка").Range("A1").CurrentRegion
            Set rgPaste = rgAll.Resize(1, 1).Offset(rgAll.Rows.Count)
            rgData.Copy rgPaste
        Next Sh

        wbShop.Close saveChanges:=False
    Next
    Application.ScreenUpdating = True
    MsgBox "все данные скопированы": Exit Sub
MyErrors:     MsgBox "сегодня макрос не работает!"
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 31.08.2009, 08:21   #3
Stoodentka
 
Регистрация: 06.06.2009
Сообщений: 7
По умолчанию

Уважаемый EducatedFool!
Спасибо огромное, все отлично работает!!!
Stoodentka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обработать несколько файлов? never_mind Microsoft Office Excel 3 28.01.2009 11:57
Слить-объединить несколько файлов в один SLP Microsoft Office Excel 2 19.11.2008 18:13
передать несколько файлов indy SeЯgey Работа с сетью в Delphi 5 31.05.2008 21:03
Как удалить несколько файлов? Kashp Общие вопросы Delphi 2 23.08.2007 13:38