Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Explorer Ordneroption Ansicht per VBA einstellen

Forumthread: Explorer Ordneroption Ansicht per VBA einstellen

Explorer Ordneroption Ansicht per VBA einstellen
07.07.2003 15:36:17
Jürgen
Hallo,
wie kann ich per VBA im Explorer unter Extras / Ordneroptionen / Ansicht / den Punkt "Hide file extension for known file types"
aktivieren?
siehe Beispiel:

">Userbild

Gruß
Joe
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Explorer Ordneroption Ansicht per VBA einstellen
07.07.2003 17:10:46
L.Vira
''Achtung! Unbedingt vor der Manipulation der Registry eine
''Sicherungskopie erstellen!
''Der Code ist unter Windows XP gestestet, dennoch kann der Autor
''keinerlei Garantie übernehmen. Die Ausführung des Codes geschieht
''also auf eigenes Risiko!
Option Explicit
Public Const HKEY_CURRENT_USER = &H80000001
Public Const ERROR_SUCCESS = 0&
Declare

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

Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare 

Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult 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
Public Const REG_DWORD = 4

Function SaveDword(ByVal Hkey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long)
Dim lResult As Long
Dim keyhand As Long
Dim r As Long
r = RegCreateKey(Hkey, strPath, keyhand)
lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
r = RegCloseKey(keyhand)
End Function


Function GetDword(ByVal Hkey As Long, ByVal strPath As String, ByVal strValueName As String) As Long
Dim lResult As Long
Dim lValueType As Long
Dim lBuf As Long
Dim lDataBufSize As Long
Dim r As Long
Dim keyhand As Long
r = RegOpenKey(Hkey, strPath, keyhand)
lDataBufSize = 4
lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize)
If lResult = ERROR_SUCCESS Then
If lValueType = REG_DWORD Then
GetDword = lBuf
End If
Else
MsgBox "Registry- Eintrag nicht gefunden!         " & Chr(10) & _
"Überprüfen Sie die Schreibweise.", 64, "weise hin..."
End If
r = RegCloseKey(keyhand)
End Function


Sub MSG_GetDWord()
Dim lngDword As String
'DWord lesen
lngDword = GetDword(HKEY_CURRENT_USER, "Software\Microsoft\Windows\currentversion\Explorer\Advanced", "HideFileExt")
If lngDword = 0 Then
MsgBox "Bekannte Dateierweiterungen werden angezeigt.         ", 64, "gebe bekannt..."
ElseIf lngDword = 1 Then
MsgBox "Bekannte Dateierweiterungen sind ausgeblendet.         ", 64, "gebe bekannt..."
End If
End Sub


Sub MSG_SaveDword()
Dim lngDword As Long
''DWord schreiben
''0 zum Anzeigen 1 zum Ausblenden
lngDword = 0
Call SaveDword(HKEY_CURRENT_USER, "Software\Microsoft\Windows\currentversion\Explorer\Advanced", "HideFileExt", lngDword)
End Sub


Anzeige
;
Anzeige

Infobox / Tutorial

Explorer Ordneroption Ansicht per VBA einstellen


Schritt-für-Schritt-Anleitung

Um die Explorer-Ordneroptionen per VBA zu ändern und die Ansicht für bekannte Dateitypen zu steuern, folge diesen Schritten:

  1. Öffne Excel und aktiviere die Entwickleroptionen.
  2. Erstelle ein neues Modul:
    • Gehe zu Entwicklertools > Visual Basic.
    • Klicke im VBA-Editor mit der rechten Maustaste auf VBAProject (DeineDatei.xlsx) und wähle Einfügen > Modul.
  3. Füge den folgenden Code in das Modul ein:
Option Explicit
Public Const HKEY_CURRENT_USER = &H80000001
Public Const ERROR_SUCCESS = 0&
Public Const REG_DWORD = 4

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult 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

