Что нового

[Интеракция] MS Excel английская версия

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Пишу сюда, т.к. неясно куда отнести тему.
Нужно не решение, а проверка - что выдаст скрипт на разных языковых версиях MS Excel (локализованная русская или чисто английская, другие варианты приветствуются :D), у меня только русская версия :(.
Код:
$oExcel = ObjCreate('Excel.Application')
$oExcel.Visible = False
$oExcel.Workbooks.Add
$oExcel.ActiveSheet.Columns(2).ColumnWidth = 20
$oExcel.ActiveSheet.Cells(2,2).Value = '02.04.2010 13:25:55'
$sAnswer = ''
For $i = 1 To 5
	$sAnswer &= $oExcel.LanguageSettings.LanguageID($i) & @CRLF
Next
$sAnswer &= $oExcel.ActiveSheet.Cells(2,2).NumberFormat  & @CRLF
$oExcel.ActiveWorkBook.Saved = True
$oExcel.Quit
ConsoleWrite(@CRLF & $sAnswer & @CRLF)

мой результат:
Код:
1049
1049
1049
0
1049
ДД.ММ.ГГГГ ч:мм
PS: это нужно для правильного определения языковых настроек Excel - чтобы правильно выставить формат ячейки (dd/mm/yyyy h:mm:ss или ДД/ММ/ГГГ ч:мм:сс)
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
М не проше просто проверить формат даты, как текстового поля парсингом?
 
Автор
Redline

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Vlasssov сказал(а):
М не проше просто проверить формат даты, как текстового поля парсингом?
Как вариант можно, но все же хотелось решение полностью на объектах, без проверок формата Автоитом. И в друг в будущем нужен будет формат не даты а валюты например ;)
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Можно проверить надпись меню Файл
Application.CommandBars(1).Controls(1).Caption
Если '&Файл' - то русская ;)
 
Автор
Redline

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
Vlasssov сказал(а):
Можно проверить надпись меню Файл
Application.CommandBars(1).Controls(1).Caption
Если '&Файл' - то русская ;)
Не факт, а если на английскую версию "накатили" русификацию оболочки? Думаю формулы не изменятся(СУММ, SUMM). Поэтому и нужно определить языковой параметр, отвечающий за формулы и форматы, но который из пяти неясно :(
Код:
msoLanguageIDExeMode		4	Execution mode language.
msoLanguageIDHelp			3	Help language.
msoLanguageIDInstall		1	Install language.
msoLanguageIDUI				2	User interface language.
msoLanguageIDUIPrevious	5	User interface language used prior to the current user interface language.
Перерыл MSDN, судя по всему нужен именно msoLanguageIDUI, но нет английской версии проверить. :'(
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Redline сказал(а):
Не факт, а если на английскую версию "накатили" русификацию оболочки? Думаю формулы не изменятся(СУММ, SUMM). Поэтому и нужно определить языковой параметр, отвечающий за формулы и форматы, но который из пяти неясно :(
Это надо додуматься...
msoLanguageIDExeMode 4 Execution mode language.
msoLanguageIDHelp 3 Help language.
msoLanguageIDInstall 1 Install language.
msoLanguageIDUI 2 User interface language.
msoLanguageIDUIPrevious 5 User interface language used prior to the current user interface language.
Не факт... При накатке русификации может изменится...

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

RUVATA

лучше один раз увидеть, чем десять раз услышать...
Сообщения
132
Репутация
38
таблица LanguageID Enumeration - числовые эквиваленты констант msoLanguage****..

А язык версии приложения Excel из пантеона MS Office, определяется так:

Код:
#include <Excel.au3>

$oExcel = _ExcelBookOpen(@ScriptDir & "\Test.xls")
$vLanguage = "Не русский"
if $oExcel.LanguageSettings.LanguagePreferredForEditing(1049) = True 
; 1049 - взят из вышеуказанной таблицы, как эквивалент msoLanguageIDRussian
then $vLanguage = "Русский"
msgbox (1,"", $vLanguage)
 
Верх