Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
1

Обращение к данным из другой книги

04.07.2017, 16:55. Просмотров 3381. Ответов 6
Метки нет (Все метки)

привет!

у меня небольшой и кажется довольно простой вопрос
(сильно упростил задачу, потому что проблема, как мне кажется в этом)

необходимо присвоить переменной значение ячейки, находящейся в неактивном листе
пытался сделать вот так

Visual Basic
1
2
3
4
5
6
7
8
9
10
Sub TEST()
 
FN = "111.xls"            ' название файла, значение ячейки которого нужно присвоить переменной
SN = "TEST"               ' название листа, значение ячейки которого нужно присвоить переменной
 
With Workbooks(FN).Sheets(SN)
a = Cells(8, 1).Value
End With
 
end sub
но переменной упорно присваивается значение активной книги, а не книги FN

насколько я понял то же самое происходит и с более глобальной задачей

большая просьба помочь)
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2017, 16:55
Ответы с готовыми решениями:

Доступ к данным другой книги Excel
Нужно, работая в одной книге, открыть другую книгу и работать с данными оттуда. Есть фрагмент кода:...

Перенос данных с одного листа одной книги на другой лист другой книги с константой
Добрый вечер, товарищи! Есть прайс-лист, который содержит в себе много колонок и строк. На...

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

Открытие книги по имени, находящемуся в ячейке другой книги
Как в VBA открыть книгу по имени, находящемуся в ячейке другой книги?

Найти итоги из всех листов другой книги и записать в факт для всех выделенных значений рабочей книги
Написал макрос для проверки итогов с фактом. Как запустить всё это по циклу? Чтоб отрабатывался для...

6
Hugo121
6458 / 2514 / 452
Регистрация: 19.10.2012
Сообщений: 7,538
04.07.2017, 17:09 2
Не умеете использовать with! Посмотрите любой пример - нужна точка перед cells
0
snipe
3165 / 1131 / 276
Регистрация: 07.08.2013
Сообщений: 2,877
04.07.2017, 17:11 3
простой как вам кажется вопрос (хоть и упрощенный до минимума форме)
на самом деле очень большая заноза
все дело в том что к закрытому листу (в том виде как вы предполагаете) обратиться как бы не возможно
при тех способах которые я знаю все равно происходит хотя бы фоновое открытие файла-донора
0
Hugo121
6458 / 2514 / 452
Регистрация: 19.10.2012
Сообщений: 7,538
05.07.2017, 08:30 4
Цитата Сообщение от Tim_Coyote Посмотреть сообщение
находящейся в неактивном листе
- тут ничего не сказано что книга закрыта, значит открыта, значит с точкой должно нормально отработать
0
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
05.07.2017, 08:40  [ТС] 5
Hugo121, спасибо, для присвоения значения ячейки работает, а вот для моей задачки - application.sumifs не хочет. все также ищет по активному листу активной книги.

Visual Basic
1
2
3
4
With Workbooks(FN).Sheets(SN)
       a = .Cells(3045, 5).Value          'воткнул проверку, переменной а присваивается правильное значение
         p = .Application.SumIfs(Range("F:F"), Range("A:A"), x, Range("E:E"), b)           ' а вот тут все равно возвращает одни нули..
       End With
может с application.sumifs свои тонкости..
пробовал тупо скопировать весь лист в активную книгу, тогда все работает норм, но хотелось бы избежать этих промежуточных манипуляциq

snipe, у меня эта книга всегда открыта - тут вопрос в том чтобы именно избежать ненужного копирования этого листа в активную книгу, из которой запускается макрос и куда нужно подтянуть данные
0
Hugo121
6458 / 2514 / 452
Регистрация: 19.10.2012
Сообщений: 7,538
05.07.2017, 11:26 6
Лучший ответ Сообщение было отмечено Tim_Coyote как решение

Решение

Одну точку убрать, три поставить!
1
Tim_Coyote
0 / 0 / 0
Регистрация: 10.10.2016
Сообщений: 19
06.07.2017, 08:23  [ТС] 7
Hugo121, понял, спасибо) все заработало)
0
06.07.2017, 08:23
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2017, 08:23

Обращение к ячейкам открытой книги (не текущей)
Макрос должен запускаться, спрашивать - какой файл ему взять. Открыть его, разделить определенную...

Сравнить столбцы таблицы одной книги со столбцами таблицы другой книги
Здравствуйте! такая проблемка... недавно только работаю с Basic, необходимо решить задачу, а...

Обращение по определенному адресу к ячейкам для любой книги
Всем привет. У меня есть куча разных книг в которых используются листы с одинаковыми названиями...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.