|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
20.12.2011, 14:31 | #1 |
Пользователь
Регистрация: 05.12.2007
Сообщений: 10
|
Разобраться в простом макросе (копирование ячеек поочередно из разных файлов)
Суть скрипта: спрашивает, из какой директории брать файлы. И далее из каждого файла. из заданных ячеек берёт значения и выкладывает на excel-лист в виде списка.
Пример работы смотрите в приложенном файле. Листинг: Private Sub Main() ' Определим переменные Dim path As String, file As String, arg As String, i As Long 'Не будем отображать действия макроса Application.ScreenUpdating = False 'Спросим пользователя о том, в какой папке лежат файлы With Application.FileDialog(msoFileDialo gFolderPicker) .Title = "Укажите рабочую папку": .Show If .SelectedItems.Count = 0 Then Exit Sub Else path = .SelectedItems(1) & "\" End With ' Что делает данная строчка? Почему двоеточие? Rows("2:" & Rows.Count).ClearContents: file = Dir(path & "*.xls"): i = 2 'Выполнять, пока файлы не закончатся Do While file <> "" 'Далее мне не понятно ничего. Что такое ExecutreExcel4Macro? И зачем нужен и что делает (, , xlR1C1))? Cells(i, 1) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("H13").Range("A1").Address(, , xlR1C1)) Cells(i, 2) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("B19").Range("A1").Address(, , xlR1C1)) i = i + 1: file = Dir Loop End Sub И где именно, как происходит переход к следующей книге (файлу), из которого будут браться данные? Спасибо! |
20.12.2011, 14:36 | #2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
4-я строка снизу: file = Dir
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
20.12.2011, 14:42 | #3 | ||
Старожил
Регистрация: 15.05.2008
Сообщений: 2,058
|
Цитата:
Код:
Цитата:
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499 |
||
20.12.2011, 14:59 | #4 |
Пользователь
Регистрация: 05.12.2007
Сообщений: 10
|
Ок.
Rows("2:" & Rows.Count).ClearContents - это очистка данных со 2 и до последней строчки. А вот где в коде происходит переключение на следующий файл - не могу понять. Цикла-то нет. |
20.12.2011, 15:02 | #5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
цикл в Вашем понимании - это обязательно For ... Next? - это заблуждение. есть у бейсика еще Do ... Loop.
я ответил, где выбирается след. файл. читайте внимательнее.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
Последний раз редактировалось IgorGO; 20.12.2011 в 15:45. |
20.12.2011, 15:44 | #6 |
Пользователь
Регистрация: 05.12.2007
Сообщений: 10
|
Понял, огромное спасибо. Удобно, черт побери, а!
P.S. Все еще не понимаю, зачем нужен Address(, , xlR1C1)) В остальном - разобрался полностью! |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вставить диапазоны ячеек из разных файлов в один, но так чтобы они шли один ниже другого? | Squarded | Microsoft Office Excel | 4 | 24.07.2011 19:24 |
Автоматическое копирование листов с разных файлов в один | Toffifee | Microsoft Office Excel | 0 | 11.05.2011 16:12 |
Сводная таблица разных ячеек из разных файлов | vik74 | Microsoft Office Excel | 2 | 23.01.2011 20:53 |
Excel 2003 копирование из разных файлов в один | mixaxa | Microsoft Office Excel | 11 | 28.05.2010 14:50 |
Задача на копирование ячеек из разных листов на один. | hozpraktik | Microsoft Office Excel | 8 | 28.05.2010 10:00 |