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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 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


И где именно, как происходит переход к следующей книге (файлу), из которого будут браться данные?
Спасибо!
Вложения
Тип файла: zip Извлечь_данные.zip (41.5 Кб, 16 просмотров)
Ник Харди вне форума Ответить с цитированием
Старый 20.12.2011, 14:36   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

4-я строка снизу: file = Dir
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 20.12.2011, 14:42   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
' Что делает данная строчка? Почему двоеточие?
Сравните
Код:
Rows("2:" & Rows.Count).ClearContents
file = Dir(path & "*.xls")
i = 2
Цитата:
Что такое ExecutreExcel4Macro?
А это гугл отлично знает
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 20.12.2011, 14:59   #4
Ник Харди
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию

Ок.
Rows("2:" & Rows.Count).ClearContents - это очистка данных со 2 и до последней строчки.

А вот где в коде происходит переключение на следующий файл - не могу понять. Цикла-то нет.
Ник Харди вне форума Ответить с цитированием
Старый 20.12.2011, 15:02   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

цикл в Вашем понимании - это обязательно For ... Next? - это заблуждение. есть у бейсика еще Do ... Loop.
я ответил, где выбирается след. файл. читайте внимательнее.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 20.12.2011 в 15:45.
IgorGO вне форума Ответить с цитированием
Старый 20.12.2011, 15:44   #6
Ник Харди
Пользователь
 
Регистрация: 05.12.2007
Сообщений: 10
По умолчанию

Понял, огромное спасибо. Удобно, черт побери, а!

P.S.
Все еще не понимаю, зачем нужен Address(, , xlR1C1))
В остальном - разобрался полностью!
Ник Харди вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить диапазоны ячеек из разных файлов в один, но так чтобы они шли один ниже другого? 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