KoMaDo   VISIO SQUARE : 雑談その他  ■ Headline ■ HOME    

雑談その他トップへ ▼カッ飛び最後 

  Visioのエディション

01: 名前:yoda投稿日:2007/08/13(月) 15:03
Visioのバージョンは、Application.Version プロパティで取得できますが、
エディション(Standard、Professional など)は、取得できません。
エディションを取得するには、レジストリーを見れば、良いそうです。
そこで、レジストリを見て、取得するVBAマクロを作ってみました。
VBA の Module1 に、以下のコード、を入れます。
ここでは、API関数を定義しています。
Option Explicit

Public Declare Function RegCloseKey Lib "ADVAPI32" (ByVal hKey&) As Long
Public Declare Function RegOpenKeyEx Lib "ADVAPI32" Alias "RegOpenKeyExA" (ByVal hKey&, ByVal lpSubKey$, ByVal ulOptions&, ByVal samDesired&, phkResult&) As Long
Public Declare Function RegQueryValueExstr Lib "ADVAPI32" Alias "RegQueryValueExA" (ByVal hKey&, ByVal lpValueName$, ByVal lpReserved&, ByVal lpType&, ByVal lpData$, lpcbData&) As Long

Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const ERROR_SUCCESS = 0&

Sub FindEdition()
UserForm1.Show
End Sub

次に、フォームを作って、テキストボックスやボタンを付けます。
テキストボックスのオブジェクト名は、TextBox1 というのを、
Text1 というように、変更してあります。ボタンも同様です。
次に、フォームに以下のコードを入れます。
Option Explicit


Private Sub Command1_Click()

Dim Valuedata As String
Dim Length As Long
Dim Name As String
Dim Version As String
Dim Edition As String
Dim InstVer As String

Dim RootKey As Long
Dim SubKey As String
Dim Handle As Long
Dim Ret As Long

RootKey = HKEY_LOCAL_MACHINE
SubKey = "SOFTWARE\Microsoft\Office\" & Application.Version & "\Visio"

Ret = RegOpenKeyEx(RootKey, SubKey, 0, 1, Handle)

Version = "CurrentlyRegisteredVersion"
Edition = "Edition"
InstVer = "InstalledVersion"

Valuedata = String(250, Chr(0))
Length = Len(Valuedata)
Ret = RegQueryValueExstr(Handle, Version, 0, 0, Valuedata, Length)
Text1.Text = Valuedata

Valuedata = String(250, Chr(0))
Length = Len(Valuedata)
Ret = RegQueryValueExstr(Handle, Edition, 0, 0, Valuedata, Length)
Text2.Text = Valuedata

Valuedata = String(250, Chr(0))
Length = Len(Valuedata)

Ret = RegQueryValueExstr(Handle, InstVer, 0, 0, Valuedata, Length)
Text3.Text = Valuedata

Call RegCloseKey(Handle)

End Sub

Private Sub Command2_Click()
Unload Me
End Sub

以上ができたら、Modulle1にある、testというマクロを起動すれば、
フォームが表示されますので、Command1ボタンを、押してください。
Visioのバージョン、エディションなどが表示されます。

02: 名前:yoda投稿日:2007/08/13(月) 15:06
最後の方の、testというマクロは、FindEditionの間違いでした。
訂正します。


雑談その他トップへ ▲カッ飛び先頭