- ベストアンサー
VBAのレジストリについて、教えて下さい。
あるアプリケーションソフトのレジストリ情報を VBA(Excel97 に付いてきた)にてGETしたいので"GetSetting関数"を使用すると [HKEY_USERS]-[Default]-[Software]-[VB and VBA Program Settings] の下の情報しかGET出来ません。 欲しい情報は、例えば [HKEY_USERS]-[Default]-[Software]-[ODBC]-[ODBC.INI]-[Excel Files] の Driverの値です。 やはりDLLを作成するしか無いのでしょうか?? 誰か教えて下さい。出来れば、簡単ならコマンドを記載orHPの紹介でも良いです。ヒントだけでも、本の紹介でも構いません。アドバイス下さい。 お願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
GETしたい情報は 文字列?バイナリ?DWORD値?とりあえず、 文字列と想定して(勝手に)↓ Private Declare Function RegCloseKey Lib "ADVAPI32" (ByVal hKey As Long) As Long Private Declare Function RegOpenKeyEx Lib "ADVAPI32" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegQueryValueExstr Lib "ADVAPI32" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, ByVal lpType As Long, ByVal lpDat As String, lpcbData As Long) As Long Const HKEY_USERS = &H80000003 Const ERROR_SUCCESS = 0& '++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Sub Samp() Dim A As String Dim B As Long Dim Name As String Dim Rootkey As String Dim Subkey As String Dim C As Long Dim D As Integer Rootkey = HKEY_USERS Subkey = ".Default\Software\ODBC\ODBC.INI\Excel Files" Ret = RegOpenKeyEx(Rootkey, Subkey, 0, 1, C) Name = "Driver" A = String(250, Chr(0)) B = Len(A) D = RegQueryValueExstr(C, Name, 0, 0, A, B) If D = ERROR_SUCCESS Then MsgBox A Else MsgBox "NG" End If Call RegCloseKey(C) End Sub で、取得出来ると思いますが・・・ただしExcel2000のVBAで動作確認です。 趣旨が間違っていればごめんなさい m(_ _)m
その他の回答 (1)
- millionwalker
- ベストアンサー率46% (22/47)
Win32APIのRegOpenKeyExやRegQueryValueExなどを使いましょう。 VBやVBAから使う場合は、DeclareでDLLの中の関数を宣言する必要があります。 APIビューアがあれば便利なんですが。 とりあえず、検索してみましょう。
お礼
おりがとうございます。m(__)m Excel97のVBAでも動作いたしました。助かりました。本当に、ありがとうございました。