レジストリの値を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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
jsp~jspにhiddenを使って変数...
-
ASP+SQLにてSessionがNullになる
-
プログラミングで変数と関数の...
-
構造体からレコードセットへの代入
-
python の 連鎖代入の文法
-
EXCEL/VBA 変数の値をクリップ...
-
だれがとけるの?
-
整数xxxが大き過ぎますというエ...
-
VB6.0での条件文にある#の意味
-
[VBS]変数を定数に変換する方法...
-
テキストボックスの値を変数に...
-
C言語 exitの使い方
-
フォームを開くときに、コンボ...
-
配列の値を置換するにはどうす...
-
excelの、ある数式内の{}の意...
-
Windows Media Playerで動画を...
-
DataGridView 複数行同時変更...
-
vbaで極大値を抽出する方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでダブルコーテーション入り...
-
エラーの意味は? Lvalue req...
-
[VBS]変数を定数に変換する方法...
-
EXCEL/VBA 変数の値をクリップ...
-
jsp~jspにhiddenを使って変数...
-
テキストボックスの値を変数に...
-
processing エラーで、 "cannot...
-
Variant型で宣言してるのにEmpt...
-
整数xxxが大き過ぎますというエ...
-
C言語 アロー演算子について質...
-
プログラミングで変数と関数の...
-
Excel VBAでイコール二回使えま...
-
python の 連鎖代入の文法
-
Accessコンボボックスにレコー...
-
stdpicture型の変数に、、
-
C言語 列挙型(enum型)変数について
-
変数にオフセットが付いている...
-
複数の代入オペレーターオーバ...
-
【VBA】複合代入演算子
-
VBA 1行で複数の代入を行った...
おすすめ情報