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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2009, 12:03   #1
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию Взять значение ячейки не открывая файл и

Имеется куча файлов одинаковых по структуре, лежащих в одной директории.
Хочу следующее:
В новый файл собрать данные из этих файлов
Первая строка в новом файле:
А1(название файла-1)--B1(значение ячейки C5 файла-1)--C1(значение ячейки D8 файла-1)
Вторая строка в новом файле:
А1(название файла-2)--B1(значение ячейки C5 файла-2)--C1(значение ячейки D8 файла-2)
и т.д
Подскажите начало макроса, дальше попробую сам разобраться
kzld вне форума Ответить с цитированием
Старый 17.12.2009, 15:42   #2
андей
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 69
По умолчанию

в качестве примера с планеты эксель
Вложения
Тип файла: rar Консолидация файлы шаблон.rar (19.6 Кб, 100 просмотров)
Андрей
андей вне форума Ответить с цитированием
Старый 17.12.2009, 17:12   #3
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от андей Посмотреть сообщение
в качестве примера с планеты эксель
Спасибо за ответ.
Подскажите как им пользоваться.

Нажмаю пункт "ВЫБРАТЬ ПАПКУ" - сделано. выбрал.
Нажмаю пункт "СОБРАТЬ ДАННЫЕ" - выскакивает ошибка
Runtime error "445"

Как указать в приведённом Вами шаблоне какие ячейки мне нужны и как указать куда ставить значения?
kzld вне форума Ответить с цитированием
Старый 17.12.2009, 19:41   #4
андей
Пользователь
 
Регистрация: 27.09.2008
Сообщений: 69
По умолчанию

заполнить нужно все закрашенные ячейки
Андрей
андей вне форума Ответить с цитированием
Старый 18.12.2009, 06:50   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Первая строка в новом файле:
А1(название файла-1)--B1(значение ячейки C5 файла-1)--C1(значение ячейки D8 файла-1)
Вторая строка...
А имя листа??? Если во всех файлах в выбранной папке имена листов известны (именно имена, а не номера), то все делается существенно проще.
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 18.12.2009, 09:23   #6
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от андей Посмотреть сообщение
заполнить нужно все закрашенные ячейки
Заполнял как цифровыми значениями листа, так и наименованиями листов
Не получается

Спотыкается на строке макроса
Set fs = Application.FileSearch
kzld вне форума Ответить с цитированием
Старый 18.12.2009, 09:24   #7
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
А имя листа??? Если во всех файлах в выбранной папке имена листов известны (именно имена, а не номера), то все делается существенно проще.
Да, имена известны и все имена листов одинаковые
kzld вне форума Ответить с цитированием
Старый 18.12.2009, 10:20   #8
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
Спотыкается на строке макроса
Set fs = Application.FileSearch
У Вас, наверное, Excel 2007, в котором метод FileSearch отключен разработчиками Microsoft. Воспользуйтесь поиском требуемых файлов с помощью цикла Do... While... Loop.
Предлагаю такой вариант:
Пусть все xls-файлы, из которых требуется получить данные находятся в одной папке. И пусть во всех этих файлах имя листа, из которого требуется получить данные это "Лист1". для этого достаточно выполнить макрос:
Код:
Sub Main()
    Dim myPath As String, myName As String, i As Integer
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку": .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        myPath = .SelectedItems(1) & "\"
    End With
    Application.ScreenUpdating = False: myName = Dir(myPath & "*.xls"): i = 1: Cells.ClearContents
    Do While myName <> ""
        Cells(i, 2).Formula = "='" & myPath & "[" & myName & "]Лист1'!$C$5"
        Cells(i, 3).Formula = "='" & myPath & "[" & myName & "]Лист1'!$D$8"
        Cells(i, 1) = myName: i = i + 1: myName = Dir
    Loop: [A:C].Value = [A:C].Value
End Sub
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 18.12.2009 в 10:24.
SAS888 вне форума Ответить с цитированием
Старый 18.12.2009, 10:35   #9
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
У Вас, наверное, Excel 2007, в котором метод FileSearch отключен разработчиками Microsoft. Воспользуйтесь поиском требуемых файлов с помощью цикла Do... While... Loop.
Да , установлен 2007.
Спасибо, буду пробовать
kzld вне форума Ответить с цитированием
Старый 20.12.2009, 06:42   #10
kzld
Форумчанин
 
Регистрация: 24.01.2009
Сообщений: 625
По умолчанию

Спасибо, работает.
Только вот в конце работы выдаёт ошибку
Runtime error `1004`
Application-defined or object-defined error
kzld вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округлить значение ячейки kzld Microsoft Office Excel 8 13.12.2009 11:58
Взять имя переменной из файла и присвоить ей значение ZaRDaK Помощь студентам 1 11.11.2009 00:33
может ли макрос взять данные из файла не открывая сам файл? kievlyanin Microsoft Office Excel 1 14.10.2009 19:51
Как в одном файле взять цифру из ячейки другого файла? Hallo Microsoft Office Excel 3 26.05.2009 01:25
Взять значение по модулю ruavia3 Microsoft Office Excel 1 08.04.2009 10:18