Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/408: Рейтинг темы: голосов - 408, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 30.12.2009
Сообщений: 9

Вытянуть данные из закрытых книг в Excel

04.08.2010, 14:11. Показов 82029. Ответов 29

Студворк — интернет-сервис помощи студентам
Следующая ситуация:
В ячейке А1 активной книги прописан полный путь к *.xls файлу, в ячейке А2 - к другому файлу и так далее в столбце А.
Каждый из этих файлов имеет одинаковую структуру и из каждого (все эти файлы закрыты) необходимо достать, к примеру, значение ячейки А4 и поместить значения этой ячейки из всех файлов в столбец В активной книги, и значения ячейки В4 поместить в столбец С активной книги.

Если лень писать код, то объясните, пожалуйста, просто суть, а именно как оптимальнее сделать эту задачу, чтоб процедура длилась как можно меньше.

Заранее спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.08.2010, 14:11
Ответы с готовыми решениями:

Вытянуть данные из лога в Excel
Вот код страницы на которой отображается все люди которые участвуют в конференции разговора по IP-телефонии, подскажите как сделать что бы...

Как с помощью PHP вытянуть данные из Excel?
ПРивет! Может кто сталкивался с такой проблемой: Есть обычный excel'файл. При помощи пхп нужно выцарапать данные из всех ячеек и...

Удаление закрытых книг из кеша
Друзья, столкнулся с такой проблемой. есть файл ексель с макросом который открывает по указанному списку документы и собирает из них в...

29
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
08.08.2017, 15:57
Студворк — интернет-сервис помощи студентам
Bobun, Можно циклом. Вернее двумя циклами - один вложен в другой.
0
1 / 1 / 0
Регистрация: 29.05.2017
Сообщений: 5
08.08.2017, 16:29
dzug, Прошу прощения за безграмотность, но как это будет выглядеть в Вашем коде?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Main()
    Dim path As String, file As String, arg As String, i As Long
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFolderPicker)
        .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 <> ""
        Cells(i, 1) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "РК'!" & Range("B27").Range("A1").Address(, , xlR1C1))
        Cells(i, 2) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "РК'!" & Range("C27").Range("A1").Address(, , xlR1C1))
        i = i + 1: file = Dir
    Loop
End Sub
Добавлено через 6 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Main()
Dim path As String, file As String, arg As String, i As Long
Application.ScreenUpdating = False
With Application.FileDialog(msoFileDialogFolderPicker)
.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 <> ""
Cells(i, 1) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "РК'!" & Range("B27").Range("A1").Address(, , xlR1C1))
Cells(i, 2) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "РК'!" & Range("C27").Range("A1").Address(, , xlR1C1))
i = i + 1: file = Dir
Loop
End Sub
0
1 / 1 / 0
Регистрация: 22.07.2018
Сообщений: 80
19.03.2019, 15:25
Здравствуйте!
Не могу понять что мне нужно изменить для того чтобы из множества книг скопировать нужные диапазоны ячеек из 2-х одинаково именованных во всех книгах листов.
0
 Аватар для dzug
695 / 236 / 18
Регистрация: 17.01.2011
Сообщений: 583
Записей в блоге: 1
20.03.2019, 09:50
artofnewman, вы считаете что все ринутся заполнять от фонаря файлы Экселя и угадывать что да как копировать ?
0
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
20.03.2019, 09:56
artofnewman, в диапазон, куда нужно вставить данные, вписать формулу, ссылающуюся на диапазон закрытой книги; заменить на значения. Это в цикле по книгам.
0
1 / 1 / 0
Регистрация: 22.07.2018
Сообщений: 80
21.03.2019, 08:54
Здравствуйте!
Нашел в сети код, подправил под свои нужды, но есть проблемка, состоящая в том, что с листа2 нужны данные из столбцов D,E,H начиная с D4,E4,H4.

Пример того как должно получиться приложил.
В одном форма получения данных, в другом файл(лы) из которого нужно вытянуть данные

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub PR()
Dim path As String, file As String, arg As String, i As Long
    Application.ScreenUpdating = False
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Укажите рабочую папку": .Show
        If .SelectedItems.Count = 0 Then Exit Sub Else path = .SelectedItems(1) & "\"
    End With
    Rows("2:" & Rows.Count).ClearContents: file = Dir(path & "*.xlsx"): i = 2
    Do While file <> ""
        Cells(i, 1) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("B7").Range("A1").Address(, , xlR1C1))
        Cells(i, 2) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист1'!" & Range("D7").Range("A1").Address(, , xlR1C1))
        Cells(i, 3) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист2'!" & Range("D4").Range("A1").Address(, , xlR1C1))
        Cells(i, 4) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист2'!" & Range("E4").Range("A1").Address(, , xlR1C1))
        Cells(i, 5) = ExecuteExcel4Macro("'" & path & "[" & file & "]" & "Лист2'!" & Range("H4").Range("A1").Address(, , xlR1C1))
        
        
        i = i + 1: file = Dir
    Loop
End Sub
Вложения
Тип файла: xlsx ПРИМЕР PROBA.xlsx (8.4 Кб, 40 просмотров)
Тип файла: xlsx ПРИМЕР.xlsx (8.8 Кб, 39 просмотров)
1
1 / 1 / 0
Регистрация: 29.05.2017
Сообщений: 5
21.03.2019, 13:03
Очень интересно! Большое спасибо!
1
1 / 1 / 0
Регистрация: 22.07.2018
Сообщений: 80
21.03.2019, 15:12
А у вас ячейки или диапазон ячеек?
Ищу код чтоб диапазон копировал
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
21.03.2019, 20:31
ExecuteExcel4Macro не копирует ячейки/диапазоны, оно копирует только значения. Ну разве что если там дата - то может в результате тоже получите дату, а не многим непонятное число. Но это не проверял.
1
0 / 0 / 0
Регистрация: 24.11.2016
Сообщений: 1
15.08.2019, 13:57
Цитата Сообщение от artofnewman Посмотреть сообщение
Ищу код чтоб диапазон копировал
Visual Basic
1
2
[A1:D5].FormulaArray = "='[A.xlsb]Лист1'!$A$1:$D$5"
[A1:D5].Value = [A1:D5].Value
Если нужно много копировать, то может оказаться быстрее всё-таки открыть сначала файл и копировать из открытого в открытый. Сколько это "много" я проверял, но не помню. Сотни ячеек? Тысячи?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.08.2019, 13:57

Функция для вытягивания данных из закрытых книг
Всем привет! Появилась потребность написать пользовательскую функцию в VBA для вытягивания данных из определенных ячеек. ...

Как скопировать из закрытых книг с определенных листов нужные ячейки
Здравствуйте!!!!! Помогите ((( Есть более 10000 книг. Каждая книга содержит лист &quot;Титул&quot; и лист &quot;Маршрутная...

Как суммировать данные с разных книг Excel в одну таблицу
Уважаемы гуру VBA помогите новичку не провалить задание.:cry: Дело в том, что с разных отделов ( около 40) мне шлют заполненную таблицу...

Можно ли с помощью формы в одной книге Excel вносить данные в ячейки двух книг?
Можно ли с помощью формы в одной книге Excel вносить данные в ячейки двух книг?

Сколько возможных комбинаций (закрытых/не закрытых мишеней) приводят к двум штрафным кругам
Биатлонист делает 5 выстрелов на рубеже. За каждую не закрытую мишень он получает штрафной круг. Сколько возможных комбинаций (закрытых/не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru