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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.03.2012, 17:53   #1
faz
 
Регистрация: 26.02.2012
Сообщений: 6
Радость Копирование определенных ячеек из многих книг одной папки

Добрый вечер, Уважаемые форумчане!

Пытаюсь написать макрос позволяющий перебрать книги в указанной папке, из каждой книги скопировать ячейки с определенным адресом и вставить в итоговую таблицу. Никогда не программировал, но появился интерес разобраться. Необходим данный макрос для работы.

Записать макрос дейстивий в рекордере смог)) он позволяет делать это с заданными файлами, а мне это очень нужно для 196 файлов сделать которые в одной папке лежат.

Хочу разобраться как мне этот код записать в общем виде. то есть для всех папок) не знаю операторы какие нужны. Прошу Вас помочь!

Только подскажите, а я уже сам постараюсь всё сделать!

Смотрел на форуме темы похожие темы, но не могу разобраться в коде.
Вложения
Тип файла: zip СБОРКА.zip (16.8 Кб, 17 просмотров)

Последний раз редактировалось faz; 09.03.2012 в 18:07. Причина: Очепятка
faz вне форума Ответить с цитированием
Старый 09.03.2012, 18:46   #2
faz
 
Регистрация: 26.02.2012
Сообщений: 6
По умолчанию

Код:
Sub XLS()

    Dim myPath As String, myName As String, Wb As Workbook
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку"
        .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        myPath = .SelectedItems(1) & Application.PathSeparator
    End With
    
    myName = Dir(myPath & "*.xls") 
    With ThisWorkbook.Sheets(1)
        Do While myName <> ""
            Set Wb = Workbooks.Open(Filename:=myPath & myName)
            ActiveSheet.UsedRange.Copy .Cells(.UsedRange.Rows.Count + .UsedRange.Row, "A")
            Wb.Close SaveChanges:=False
            myName = Dir
        Loop
    End With
    
End Sub

Подскажите пожалуйста, что означают формулы:

- .SelectedItems.Count = 0
- .SelectedItems(1) & Application.PathSeparator
что означает значок & в данном случае?
- ActiveSheet.UsedRange.Copy .Cells(.UsedRange.Rows.Count + .UsedRange.Row, "A")
faz вне форума Ответить с цитированием
Старый 09.03.2012, 18:58   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Немного не так.
Не нужно этих активаций и селектов.
Алгоритм такой - через set задаём ссылку на сборный файл (его нужно кодом открыть или можно взять уже открытую книгу, например если код запускается из неё) и нужный лист:

Код:
    Dim wb As Workbook, sh As Worksheet
    Set wb = Workbooks.Open("C:\Users\Asus\Desktop\СБОРКА\Книга куда будут собираться данные (сводная таблица).xlsx")
    Set sh = wb.Sheets(1)
Далее в цикле перебираем файлы выбранной папки (можно в диалоге выбрать или явно в коде прописать, перебирать с помощью Dir или FSO),
примерно так (цикл не пишу, хлопотно):

Код:
With Workbooks.Open(строка_пути_полученная_в_цикле_перебора)
With .Sheets(1)
i = i + 1 'увеличиваем на число копируемых строк, ну или иначе нужно передвинуть место копирования
.[b2].Copy sh.Cells(i, 1)
End With
.Close 0 'закрываем источник без сохранения
End With
Всё - данные собрались, источники закрылись.

P.S. Пока сочинял - уже и сами подобное нашли

- .SelectedItems.Count = 0 - если ничего не выбрано, то их число естественно 0

- .SelectedItems(1) & Application.PathSeparator
что означает значок & в данном случае? - конкатенация строк, т.е. к "C:\Temp" добавляется "\"
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 09.03.2012 в 19:02.
Hugo121 вне форума Ответить с цитированием
Старый 09.03.2012, 19:02   #4
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Подскажите пожалуйста, что означают формулы:
Раз уж Вы пытаетесь разобраться, очень рекомендую выполнение кода в отладочном режиме, т.е. по клавише F8
Проудитесь в этом режиме по Вашему коду, посмотрите, что пишется под курсором в желтой строке.
думаю, вопросы отпадут сами по себе.
Можно еще мультик посмотреть))
Вложения
Тип файла: zip Video_2012-03-09_170044.zip (855.9 Кб, 28 просмотров)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 09.03.2012, 19:11   #5
faz
 
Регистрация: 26.02.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от VictorM Посмотреть сообщение
Раз уж Вы пытаетесь разобраться, очень рекомендую выполнение кода в отладочном режиме, т.е. по клавише F8
Проудитесь в этом режиме по Вашему коду, посмотрите, что пишется под курсором в желтой строке.
думаю, вопросы отпадут сами по себе.
Можно еще мультик посмотреть))
2 Hugo121: Спасибо буду пробовать) от скольких спасибо принимаются по вэб мани?)

2 VictorM: Чудо мультфильм, спасибо попробуем по вашему методу=))) Сейчас буду разбираться , так как не знаком с орфорграфией VBA (как объекты описываются и присваиваются). Спасибо, что откликаетесь, хочется конечно своими силами сделать , но оно оказывается не так просто.

Последний раз редактировалось faz; 09.03.2012 в 19:13.
faz вне форума Ответить с цитированием
Старый 09.03.2012, 19:22   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

от скольких - от всех
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование групы файлов из одной папки в другую Progsenya C# (си шарп) 1 30.04.2011 11:56
поиск ячеек по шаблону из одной книги и копирование в другую VS1986 Microsoft Office Excel 1 27.01.2011 05:34
сумма ячеек (A1:F1) или из одной ячейки из разных книг ramzan_s Microsoft Office Excel 4 19.01.2011 10:13
копирование ячеек из книг в одну(общую) DEsh Microsoft Office Excel 3 12.11.2010 12:38
копирование из одной ячейки в множество ячеек с одинаковыми параметрами andreton Microsoft Office Excel 8 03.11.2010 13:55