Excel vba как узнать версию excel

Определение используемой версии Excel — Процедуры — VBA — Готовые решения$ — Мир MS Excel

Определение используемой версии 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

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Здравствуйте.
Заполняю создаю и заполняю данными Excel файл из Access с помощью кода:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim Эксель, Книга, Лист As Object
Set Эксель = CreateObject("Excel.Application")
Set Книга = Эксель.Workbooks.Add("C:TestXltШаблон.xlt")
Set Лист = Книга.Sheets(1)
 
'Дальше, что то похожее на это только длиннее и скучнее:
Лист.Cells(1, 1) = 1 
Лист.Cells(2, 1) = 2 
Лист.Cells(3, 1) = 3
Лист.Cells(4, 1) = 4
 
'Сохраняю все в файл
Книга.SaveAs "C:TestXlsРезультат.xls"
 
'Закрываю Excel 
    If Not (Эксель Is Nothing) Then
        Эксель.Quit
        'Эксель.Visible = True 'если нужно увидеть что получилось сразу
        Set Лист = Nothing
        Set Книга = Nothing
        Set Эксель = Nothing
    End If

Может кто знает, как из VBA узнать версию Exсel у объекта Excel.Application
Мне в зависимости от версии Exсel 2003 или Exсel 2010 по разному заполнять файл нужно.



0



mobile

Эксперт MS Access

26777 / 14456 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

20.11.2013, 02:07

2

Цитата
Сообщение от GenaY
Посмотреть сообщение

Может кто знает, как из VBA узнать версию Exсel у объекта Excel.Application
Мне в зависимости от версии Exсel 2003 или Exсel 2010 по разному заполнять файл нужно.

Свойство Version переменной типа Excel.Application:

Visual Basic
1
debug.print Эксель.Version



1



Серж_87

20.11.2013, 18:59

Не по теме:

Вопроса темы не касается…

Цитата
Сообщение от GenaY
Посмотреть сообщение

Dim Эксель, Книга, Лист As Object

разве в ВБА так прокатит? по по-моему каждую отдельно нужно писать
Dim Эксель As Object
Dim Книга As Object
Dim Лист As Object



1



Эксперт MS Access

26777 / 14456 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

20.11.2013, 19:20

4

Лучший ответ Сообщение было отмечено как решение

Решение

Так, конечно, очень неаккуратно. Но пройдет, поскольку переменная с необъявленным типом будет иметь тип Variant, который может принимать любые типы.
Но вы,emenem97, правы еще и в том смысле, что ТС видимо не точно знает как объявлять типы в ВБА.

Каждой

переменной следует объявлять тип по отдельности, групповые назначения (одно на строку) не катят.



3



GenaY

383 / 209 / 5

Регистрация: 29.05.2013

Сообщений: 337

20.11.2013, 20:42

 [ТС]

5

Цитата
Сообщение от mobile
Посмотреть сообщение

Так, конечно, очень неаккуратно. Но пройдет, поскольку переменная с необъявленным типом будет иметь тип Variant, который может принимать любые типы.
Но вы,emenem97, правы еще и в том смысле, что ТС видимо не точно знает как объявлять типы в ВБА.

Каждой

переменной следует объявлять тип по отдельности, групповые назначения (одно на строку) не катят.

В VB прокатывало. Исправлю конечно же.

Visual Basic
1
Dim Эксель As Object, Книга As Object, Лист As Object



0



1300 / 506 / 63

Регистрация: 09.08.2012

Сообщений: 2,056

20.11.2013, 20:44

6

Цитата
Сообщение от GenaY
Посмотреть сообщение

В 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 With

    With 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

Понравилась статья? Поделить с друзьями:
  • Excel vba как удалить форму
  • Excel vba как удалить строку целиком
  • Excel vba как удалить строки по условию
  • Excel vba как удалить связи
  • Excel vba как удалить книгу