Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2407 / 76734 ←次へ | 前へ→

【79970】レジストリについて。
質問  瞬希  - 18/6/10(日) 9:25 -

引用なし
パスワード
   おはようございます、また皆様のお知恵をお貸しください。

当方、会社で1台のPCを数人で入れ替わり使用する仕事があるのですが、ある方が「フォルダーオプション」の「表示」タブから「登録されている拡張子は表示しない」をチェックを外して使用しています(拡張子を表示させてしまいます)。

元に戻して。と言えば良いだけなのでしょうが、なんとなく言い辛いです(説明が難しいですが・・・)、自分で非表示にするのも結構大変で・・・。

私が、常に使用するエクセルブックがあるためマクロで拡張子を非表示にしたと考えています。
ネットなどを見て周り、見よう見まねで状態が「表示」なのか?「非表示」なのか?までは取得できるようになったのですが書き換えが上手くできません。

どこが間違っているのか?足りない部分等、教えていただけると幸いです。

環境はwin7/Excel2013となっています。

'☆☆☆☆拡張子の表示/非表示関連☆☆☆☆
'キーアクセスオプションを定義する為に必要
Private Const KEY_SET_VALUE = &H2 'サブキーの書き込みを許可

Public Const ERROR_SUCCESS = 0 'エラー無し
Public Const HKEY_CURRENT_USER = &H80000001 '現在のユーザーの設定に対するHKEY_USERのリンク
Public Const KEY_QUERY_VALUE = &H1& 'サブキーの値の参照を許可
Public Const REG_DWORD = 4 'ネイティブ形式の32ビット値

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 'サブキーの指定の値の取得

 Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" _
 (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, _
 ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long 'レジストリの書き換え
'☆☆☆☆拡張子の表示/非表示関連☆☆☆☆

Sub TEST_Folder_Option() 'フォルダオプションの変更

Dim lngKey As Long
Dim strSubKey As String
Dim lngResult As Long
Dim lngAnswer As Long '値(DWORDの値用)
Dim Size As Long
Dim strNewData As Long
Dim rc As Long

lngKey = HKEY_CURRENT_USER
strSubKey = "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"

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

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

strSubKey = "HideFileExt"
rc = RegQueryValueEx(lngResult, strSubKey, 0&, REG_DWORD, lngAnswer, Len(lngAnswer))

'値の表示
'MsgBox lngAnswer
Size = Len(lngAnswer)
'MsgBox "+" & lngAnswer & "+"
  If lngAnswer <> 1 Then
    Debug.Print "拡張子は表示"
  '新しいデータに書き換え
    strNewData = "1"
    rc = RegSetValueEx(lngResult, strSubKey, 0&, REG_DWORD, strNewData, Size)
    
      If rc <> ERROR_SUCCESS Then
        MsgBox "書き込みに失敗しました。"
          Call RegCloseKey(lngResult)
            Exit Sub
      End If
    
  ElseIf lngAnswer = 1 Then
    Debug.Print "拡張子は非表示"
  End If
  
Call RegCloseKey(lngResult)

End Sub

5 hits

【79970】レジストリについて。 瞬希 18/6/10(日) 9:25 質問[未読]
【79971】Re:レジストリについて。 よろずや 18/6/10(日) 11:12 発言[未読]
【79972】Re:レジストリについて。 瞬希 18/6/10(日) 11:20 お礼[未読]
【79974】Re:レジストリについて。 γ 18/6/10(日) 12:00 発言[未読]
【79976】Re:レジストリについて。 瞬希 18/6/10(日) 12:18 お礼[未読]
【79977】Re:レジストリについて。 瞬希 18/6/10(日) 13:44 お礼[未読]

2407 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free