Jak sprawdzić jaka wersja pakietu Office jest zainstalowana?

przez | 2024-03-23

Niektóre funkcjonalności działają dopiero w nowszych wersjach pakietu MS Office. Jak sprawdzić pod jaką wersją pakietu MS Office zostało uruchomione makro?

Możemy odczytać właściwość Application.Version.

Oto najprostszy kod:

Msgbox Application.Version

Zostanie wyświetlona liczba. Liczba ta odpowiada wersji pakietu MS Office zgodnie z poniższą tabelą:

Rok premieryNazwaWersja (wartość zwrócona przez Application.Version)
1995Excel 957.0
1997Excel 978.0
2000Excel 20009.0
2002Excel 200210.0
2003Excel 200311.0
2007Excel 200712.0
2010Excel 201014.0
2013Excel 201315.0
2016Excel 2016 (i nowsze)16.0
Źródło: wikipedia

Wersja 95 to pierwsza wersja, w której pojawił się język VBA (w wersji mocno okrojonej względem późniejszych wersji).  Ale tak naprawdę dopiero w wersji 97 nastąpiła rewolucja i pojawiła się m.in. obsługa zdarzeń i środowisko programistyczne zbliżone do Visual Basic 5.0.

Natomiast wersje od 2016 górę (np. 2029, 2021, Office 365) zwracają wartość 16.0 – nie ma prostego sposobu na rozróżnienie tych wersji.

Zwróć uwagę na pewną ciekawostkę: nie istnieje wersja 13.0 (mamy wersję 12.0 czyli Office 2007 a potem 14.0 czyli Office 2010). Jak widać firma Microsoft wierzy w zabobony 😉

Wartość zwrócona przez Application.Version to tekst (liczba dziesiętna z kropką, po liczbie może występować również jakaś literka, np. najstarsza wersja pakietu Excela z jaką miałem do czynienia zwraca mi wartość 7.0a). Taką wartość należy przekonwertować na liczbę np. za pomocą instrukcji Val. Oto przykładowy kod zwracający opisowy numer wersji programu Excel:

Sub JakaWersja()
    Dim Wersja As Long
    Dim WersjaOpis As String
    
    Wersja = Val(Application.Version)
    
    Select Case Wersja
        Case 7: WersjaOpis = "Excel 95"
        Case 8: WersjaOpis = "Excel 97"
        Case 9: WersjaOpis = "Excel 2000"
        Case 10: WersjaOpis = "Excel 2002"
        Case 11: WersjaOpis = "Excel 2023"
        Case 12: WersjaOpis = "Excel 2007"
        Case 13: WersjaOpis = "Taka wersja nie istniała, w Microsofcie wierzą w zabobony ;-)"
        Case 14: WersjaOpis = "Excel 2010"
        Case 15: WersjaOpis = "Excel 2013"
        Case 16: WersjaOpis = "Excel 2016 lub nowszy lub Excel 365"
        Case Else: WersjaOpis = "Nieprawidłowa wartość??"
    End Select
    
    MsgBox "Numer wersji: " & Application.Version & vbCrLf & "Opis: " + WersjaOpis, vbInformation
End Sub

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.