Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1340to1344
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

Kompilierungsfehler im Modul

Kompilierungsfehler im Modul
02.12.2013 15:23:26
Ralf
Hallo Forum,
ich habe folgenden Code und bekomme nun bei Öffnen der Mappe einen Kompilierungsfehler im Modul 9:
Ein geschütztes Modul kann nicht angezeigt werden. Für diesen Fehler gibt es die folgende Ursache und Lösung:
Im Code des angegebenen Moduls ist ein Kompilierungsfehler aufgetreten, der aber nicht angezeigt werden kann, weil das Projekt geschützt ist.
Heben Sie den Schutz des Projekts auf, und führen Sie dann den Code erneut aus, um den Fehler anzuzeigen.
Hier der Code:
Option Explicit
Declare

Function GetUserName Lib "advapi32.dll" _
(ByVal lpBuffer As String, nSize As Long) As Long

Sub UserName()
Dim Buffer As String * 100
Dim BuffLen As Long
BuffLen = 100
GetUserName Buffer, BuffLen
'Windows Benutzernamen hier anpassen
If Left(Buffer, BuffLen - 1) = "MasterOfDesaster" Then 'Groß- bzw. Kleinschreibung ist zu  _
beachten!!!
Call Blattschutz_alle_Tabellen_aufheben
End If
End Sub

Sub Blattschutz_alle_Tabellen_aufheben()
Dim i As Worksheet
For Each i In ActiveWorkbook.Worksheets
i.Unprotect Password:="passwort"
Next i
End Sub

Sub Blattschutz_alle_Tabellen()
Dim i As Worksheet
For Each i In ActiveWorkbook.Worksheets
i.Protect Password:="passwort", DrawingObjects:=True, Contents:=True, Scenarios:=True,  _
AllowFiltering:=True
Next i
ThisWorkbook.Save
End Sub

Weiß jemand, warum es hier einen Fehler gibt?
Vielen Dank im Voraus für eine Rückmeldung.
Viele Grüße
Ralf

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kompilierungsfehler im Modul
02.12.2013 15:27:54
Hajo_Zi
Hallo Ralf,
Du solltest den Code unter einem Modul ablegen.

AW: Kompilierungsfehler im Modul
02.12.2013 15:32:31
Ralf
Hallo Hajo,
das habe ich gemacht.
Der Code steht unter Modul9.
Viele Grüße
Ralf

Dim Buffer As String * 100 ist Quatsch! Man ...
02.12.2013 15:33:12
Luc:-?
…kann doch einen Text (String) nicht mit 100 multiplizieren und schon gar nicht bei Deklaration, Ralf!
Außerdem solltest du dir angewöhnen, für geposteten PgmCode die HTML-pre-Tags (Button im AW-Formular-Kopf!) zu benutzen, damit die Forumssoftware den dann nicht so verstümmelt wie hier zu sehen.
Gruß Luc :-?

Anzeige
Das ist eine Längedefinition von String! (owT)
02.12.2013 16:16:08
String!

Leider ist das in der VBE-Hilfe sehr gut ...
03.12.2013 01:19:14
Luc:-?
…versteckt oder gar nicht erst erwähnt, Eto!
Ansonsten hatte ich mich auch schon über den API-Einsatz gewundert. Im Archiv sind doch genug Bspp ohne das!
Gruß Luc :-?

AW: Leider ist das in der VBE-Hilfe sehr gut ...
03.12.2013 06:08:25
Ralf
Danke für Eure Rückmeldungen.
Was muss ich denn nun ändern?
Viele Grüße
Ralf

Hab ich doch unten geschrieben ...
03.12.2013 07:05:29
EtoPHG
Ralf,
Die Sub(s) für Blattschutz behalten und den oberen Teil auf:
Option Explicit
Sub UserName()
If Environ("username") = "MasterOfDesaster" Then
Call Blattschutz_alle_Tabellen_aufheben
End If
End Sub
eindampfen!
Ein bisschen Lesen und Eigeninitiative dürfte man doch erwarten, oder?
Gruess Hansueli

Anzeige
AW: Hab ich doch unten geschrieben ...
03.12.2013 07:24:57
Ralf
Hallo Hansueli,
ich habe nun folgenden Code im Modul stehen:


Option Explicit
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long
Sub UserName()
If Environ("username") = "MasterOfDesaster" Then
Call Blattschutz_alle_Tabellen_aufheben
End If
End Sub
Sub Blattschutz_alle_Tabellen_aufheben()
Dim i As Worksheet
For Each i In ActiveWorkbook.Worksheets
i.Unprotect Password:="passwort"
Next i
End Sub
Sub Blattschutz_alle_Tabellen()
Dim i As Worksheet
For Each i In ActiveWorkbook.Worksheets
i.Protect Password:="passwort", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
Next i
ThisWorkbook.Save
End Sub

Leider bekomme ich immer noch die Fehlermeldung "Kompilierungsfehler in verborgenem Modul"
Habe ich Deinen Code flasch zusammen gebaut? Ich kenne mich leider in VBA nicht aus.
Viele Grüße
Ralf

Anzeige
Verborgen bleibt mir nur....
03.12.2013 08:39:39
EtoPHG
Deine Vorgehensweise beim Codeanpassen, Ralf
Wenn du im VBE-Menu Debuggen - Kompilieren wählst, dann zeigt dir der Compiler an, wo ein Fehler vorliegt. Das kann IMHO nicht an den Codezeilen oben liegen. Aber ich hab ebenfalls mehrmals erwähnt, dass die Zeilen mit Declare Function... unnötig sind.
Wenigstens die Grundlagen der Codeerstellung sollten dir klar sein!
Gruess Hansueli

DIM Typ....
03.12.2013 07:14:38
EtoPHG
Zitat-Hilfe:"String * Länge (für Zeichenfolgen fester Länge)"!, Luc
und vor der Einführung von Environ (years way back) war die API die einzige Möglichkeit an den Usernamen zu kommen!
Gruess Hansueli

Anzeige
Na gut, findet man wohl nicht unbedingt auf ...
03.12.2013 15:36:36
Luc:-?
…Anhieb, Eto!
Na dann basiert sein Versuch ja sicher auf alten Bspp. Soll ja auch Leute geben, die immer noch Auto_Open benutzen…
Gruß Luc :-?

Auch Auto_Open gibts noch in der Hilfe! (owT)
03.12.2013 15:45:41
EtoPHG

Eben, nur wg dieser Leute! ;-) owT
03.12.2013 16:27:37
Luc:-?
:-?

AW: Kompilierungsfehler im Modul
02.12.2013 16:29:45
EtoPHG
Hallo Ralf,
1. Ist die Api falsch deklariert:
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

2. der Function-Aufruf:
Dim retVal As Long
BuffLen = 100
retVal = GetUserName(Buffer, BuffLen)
und 3. anstelle des ganzen API-Gedöns erreichst du mit

if environ("Username") = "MasterOfDesaster" Then
das Gleiche!
Gruess Hansueli
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige