アプリ版:「スタンプのみでお礼する」機能のリリースについて

レジストリの値をExcelVBAの変数に代入したいと思ってます。
レジストリエディタにての階層は、
「HKEY_CURRENT_USER」→「Software」→「Autodesk」→「AutoCAD LT」
→「R2000」→「ACLT-1:411」→「FixedProfile」→「General」
(名前)P1、(種類)REG_SZ、(データ)1,1

このとき(名前)を探して(データ)を変数に代入したいと考えています。
ソースとしては、どんな感じになりますでしょうか?
知恵をかして頂ければと思っています。
又、レジストリを参照する際の注意点と言いますか、一歩間違えば
とんでしまうと聞いた事ありますので、アドバイスしてありましたら
教えて頂ければと思っています。
よろしくお願いします。
-------------------------------------------------------
Excel2000、AutoCAD LT2000、WindowsXPの環境で行います。

A 回答 (2件)

読むだけでしたら、問題はないと思います。



下記2.が参考になると思います。
vb6で書かれていますが、もっていなければmodule1.basをノートパッドなどで開くことで、コードを見ることができると思います。

レジストリを読むのに必要な部分は、
Function GetReg の部分とそこで使われている三つのapi、
RegOpenKey,RegQueryValueEx,RegCloseKey
です。

フォームのほうから GetReg関数を呼んでいてその引数は
If GetReg(HKEY_CURRENT_USER, "Control Panel\desktop", "ScreenSaveActive") = 0 then
となっています。

(自身→自信 失礼しました)

参考URL:http://www.vbstation.net/sample/0217.htm
    • good
    • 0
この回答へのお礼

Excelにて成功しました。以下の様な感じになりました。
有り難うございます。

Option Explicit
Public Const ERROR_SUCCESS = 0
Public Const HKEY_CURRENT_USER = &H80000001
Public Const KEY_QUERY_VALUE = &H1&
Public Const REG_SZ = 1

Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, _
ByVal lpSubKey As String, ByVal ulOptions As Long, _
ByVal samDesired As Long, phkResult As Long) As Long

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" _
(ByVal hKey As Long, ByVal lpValueName As String, _
ByVal lpReserved As Long, lpType As Long, lpData As Any, _
lpcbData As Long) As Long

Sub Sample()
Dim lngKey As Long
Dim strSubKey As String
Dim lngResult As Long
Dim strBuffer As String * 80
Dim strBinary As String
Dim rc As Long

lngKey = HKEY_CURRENT_USER
strSubKey = "Software\Microsoft\Windows\CurrentVersion\Test"

rc = RegOpenKeyEx(lngKey, strSubKey, 0&, KEY_QUERY_VALUE, lngResult)

If rc <> ERROR_SUCCESS Then
MsgBox "関数の呼び出しに失敗しました"
Exit Sub
End If

strSubKey = "String"
rc = RegQueryValueEx(lngResult, strSubKey, 0&, REG_SZ, ByVal strBuffer, Len(strBuffer))

'値の表示
MsgBox Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
Call RegCloseKey(lngResult)
End Sub

お礼日時:2007/03/27 15:55

自身がないなら、値を読むだけにしておいたほうがよいと思います。



参考URL:http://homepage1.nifty.com/MADIA/vb/Tecnick/VBRE …

この回答への補足

早々の回答ありがとうございます。
今のところ、読むだけの処理しか考えていませんので、その場合は
致命傷に至る程の事にはならないと、解釈していいのでしょうか?
又、URLを参照しましたが、
HKEY_CURRENT_USER\Software\VB and VBA Progrm settings
にしか参照できない様な記載になってますが、
その点は、質問に書いている様に
「HKEY_CURRENT_USER」→「Software」→「Autodesk」→「AutoCAD LT」
→「R2000」→「ACLT-1:411」→「FixedProfile」→「General」
(名前)P1、(種類)REG_SZ、(データ)1,1
の値を獲得したいと考えています。
API関数を使用とする方法とするようですが、その方法を教えて頂け
ると助かります。

補足日時:2007/03/26 21:29
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!