Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1676to1680
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prüfen, ob Password-Schutz vorhanden

Prüfen, ob Password-Schutz vorhanden
04.03.2019 01:15:49
Peter
Liebe VBA-Spezialisten,
jetzt habe ich lange im Internet gesucht, jedoch keine brauchbare Lösung für mein Problem gefunden. Es geht mir darum, per VBA-Code feststellen zu können, ob eine bestimmte Datei mit einem Password-Schutz belegt ist oder nicht. Und dies unbedingt vor dem Öffnen dieser Datei. Hintergrund: Vermeidung des Öffnens einer nicht durch Password geschützten Datei, die evtl. auf einem Datenträger (illegal) untergeschoben wurde und Schad-Code enthält. In Excel 2016 wird beim Öffnen einer Datei, die normalerweise mit einem Password geschützt ist, auch eine Datei gleichen Namens, die nicht durch Password geschützt ist, geöffnet. Ein Abgleich des tatsächlich nicht vorhandenen Passwords mit dem im VBA-Code eingegebenen Password findet offensichtlich nicht statt; normalerweise müsste das Öffnen der Datei abgelehnt werden, da nicht mit "...password:=""" bzw. ohne Password aufgerufen wurde. Hat jemand eine Idee?
M.f.G. Peter Kloßek

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Prüfen, ob Password-Schutz vorhanden
04.03.2019 08:32:06
Nepumuk
Hallo Peter,
versuch auf die Datei per ADO zuzugreifen. Wenn du in einen Fehler läufst dann ich die Mappe mit einem Kennwort geschützt.
Ein Beispielcode:
Public Sub Test()
    
    Dim objConnection As Object
    Dim strConnection As String
    Dim strWorkbook As String
    
    strWorkbook = "H:\Mappe1.xlsm"
    
    Set objConnection = CreateObject("ADODB.Connection")
    
    strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Data Source=" & strWorkbook & ";" & _
        "Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=0"""
    
    On Error GoTo err_exit
    
    Call objConnection.Open(strConnection)
    
    MsgBox "Nicht geschützt"
    
    sub_exit:
    
    objConnection.Close
    
    Set objConnection = Nothing
    
    Exit Sub
    
    err_exit:
    
    MsgBox "geschützt"
    
    Resume sub_exit
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Prüfen, ob Password-Schutz vorhanden
06.03.2019 14:20:08
Peter
Hallo Nepumuk,
vielen Dank für Deinen Lösungsansatz. Aufgrund einer fiebrigen Erkältung kam ich erst heute dahzu, zu testen. Das Makro läuft in einer Schleife endlos dahin. Und bei einer nicht geschützten Datei kommt der Hinweis "geschützt".
M.f.G. Peter Kloßek
AW: Prüfen, ob Password-Schutz vorhanden
06.03.2019 14:33:11
Nepumuk
Hallo Peter,
kann ich nicht nachvollziehen. Das funktioniert bei mir ohne Probleme, da ist auch keine Schleife drin.
Ich habe es aber "nur" mit xlsm-Dateien getestet. Für xls- oder xlsx-Dateien müsste an den "Extended Properties" etwas geändert werden. Aber dazu bräuchte ich mehr Informationen zum zu testenden Dateityp.
Gruß
Nepumuk
Anzeige
AW: Prüfen, ob Password-Schutz vorhanden
06.03.2019 20:04:19
Nepumuk
Hallo Peter,
hier die verschiedenen Connection-Strings:
Dim avntTemp As Variant

strWorkbook = "H:\Mappe1.xlt"

avntTemp = Split(strWorkbook, ".")

Select Case LCase$(avntTemp(UBound(avntTemp)))
    Case "xlsm"
        strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & strWorkbook & ";" & _
            "Extended Properties=""Excel 12.0 Macro;HDR=No;IMEX=0"""
    Case "xlsx"
        strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & strWorkbook & ";" & _
            "Extended Properties=""Excel 12.0 Xml;HDR=No;IMEX=0"""
    Case "xlsb"
        strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & strWorkbook & ";" & _
            "Extended Properties=""Excel 12.0;HDR=No;IMEX=0"""
    Case "xls"
        strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
            "Data Source=" & strWorkbook & ";" & _
            "Extended Properties=""Excel 8.0;HDR=No;IMEX=0"""
    Case Else
        Call MsgBox("Unbekannter Dateityp", vbCritical, "Fehler")
        Exit Sub
End Select

Gruß
Nepumuk
Anzeige
AW: Prüfen, ob Password-Schutz vorhanden
07.03.2019 11:54:54
Peter
Hallo Nepumuk,
die Dateiendung ".xlsm" war schon richtig. Anstelle von "H:\Mappe1.xlsm" habe ich meine Arbeitsmappe angegeben. Weiteres war doch nicht zu beachten? Das Makro verlief in einer Endlos-Schleife und konnte nur gewaltsam gestoppt werden. Ich arbeite mit Windows 10 und Office/Excel 2016. Es soll schon mal vorkommen, dass Makros in einer höheren Excel-Version plötzlich nicht mehr funktionieren.
M.f.G. Kloßek
AW: Prüfen, ob Password-Schutz vorhanden
09.03.2019 09:21:31
Oberschlumpf
Hi Peter,
hast du den Code mit F8 mal von Beginn an im Einzelschrittmodus durchlaufen lassen?
An welcher Stelle genau kommt es zu einem Fehler?
Ciao
Thorsten
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige