Определение используемой версии Excel
‘http://www.cyberforum.ru/vba/thread1851214.html
Sub Bitnost() MsgBox «Welcome to Microsoft Excel version » & _ Application.Version & » running on » & _ Application.OperatingSystem & «!» End Sub |
11.12.2013, 17:27 |
[ Файл-пример (59.0 Kb) ] |
|
Для определения текущей версии Excel используйте такой код: Sub Version() Dim Ver as String Select Case Val(Application.Version) Case Is <= 8: Ver = «Microsoft Excel 20-го века» Case 9: Ver = «Microsoft Excel 2000» Case 10: Ver = «Microsoft Excel 2002» Case 11: Ver = «Microsoft Excel 2003» Case 12: Ver = «Microsoft Excel 2007» Case 14: Ver = «Microsoft Excel 2010» Case 15: Ver = «Microsoft Excel 2013» Case 16: Ver = «Microsoft Excel 2016» Case Else: Ver = «Версия не определена» End Select MsgBox «Вы работаете в » & Ver End Sub |
|
Добавил: Serge_007 | |
Распознавание числовых значений в начале текстовых строк с помощью функции Val в коде VBA Excel. Определение текущей версии приложения Excel.
Val — это функция, которая распознает цифры с начала строки и до первого нецифрового символа, и возвращает их как числовое значение соответствующего типа.
Синтаксис
string — строка; переменная или выражение, возвращающие строку.
Примечание
Функция Val прекращает чтение строки на первом символе, который она не может распознать как цифру. Если среди цифр встречаются точки (.), то первая интерпретируется как десятичный разделитель, а вторая — уже как текст, на ней распознавание числа прекращается.
Примеры
Примеры с функцией Val
Sub Primer() MsgBox Val(«15 2 .3 38 попугаев») ‘Результат: 152,338 MsgBox Val(«15.03.2022») ‘Результат: 15,03 MsgBox Val(«.03.2022») ‘Результат: 0,03 MsgBox Val(«Моя дата: 15.03.2022») ‘Результат: 0 MsgBox Val(«+7 900 000 11 22») ‘Результат: 79000001122 MsgBox Val(«+7(900)000-11-22») ‘Результат: 7 MsgBox Val(«-7-900-000-11-22») ‘Результат: -7 End Sub |
Определение версии Excel
Определение текущей версии приложения Excel из кода VBA с помощью функций Application.Version и Val:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub ВерсияПриложения() Dim a As String Select Case Val(Application.Version) Case Is = 9 a = » (Excel 2000)» Case Is = 10 a = » (Excel 2002)» Case Is = 11 a = » (Excel 2003)» Case Is = 12 a = » (Excel 2007)» Case Is = 14 a = » (Excel 2010)» Case Is = 15 a = » (Excel 2013)» Case Is = 16 a = » (Excel 2016)» Case Is = 17 a = » (Excel 2019)» Case Is < 9 a = » (старее Excel 2000)» Case Is > 17 a = » (новее Excel 2019)» Case Else a = «» End Select MsgBox «Версия приложения « & Application.Version & a End Sub |
Здесь функция Val необходима из-за того, что функция Application.Version возвращает номер версии приложения в текстовом формате:
Для определения текущей версии Excel используйте такой код:
Sub Excel_Version() Dim Ver As String Select Case Val(Application.Version) Case Is <9: Ver = "Microsoft Excel 20-го века" Case 9: Ver = "Microsoft Excel 2000" Case 10: Ver = "Microsoft Excel 2002" Case 11: Ver = "Microsoft Excel 2003" Case 12: Ver = "Microsoft Excel 2007" Case 14: Ver = "Microsoft Excel 2010" Case 15: Ver = "Microsoft Excel 2013" Case 16: Ver = "Microsoft Excel 2016" Case 17: Ver = "Microsoft Excel 2019" Case 18: Ver = "Microsoft Excel 2021" Case Else: Ver = "Версия не определена" End Select MsgBox "Вы работаете в " & Ver End Sub
GenaY 383 / 209 / 5 Регистрация: 29.05.2013 Сообщений: 337 |
||||
1 |
||||
20.11.2013, 00:50. Показов 5912. Ответов 5 Метки нет (Все метки)
Здравствуйте.
Может кто знает, как из VBA узнать версию Exсel у объекта Excel.Application
0 |
mobile 26777 / 14456 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
||||
20.11.2013, 02:07 |
2 |
|||
Может кто знает, как из VBA узнать версию Exсel у объекта Excel.Application Свойство Version переменной типа Excel.Application:
1 |
Серж_87 |
20.11.2013, 18:59
|
Не по теме: Вопроса темы не касается…
Dim Эксель, Книга, Лист As Object разве в ВБА так прокатит? по по-моему каждую отдельно нужно писать
1 |
26777 / 14456 / 3192 Регистрация: 28.04.2012 Сообщений: 15,782 |
|
20.11.2013, 19:20 |
4 |
Решение Так, конечно, очень неаккуратно. Но пройдет, поскольку переменная с необъявленным типом будет иметь тип Variant, который может принимать любые типы. Каждой переменной следует объявлять тип по отдельности, групповые назначения (одно на строку) не катят.
3 |
GenaY 383 / 209 / 5 Регистрация: 29.05.2013 Сообщений: 337 |
||||
20.11.2013, 20:42 [ТС] |
5 |
|||
Так, конечно, очень неаккуратно. Но пройдет, поскольку переменная с необъявленным типом будет иметь тип Variant, который может принимать любые типы. Каждой переменной следует объявлять тип по отдельности, групповые назначения (одно на строку) не катят. В VB прокатывало. Исправлю конечно же.
0 |
1300 / 506 / 63 Регистрация: 09.08.2012 Сообщений: 2,056 |
|
20.11.2013, 20:44 |
6 |
В VB прокатывало на сколько я знаю в VBA и VB6 это не прокатит. А в VB.net можно
0 |
- Remove From My Forums
-
Вопрос
-
Есть ли встроенное свойство или функция чтобы узнать какое у меня установлен офис?
На одном компьютере установлен русскоязычный пакет офиса. На моем компьютере установлен английский пакет офиса.
Из-за этого различие в формулах Excel: у меня английские, там русские.К сожалению условное форматирование привязано к формулам Excel. например,
Dim selectio as range
…
With selectio.FormatConditions.Add Type:=xlExpression, Formula1:= _
«=IF(ISBLANK(R» & i & «C10);FALSE;TRUE)»
.FormatConditions(.FormatConditions.Count).SetFirstPriority
End WithWith selectio.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
selectio.FormatConditions(1).StopIfTrue = FalseВот на одном компьютере он понимает английские формулы. А на русском Экселе этот скрипт не работает.
Если бы можно было определить английский или русский эксель — можно было бы вставить нужную формулу на английском или русском.Может из .Net что-нибудь есть assembly information об установленном офисе что будет работать в VBA?
Ответы
-
решение найдено. Не совсем то что я спрашивал (даже совсем не то что я спрашивал), но мою проблему решает
https://msdn.microsoft.com/en-us/goglobal/bb964664? Application.LanguageSettings.LanguageID(msoLanguageIDUI)
-
Изменено
23 ноября 2015 г. 19:43
-
Помечено в качестве ответа
ЖукMVP, Moderator
31 января 2016 г. 0:57
-
Изменено
-
Почему Вы решили, что команда =ИНФОРМ(«версия») одна и та же для Русской и Английской локали?
Думаю, что русская формула на английской локали, работать попросту не будет, так же попробуйте английскую формулу запустить на русской локали.
Да, я Жук, три пары лапок и фасеточные глаза :))
-
Помечено в качестве ответа
ЖукMVP, Moderator
31 января 2016 г. 0:56
-
Помечено в качестве ответа