Geçenlerde bize email yolu ile ulaşan bir takipçimiz vbs ile Microsoft office versionunu görüntületmek istediğini ve bu konuda gerekli kodları paylaşırsak memnun olacağını yazmış, bu yazı konumuzda bu iş yapmaya
'www.sordum.net - 22.01.2017 Set objWord = CreateObject("Word.Application") Select Case objWord.Version Case "16.0" MsgBox ("Office 2016 is installed") Case "15.0" MsgBox ("Office 2013 is installed") Case "14.0" MsgBox ("Office 2010 is installed") Case "12.0" MsgBox ("Office 2007 is installed") Case "11.0" MsgBox ("Office 2003 is installed") Case "10.0" MsgBox ("Office XP is installed") Case "9." MsgBox ("Office 2000 is installed") Case "8." MsgBox ("Office 97 is installed") Case "7." MsgBox ("Office 95 is installed") End Select objWord.Quit
Üstteki kod uygulandığında ekrana aşağıdaki çıktıyı verecektir
gel gelelim dikkat edilirse burada bakılan şey "Word.Application" yani Microsoft Word tur , peki ama Office bileşenlerini seçmeli kurmuş biri sadece excel ve Access i kurmuşsa ne olacak , kaldıki bu yöntemin ekrana Office sürümünü getirmesi 3-5 sn den uzun sürebilmektedir (sisteme bağlı olarak) , diğer bir metod ise registry kayıtlarından Office bilgisi çekmektir , belkide en hızlı yöntem budur , Kodlar registrydeki aşağıdaki yere bakmakta ve version bilgisini çekmektedir
HKEY_CLASSES_ROOT\word.Application\CurVer\
gel gelelim burada da üstteki sıkıntı mevcuttur ya Microsoft word kurulu değilse ? ayrıca çıktı ekrana sadece rakamdan oluşan bir version bilgisi sunmaktadır mesela :
Buda kullanıcının office sürüm numaralarını bilmesini gerektirirki pek kullanışlı değildir işte kodları
Option Explicit Dim oShell Dim sOSVersion Dim OfficeVersion Set oShell = CreateObject("WScript.Shell") On Error Resume Next OfficeVersion = GetOfficeVersionNumber() MsgBox "OfficeVersion = " & OfficeVersion Function GetOfficeVersionNumber() GetOfficeVersionNumber = "" Dim sTempValue sTempValue = oShell.RegRead("HKCR\word.Application\CurVer\") If Len(sTempValue) > 2 Then GetOfficeVersionNumber = Replace(Right(sTempValue, 2), ".", "") End Function
Elbette üstteki kodlara ilk kodlardaki case yaklaşımı uygulanabilir böylece herhangi bir if - Else ye bulaşmadan direkt eğer rakam şununla eşleşiyorsa ekrana karşısında yazanı çıkar diyebiliriz
bunun hazır halini ve ilaveten 3 farkı yaklaşımı sayfa sonundaki indirme linkinden indirip kullanabilirsiniz , indirilen dosyanın içerisinde 4 farklı vbs scripti mevcuttur aralarında en yavaş çalışanı "office_version4.vbs" dir Çıktıyı yaklaşık 1-2 dk sonra ekrana getirmektedir fakat en ayrıntılı version bilgisini sunmaktadır.Eğer script kullanmadan mevcut Office bileşenlerinin birinden Office versionunu öğreneceksek Buradaki yöntem işe yarayacaktır.
yok güvenlik değilde hem office hemde windowsun sürümünü verirken mesela officeninkini aşırı geç verdiği için scripti kapatmak istediğinde kapanmaması
Aynı anda hem windows sürüm ofis sürümü veriyor. Sıkıntılı derken düvenlikle alakalı olsa gerek değil mi? Mailine bakarmısın, Tarkan abi.?!
sağol ismail lakin o kod sıkıntılı o sebeple editledim , işletim sistemi bulma konusunda çok daha ayrıtılısı ve sorunsuzu paylaşılmıştı (Aşağıdaki link)
Web Link ...
Tarkan abi buda benden olsun; Aşağıdaki kod (vbs) Windows sürümünü belirler.
Edit: velociraptor
Geri bildirim için teşekürler selim , selamlar
hepsini denedim çalışıyor. teşekkürler. geç açılması önemli değil. Ellerinize sağlık.