moin Bernd,
also das Drucken kann man so ausschalten:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
Exit Sub
End Sub
Hat den Haken, wenn beim Öffnen die Makros abgeschalten werden, klappt das nicht.
Das könnte man versuchen zu verhindern, in dem man wesentliche Teile der Tabelle per Makro erstellt, so dass die Tabelle bei deaktivierten Makros „verstümmelt“ ist.
Kopieren verhindern ist ein wenig schwieriger. Hierzu habe ich ein Makro gefunden, das nicht von mir ist, also ohne Gewähr:
**Sub Aktivieren()
With Application
Rem: Das RollUp Menü, was beim Betätigen der rechten Maustaste erscheint wird aktiviert
.CommandBars("Toolbar List").Enabled = True
Rem: Die Funktion "Anpassen" Im Menüpunkt "Extras" wird aktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Extras").Controls("Anpassen...").Enabled = True
Rem: Die Funktion "Makro" Im Menüpunkt "Extras" wird aktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Extras").Controls("Makro").Enabled = True
Rem: Die Funktion "Speichern unter" Im Menüpunkt "Datei" wird aktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Datei").Controls("Speichern unter...").Enabled = True
Rem: Die Funktion "Senden an" Im Menüpunkt "Datei" wird aktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Datei").Controls("Senden an").Enabled = True
End With
Rem: Tastenkombinationen einschalten
Application.OnKey "^x"
Application.OnKey "^c"
Application.OnKey "^v"
Application.OnKey "+{DEL}"
Application.OnKey "+{INSERT}"
Rem: Drag & Drop wieder erlauben
Application.CellDragAndDrop = True
Rem: Schaltflaechen in Menüleiste =\> Bearbeiten aktivieren
Rem: Ausschneiden
procControlEnableDisable 21, True
Rem: Kopieren
procControlEnableDisable 19, True
Rem: Einfuegen
procControlEnableDisable 22, True
Rem: Inhalte einfuegen
procControlEnableDisable 755, True
Rem: Office-&Zwischenablage
procControlEnableDisable 809, True
End Sub
Sub Deaktivieren()
With Application
Rem: Das RollUp Menü, was beim Betätigen der rechten Maustaste erscheint wird deaktiviert
.CommandBars("Toolbar List").Enabled = False
Rem: Die Funktion "Anpassen" Im Menüpunkt "Extras" wird deaktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Extras").Controls("Anpassen...").Enabled = False
Rem: Die Funktion "Makro" Im Menüpunkt "Extras" wird deaktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Extras").Controls("Makro").Enabled = False
Rem: Die Funktion "Speichern unter" Im Menüpunkt "Datei" wird deaktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Datei").Controls("Speichern unter...").Enabled = False
Rem: Die Funktion "Senden an" Im Menüpunkt "Datei" wird deaktiviert
.CommandBars("Worksheet Menu Bar"). \_
Controls("Datei").Controls("Senden an").Enabled = False
End With
Rem: Tastenkombinationen deaktivieren
Application.OnKey "^x", ""
Application.OnKey "^c", ""
Application.OnKey "^v", ""
Application.OnKey "+{DEL}", ""
Application.OnKey "+{INSERT}", ""
Rem: Drag & Drop ausschalten
Application.CellDragAndDrop = False
Rem: Schaltflaechen in Menüleiste =\> Bearbeiten aktivieren
Rem: Ausschneiden
procControlEnableDisable 21, False
Rem: Kopieren
procControlEnableDisable 19, False
Rem: Einfuegen
procControlEnableDisable 22, False
Rem: Inhalte einfuegen
procControlEnableDisable 755, False
Rem: Office-&Zwischenablage
procControlEnableDisable 809, False
End Sub
Sub procControlEnableDisable(intId As Integer, \_
bolStatus As Boolean)
Dim cmbSuche As CommandBar
Dim cmbcSteuerelement As CommandBarControl
On Error Resume Next
For Each cmbSuche In Application.CommandBars
Set cmbcSteuerelement = \_
cmbSuche.FindControl(ID:=intId, recursive:=True)
If Not cmbcSteuerelement Is Nothing Then
cmbcSteuerelement.Enabled = bolStatus
End If
Next
End Sub**
Deaktivieren beim Start, Aktivieren beim Verlassen.
Wie geschrieben, ist nicht von mir, also hilft nur der Versuch, der Ansatz ist aber interessant. Klappt aber natürlich auch nur mit aktivierten Makros.
Um eine Tabelle nur mit Makros starten zu lassen (das geht auch), muss man allerdings schon ein wenig weiter gehen, das würde aber den Rahmen hier schon sprengen.
Grob umrissen muss eine .exe die Tabelle aufrufen, die über ein Lesekennwort geschützt ist, die .exe übergibt beim Start das Kennwort…
100%ig ist natürlich gar nichts, der wirkliche Profi knackt alles
.
Du kannst mit den Makros ja mal experimentieren, vielleicht klappt es ja; wenn nicht, war es zwar umsonst, dafür aber auch kostenlos
.
Gruß
kokomiko