
レジストリの値をExcelVBAの変数に代入したいと思ってます。
レジストリエディタにての階層は、
「HKEY_CURRENT_USER」→「Software」→「Autodesk」→「AutoCAD LT」
→「R2000」→「ACLT-1:411」→「FixedProfile」→「General」
(名前)P1、(種類)REG_SZ、(データ)1,1
このとき(名前)を探して(データ)を変数に代入したいと考えています。
ソースとしては、どんな感じになりますでしょうか?
知恵をかして頂ければと思っています。
又、レジストリを参照する際の注意点と言いますか、一歩間違えば
とんでしまうと聞いた事ありますので、アドバイスしてありましたら
教えて頂ければと思っています。
よろしくお願いします。
-------------------------------------------------------
Excel2000、AutoCAD LT2000、WindowsXPの環境で行います。

No.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
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

No.1
- 回答日時:
この回答への補足
早々の回答ありがとうございます。
今のところ、読むだけの処理しか考えていませんので、その場合は
致命傷に至る程の事にはならないと、解釈していいのでしょうか?
又、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関数を使用とする方法とするようですが、その方法を教えて頂け
ると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
ラズベリーパイ B でgpioを使っ...
-
エラーの意味は? Lvalue req...
-
プログラミングで変数と関数の...
-
VBA 1行で複数の代入を行った...
-
jsp~jspにhiddenを使って変数...
-
Variant型で宣言してるのにEmpt...
-
コンボボックスの名前を変数に...
-
世界のナベアツ
-
VBAの定数の使い方で、計算値を...
-
VB 配列の内容をファイルに書...
-
excelの、ある数式内の{}の意...
-
VB6で配列を文字列に変換する方...
-
余剰演算子について教えてください
-
【エクセル】 関数による電子...
-
2つの列で重複するキーの数と...
-
ラジオボタンの値の取得につい...
-
足して100になるような乱数のア...
-
vbsでテキストファイル内の文字...
-
配列の座標指定について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
テキストボックスの値を変数に...
-
[VBS]変数を定数に変換する方法...
-
C言語 列挙型(enum型)変数について
-
processing エラーで、 "cannot...
-
Serialize(CArchive& ar)にて
-
整数xxxが大き過ぎますというエ...
-
最小二乗法
-
Variant型で宣言してるのにEmpt...
-
ラズベリーパイ B でgpioを使っ...
-
VBA 1行で複数の代入を行った...
-
C言語 アロー演算子について質...
-
processing "フラグcheckをfals...
-
Accessコンボボックスにレコー...
-
サブwindowをオープンして外部...
-
VBA 一つの変数への追加、selec...
-
【Excelマクロ】グラフの最小値...
おすすめ情報