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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2010, 14:08   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию Работа с именами

Открываю файл как объект:
Код:
Set wb = GetObject(fil.path)
После чего из этого файла мне нужно получить значение имени, делаю это так:
Код:
    Объект(ОбъектДоговорНомер) = wb.Names("п_ДоговорНомер").Value
Имя содержит:
п_ДоговорНомер=ЕСЛИ(ИдДоговор_Номер ="";"____";ИдДоговор_Номер)
После пишу содержание в ячейку. Получаю в ячейке формулу из имени...
Как получить не формулу, а вычисленное значение?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 15.11.2010, 14:15   #2
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Попытка использовать строку вида
Код:
Объект(ОбъектДоговорНомер) = Evaluate(wb.Names("п_ДоговорНомер").Value)
Приводит к возврату ошибки "Error 2029".
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 15.11.2010, 14:31   #3
npocmop
Пользователь
 
Аватар для npocmop
 
Регистрация: 02.11.2010
Сообщений: 55
По умолчанию

опять 2029
npocmop вне форума Ответить с цитированием
Старый 15.11.2010, 19:58   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Имя содержит:
п_ДоговорНомер=ЕСЛИ(ИдДоговор_Номер ="";"____";ИдДоговор_Номер)
После пишу содержание в ячейку. Получаю в ячейке формулу из имени...
Как получить не формулу, а вычисленное значение?
Ни как не пойму в чем косяк. ( Сначала думал, что файл просто не может высчитать формулу, так как файл по сути не загружен. Потом смотрю, нет вот он в загрузился просто его не видно в пуске...
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 15.11.2010, 22:27   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Задача: из книги на диске в открытую книгу изъять данные, в данном случае значения Имен. И записать их в ячейки.
Если выполнить вот этот код:
Код:
Set wb = Workbooks.Open(fil.path, ReadOnly:=True, UpdateLinks:=0)
    With wb
        q1 = .Names("ИдДоговор_Номер").Value
        q2 = [ИдДоговор_Номер]
        q3 = Evaluate(.Names("ИдДоговор_Номер").Value)
    End With
перемеренные примут следующие значения:
q1="='Исх.данные договора'!$C$68"
q2=Error 2029 '#ИМЯ!
q3=Error 2023 '#ССЫЛКА!

В случае q2, программа скорее всего пытается найти имя "ИдДоговор_Номер" в текущей книге, а не в wb.
В случае q3, программа правильно взяла содержимое имени (то есть "='Исх.данные договора'!$C$68"), но снова пытается найти лист "Исх.данные договора" в текущей книге, а не в wb.
Как быть??? Что я снова делаю не так?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 16.11.2010, 22:41   #6
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 844
По умолчанию

Вопрос снимается, разобрался самостоятельно. Жаль что ни кто не смог подсказать...
Единого решения для всех имен нет. Для имен содержащих ссылки на ячейки нужно использовать строку вида:
Код:
Объект(ОбъектДоговорНомер) = wb.Names("ИдДоговор_Номер").RefersToRange
Для имен содержащих текстовое значение, следует использовать строку вида:
Код:
Объект(ОбъектДоговорНомер) = wb.Names("ИдДоговор_Номер").Value
Где wb - объект листа.

Для имен которые содержат формулы решение пока не нашел... (( Но на текущий момент я могу обойтись без них. Так как изымаю исходные данные, а не результат работы. Все как-то криво...
С уважением, Алексей.

Последний раз редактировалось tae1980; 16.11.2010 в 22:52.
tae1980 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с именами диапазонов rick1177 Microsoft Office Excel 5 01.08.2010 12:38
4 массива с именами volery Общие вопросы C/C++ 1 13.06.2010 22:50
работа с именами файлов серг Общие вопросы C/C++ 1 25.02.2010 15:06
Проблема с рускими именами файлов. ASP фтвкнцф PHP 1 07.08.2008 21:16
Проблема с именами файлов. Nyusya Общие вопросы C/C++ 1 15.03.2008 06:54