AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.12.2008, 12:14   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Excel. Узнать по именованной ячейке на каком она листе?
Excel. Узнать по именованной ячейке на каком она листе?
в VBA есть
X++:
MsgBox Range("test").Worksheet.Name
Как это получить из X++ ?
Старый 30.12.2008, 12:30   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Объект Application перед Range добавьте - мысленно или на бумажке - и проанализируйте, как можно получить
Только надо при этом, чтобы была активна та Workbook, в которой определено это имя "test".
PHP код:
MsgBox Application.Range("test").Worksheet.Name 
Можно еще через семейство Names: Application.ThisWorkbook.Names("test").RefersTo
и потом выкусывать имя листа из полной ссылки: =Sheet1!$B$2
Старый 30.12.2008, 12:36   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
http://axaptapedia.com/COM
Старый 30.12.2008, 12:41   #4  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
в VBA есть
X++:
MsgBox Range("test").Worksheet.Name
Как это получить из X++ ?
Так... так и получить:
X++:
COM ws;
;
ws = range.Worksheet();
        info(ws.Name());
За это сообщение автора поблагодарили: Poleax (1).
Старый 30.12.2008, 12:51   #5  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Так... так и получить:
X++:
COM ws;
;
ws = range.Worksheet();
        info(ws.Name());
Это в том случае, если у него уже имеется этот range.
Но, как я понимаю, он хочет на вход своей будущей функции подать строку "test", а на выходе получить другую строку - имя листа. И пока ему непонятно как создать этот range, не зная имени листа. Ответ - создать от Application, который явно не указан в коде VBA, но который незримо присутствует: range = Application.Range("test").
Старый 30.12.2008, 12:56   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
пример тут \Classes\ComExcelDocument_RU\findRange
Старый 30.12.2008, 13:01   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от belugin Посмотреть сообщение
пример тут \Classes\ComExcelDocument_RU\findRange
Гы! Не пойдет, там worksheet параметром надо указывать
Старый 30.12.2008, 13:03   #8  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
Цитата:
Это в том случае, если у него уже имеется этот range.
ааа, понятно. Тогда решение в лоб:
X++:
    COM             ws;

    COM             cells;
    COM             sheets;
    int             cnt;
    COM             findRange;

        sheets = app.sheets();
        cnt = sheets.Count();

        for (i = 1; i <= cnt; i++)
        {
            sheet = sheets.Item(i);
            cells = sheet.Cells();

            findRange = cells.Find("ttt");
            if (findRange)
            {
                ws = findRange.Worksheet();
                info(ws.Name());
            }
Старый 30.12.2008, 13:12   #9  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
;)
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
Так... так и получить:
X++:
COM ws;
;
ws = range.Worksheet();
        info(ws.Name());
да действительно так и есть. А я тут думал использовать getWorkSheets()
Спасибо Всем, прояснили!
Старый 30.12.2008, 13:27   #10  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Eldar9x Посмотреть сообщение
ааа, понятно. Тогда решение в лоб:
Да не нужно листы перебирать, я ж всё вроде написал...
Получите Application как точку опору и мир сам перевернется
X++:
static void Job120(Args _args)
{
    ComExcelDocument_RU doc = new ComExcelDocument_RU();

    COM     xlApp;
    COM     wbook;
    COM     activeSheet;
    COM     wkss;
    COM     range;

    str sheetName(COM _excel, str _namedRange) // ОНО!
    {
        COM comTemp;
        ;
        comTemp = _excel.Range(_namedRange);
        comTemp = comTemp.Worksheet();
        return comTemp.Name();
    }
    ;

// это всё - подготовка тестовых данных
// ---------------------------------------------------------
    doc.NewFile();
    wbook = doc.getComDocument();
    wkss = wbook.Worksheets();

    xlApp = wbook.Parent();
    activeSheet = xlApp.ActiveSheet();

    range = activeSheet.Range('B2');
    range.Name('test');

    range.Select();

    activeSheet = wkss.Add();
    activeSheet.Select(); // специально ушли на другой лист
// ---------------------------------------------------------

// а теперь собственно вызов функции
    box::info(sheetName(xlApp, 'test'));
}
Старый 30.12.2008, 13:48   #11  
Eldar9x is offline
Eldar9x
MCTS
Аватар для Eldar9x
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Регистрация: 29.09.2006
Адрес: Казань
понятно, я думал, само значение ищется .
Теги
excel

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
Узнать строку и столбец именованной области в Excel player DAX: Программирование 6 01.02.2008 07:33
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Запись в примечание к ячейке Excel ? Zabr DAX: Программирование 3 28.12.2006 10:26
Как узнать числовые значения констант Word и Excel? Atani DAX: Программирование 2 26.01.2004 16:38
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:28.