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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.12.2004, 10:21   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,657 / 1158 (42) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Вообще-то, работать с Excel достаточно просто, если уяснить его основную иерархию:

Application - WorkBook - WorkSheet - Range (Cell)

Application - это собственно тот COM-объект, который создается в памяти
WorkBook - это файл, открытый в этом COM-объекте
WorkSheet - это лист одного файла
Range - область листа (набор ячеек) к которому идет обращение

Если работа идет через класс ComExcelDocument_RU, то

Application - это переменная m_comApplication
WorkBook - это переменная m_comDocument

Чтобы вытащить эти переменные во вне надо создать специальные методы в этом классе, которые будут просто возвращать значение этих переменнх. Причем следует помнить, что для AXAPTA все эти переменные типа COM. Ну, что-то вроде

PHP код:
public COM getApplication()
{
    ;

    return 
m_comApplication;

Далее, следует помнить, что AXAPTA не поодерживает косвенные ссылки COM-объектов. Если почитать HELP по VBA в Excel (Открыть Excel, далее Alt+F11, далее F1), то по объекту LanguageSettings надо поступить примерно так:

PHP код:
static void Job_Excel(Args _args)
{
    
COMExcelDocument_RU     excel;
    
Com                     m_comApplication;
    
Com                     comLanguageSettings;
    ;

    
excel = new COMExcelDocument_RU();
    
excel.newFile('',true);
    
excel.visible(true);

    
m_comApplication excel.getApplication();  // это созданный выше метод
    
comLanguageSettings m_comApplication.LanguageSettings();

    print 
comLanguageSettings.LanguageID(1);
    
pause;
    return;

Вот с константами беда Какое именно значение имеют константы msoLanguageIDExeMode, msoLanguageIDHelp, msoLanguageIDInstall, msoLanguageIDUI, or msoLanguageIDUIPrevious я не в курсе. Методом тыка поставил единицу.

С возвращаемым значением полегче. Есть список констант в Word

PHP код:
#DEFINE.wdLanguageNone(0)
#DEFINE.wdNoProofing(1024)
#DEFINE.wdDanish(1030)
#DEFINE.wdGerman(1031)
#DEFINE.wdSwissGerman(2055)
#DEFINE.wdEnglishAUS(3081)
#DEFINE.wdEnglishUK(2057)
#DEFINE.wdEnglishUS(1033)
#DEFINE.wdEnglishCanadian(4105)
#DEFINE.wdEnglishNewZealand(5129)
#DEFINE.wdEnglishSouthAfrica(7177)
#DEFINE.wdSpanish(1034)
#DEFINE.wdFrench(1036)
#DEFINE.wdFrenchCanadian(3084)
#DEFINE.wdItalian(1040)
#DEFINE.wdDutch(1043)
#DEFINE.wdNorwegianBokmol(1044)
#DEFINE.wdNorwegianNynorsk(2068)
#DEFINE.wdBrazilianPortuguese(1046)
#DEFINE.wdPortuguese(2070)
#DEFINE.wdFinnish(1035)
#DEFINE.wdSwedish(1053)
#DEFINE.wdCatalan(1027)
#DEFINE.wdGreek(1032)
#DEFINE.wdTurkish(1055)
#DEFINE.wdRussian(1049)
#DEFINE.wdCzech(1029)
#DEFINE.wdHungarian(1038)
#DEFINE.wdPolish(1045)
#DEFINE.wdSlovenian(1060)
#DEFINE.wdBasque(1069)
#DEFINE.wdMalaysian(1086)
#DEFINE.wdJapanese(1041)
#DEFINE.wdKorean(1042)
#DEFINE.wdSimplifiedChinese(2052)
#DEFINE.wdTraditionalChinese(1028)
#DEFINE.wdSwissFrench(4108)
#DEFINE.wdSesotho(1072)
#DEFINE.wdTsonga(1073)
#DEFINE.wdTswana(1074)
#DEFINE.wdVenda(1075)
#DEFINE.wdXhosa(1076)
#DEFINE.wdZulu(1077)
#DEFINE.wdAfrikaans(1078)
#DEFINE.wdArabic(1025)
#DEFINE.wdHebrew(1037)
#DEFINE.wdSlovak(1051)
#DEFINE.wdFarsi(1065)
#DEFINE.wdRomanian(1048)
#DEFINE.wdCroatian(1050)
#DEFINE.wdUkrainian(1058)
#DEFINE.wdByelorussian(1059)
#DEFINE.wdEstonian(1061)
#DEFINE.wdLatvian(1062)
#DEFINE.wdMacedonian(1071)
#DEFINE.wdSerbianLatin(2074)
#DEFINE.wdSerbianCyrillic(3098)
#DEFINE.wdIcelandic(1039)
#DEFINE.wdBelgianFrench(2060)
#DEFINE.wdBelgianDutch(2067)
#DEFINE.wdBulgarian(1026)
#DEFINE.wdMexicanSpanish(2058)
#DEFINE.wdSpanishModernSort(3082)
#DEFINE.wdSwissItalian(2064) 
Т.е. если приведенный выше Job вернет 1049, то язык русский, а если 1033 - то английский. Правда, надо все-таки как-то уточнить значение константы передаваемой в метод LanguageID().

Чтобы уточнить синтаксис какой-либо команды непосредственно в Excel, используют встроенный в Excel макрорекодер. Т.е. запись всех действий пользователя, совершаемых в Excel. Пункт меню Сервис -> Макрос -> Начать запись.

Выполняешь все необходимые действия, далее останавливаешь запись, открываешь макрос на редактирование и смотришь, какая именно команда была использована. Правда, переносить один-к-одному код макрорекодера не нужно. Все эти Selection() явно лишние. Но, думаю, сообразишь как там что перевести. Ничего сложного.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Исследование скорости экспорта данных из Axapta в Excel (коллективный эксперимент) Gustav DAX: База знаний и проекты 79 13.02.2014 13:18
[Excel] - Несколько версий Excel на машине клиента Андре DAX: Программирование 11 07.08.2007 13:45
Вызов Item() для коллекций Excel Владимир Максимов DAX: Программирование 15 17.08.2006 19:47
Пару вопросов про АОС ZVV DAX: Администрирование 13 14.01.2005 12:01

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:43.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.