Function SaveDword(ByVal Hkey As Long, ByVal strPath As String, ByVal strValueName As String, ByVal lData As Long)
    Dim lResult As Long
    Dim keyhand As Long
    Dim r As Long
    r = RegCreateKey(Hkey, strPath, keyhand)
    lResult = RegSetValueEx(keyhand, strValueName, 0&, REG_DWORD, lData, 4)
    r = RegCloseKey(keyhand)
End Function

Function GetDword(ByVal Hkey As Long, ByVal strPath As String, ByVal strValueName As String) As Long
    Dim lResult As Long
    Dim lValueType As Long
    Dim lBuf As Long
    Dim lDataBufSize As Long
    Dim r As Long
    Dim keyhand As Long
    r = RegOpenKey(Hkey, strPath, keyhand)
    lDataBufSize = 4
    lResult = RegQueryValueEx(keyhand, strValueName, 0&, lValueType, lBuf, lDataBufSize)
    If lResult = ERROR_SUCCESS Then
        If lValueType = REG_DWORD Then
            GetDword = lBuf
        End If
    Else
        MsgBox "Registry-Eintrag nicht gefunden! Überprüfen Sie die Schreibweise.", 64, "Hinweis"
    End If
    r = RegCloseKey(keyhand)
End Function

Sub MSG_GetDWord()
    Dim lngDword As String
    lngDword = GetDword(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt")
    If lngDword = 0 Then
        MsgBox "Bekannte Dateierweiterungen werden angezeigt.", 64, "Information"
    ElseIf lngDword = 1 Then
        MsgBox "Bekannte Dateierweiterungen sind ausgeblendet.", 64, "Information"
    End If
End Sub

Sub MSG_SaveDword()
    Dim lngDword As Long
    lngDword = 1 ' 0 zum Anzeigen, 1 zum Ausblenden
    Call SaveDword(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "HideFileExt", lngDword)
End Sub
  1. Führe die Subroutine MSG_SaveDword aus, um die Ordneroptionen zu ändern.
  2. Verwende MSG_GetDWord, um den aktuellen Status zu überprüfen.

Häufige Fehler und Lösungen

  • Fehler: "Registry-Eintrag nicht gefunden!"

    • Stelle sicher, dass der Pfad und der Wert korrekt eingegeben sind. Achte auf Groß- und Kleinschreibung.
  • VBA läuft nicht auf neueren Windows-Versionen

    • Der Code wurde unter Windows XP getestet. Möglicherweise gibt es Unterschiede in den Registry-Pfaden bei neueren Windows-Versionen.

Alternative Methoden

Wenn Du nicht mit VBA arbeiten möchtest, kannst Du die Ordneroptionen auch manuell ändern:

  1. Öffne den Windows Explorer.
  2. Klicke auf Extras > Ordneroptionen.
  3. Gehe zum Tab Ansicht und aktiviere oder deaktiviere die Option "Dateinamenerweiterungen für bekannte Dateitypen ausblenden".

Praktische Beispiele

  • Beispiel 1: Dateinamenerweiterungen ausblenden

    • Verwende die MSG_SaveDword Subroutine, um Dateinamenerweiterungen auszublenden.
  • Beispiel 2: Status der Dateinamenerweiterungen abfragen

    • Mit der MSG_GetDWord Subroutine kannst Du schnell herausfinden, ob die Erweiterungen angezeigt werden oder nicht.

Tipps für Profis

  • Sicherung der Registry

    • Erstelle immer eine Sicherungskopie der Registry, bevor Du Änderungen vornimmst. Dies kannst Du über regedit machen.
  • Verwendung von Konstanten

    • Verwende die Konstanten wie HKEY_CURRENT_USER und REG_DWORD, um den Code klarer und lesbarer zu gestalten.

FAQ: Häufige Fragen

1. Kann ich den Code in einer anderen Excel-Version verwenden? Ja, der VBA-Code sollte in den meisten Excel-Versionen funktionieren, solange die Windows-Registry gleich bleibt.

2. Was passiert, wenn ich die Registry falsch bearbeite? Falsche Änderungen an der Registry können zu Systeminstabilitäten führen. Stelle sicher, dass Du eine Sicherungskopie machst, bevor Du Änderungen vornimmst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige