Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Öffnen nur mit VBA

Öffnen nur mit VBA
30.01.2007 15:18:27
Richy
Hi Leute,
wie muss ich einen Code formulieren, die mir eine Arbeitsmappe in Excel nur mit VBA öffnet und ansonsten nicht?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Öffnen nur mit VBA
30.01.2007 15:25:39
Matthias
Hallo Richy,
folgenden Code in "DiesArbeitsmappe", Anleitung (Kommentar oben) lesen:

' Mappe nur mit aktivierten Makros öffnen
' Anleitung:
' Erstelle in der betreffenden Mappe ein Blatt mit Namen "Warnung"
' (Konstante OhneMakros kann angepasst werden)
' schreibe auf dieses Blatt eine Info, dass die Makros aktiviert sein müssen,
' um mit der Mappe zu arbeiten
' kopiere folgenden Code ins Modul "DieseArbeitsmappe"
Option Explicit
Const OhneMakros = "Warnung" 'Name des Blattes mit der Info
Const pwWarnung = "12345" 'Kennwort des Blattes mit der Info
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.Saved = False Then
Select Case MsgBox("Sollen Ihre Änderungen in '" & Me.Name & "' gespeichert werden?", vbYesNoCancel + vbExclamation)
Case vbYes
Speichern
Case vbNo
Me.Saved = True
Case vbCancel
Cancel = True
End Select
End If
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
If SaveAsUI Then
MsgBox "Speichern unter... nicht möglich!" 'müsste falls erforderlich noch erweitert werden
Else
Speichern
End If
End Sub
Private Sub Workbook_Open()
AllesEinblenden
On Error Resume Next
'beim Speichern gemerktes aktives Blatt anzeigen:
Sheets(Sheets(OhneMakros).Cells(Rows.Count, Columns.Count).Value).Activate
Me.Saved = True
End Sub
Private Sub AllesAusblenden()
Dim sh As Worksheet
Sheets(OhneMakros).Visible = True
For Each sh In Me.Worksheets
If sh.Name <> OhneMakros Then sh.Visible = xlSheetVeryHidden
Next sh
End Sub
Private Sub AllesEinblenden()
Dim sh As Worksheet
For Each sh In Me.Worksheets
sh.Visible = True
Next sh
Sheets(OhneMakros).Visible = xlSheetVeryHidden
End Sub
Private Sub Speichern()
Dim sh As Worksheet
Dim fehler As Boolean
Set sh = ActiveSheet
'geöffnetes Blatt merken:
With Sheets(OhneMakros)
.Unprotect Password:=pwWarnung
.Cells(Rows.Count, Columns.Count) = sh.Name
.Protect Password:=pwWarnung
End With
Application.EnableEvents = False
Application.ScreenUpdating = False
AllesAusblenden
On Error Resume Next
Me.Save
If Err.Number > 0 Then
MsgBox Err.Description, , "Fehler " & Err.Number
fehler = True
End If
On Error GoTo 0
AllesEinblenden
sh.Activate
Application.EnableEvents = True
Application.ScreenUpdating = True
If Not fehler Then Me.Saved = True
End Sub

Gruß Matthias
Anzeige
AW: Öffnen nur mit VBA
30.01.2007 15:53:46
Richy
Kann schon sein, das mein VBA nicht so gut ist......
Allerdings sehe ich in deinem Code nur das er ein paar Tabellen versteckt bevor er öffnet bzw. speichert.
Ich môchte die Datei aber direkt wieder schliessen, bzw gar nicht erst öffnen wenn man Makros deaktivieren wählt. (Habe unten zur Hilfe meinen Code hinzugefügt)

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Tabelle3.Visible = xlSheetVisible
Tabelle3.Activate
Tabelle1.Visible = xlSheetVeryHidden
End Sub


Private Sub Workbook_Open()
Tabelle1.Visible = xlSheetVisible
Tabelle1.Activate
Tabelle3.Visible = xlSheetVeryHidden
End Sub

-------------------------

Private Sub workbook_open()
Dim objSh As Worksheet
Dim unam As String
If ThisWorkbook.ReadOnly Then ThisWorkbook.Close False
Application.ScreenUpdating = False
Dim blnFound As Boolean
unam = Environ("Username")
If unam = "richard.kuhn" Or unam = "alexa.theis" Then
For Each objSh In Me.Worksheets
objSh.Visible = xlSheetVisible
Next
Else
For Each objSh In Me.Worksheets
If objSh.Name = unam Then
blnFound = True
Exit For
End If
Next
If blnFound = True Then
objSh.Visible = xlSheetVisible
Else
ThisWorkbook.Close False
End If
Application.ScreenUpdating = True
End If
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.ScreenUpdating = True
End Sub

Anzeige
AW: Öffnen nur mit VBA
30.01.2007 15:56:39
EtoPHG
Hallo Richy,
Und wie bitte soll Excel die Datei wieder per VBA schliessen, wenn die Makros nicht aktiviert werden ?
Das geht schlicht nicht!
Es gibt noch die zig-Varianten von Arbeitsmappe schützen, Blätter schützen mit oder ohne Passwort etc... aber als Excel-Profi sind die Dir sicher bekannt...
Gruss Hansueli
AW: Öffnen nur mit VBA
30.01.2007 15:57:40
Matthias
Hallo Richy,
Ich môchte die Datei aber direkt wieder schliessen, bzw gar nicht erst öffnen wenn man Makros deaktivieren wählt.
Das geht nicht.
Du kannst aber der Mappe ein Kennwort geben und mit VB eine EXE-Datei erstellen, die die Mappe öffnet und das Kennwort mitgibt. Dann sind auch gleich die Makros aktiviert.
Gruß Matthias
Anzeige
AW: Öffnen nur mit VBA
30.01.2007 16:05:28
Richy
Ok seh ich auch so.
Aber eigentlich meinte ich wenn er feststellt das die Arbeitsmappe schreibgeschützt ist dann macht sie zu. Und genau dasselbe.... wenn er feststellt das keine Makros aktiviert sind, mach die Arbeitsmappe ebenfalls zu.
Hoffe es ist jetzt klarer.
AW: Öffnen nur mit VBA
30.01.2007 16:08:52
Matthias
Hallo Richy,
wie Hansueli schon sagte:
Ohne Makro wird die Mappe geöffnet und weiter nix. Niemand kann irgendwas feststellen, niemand kann die Mappe schließen außder der Anwender selbst, weil VBA ja deaktivert ist.
Schau mal diesen Thread an, vielleicht hilft der weiter:
https://www.herber.de/forum/archiv/836to840/t839158.htm
Gruß Matthias
Anzeige
OMG dasselbe in Grün
30.01.2007 16:10:14
EtoPHG
Hallo Richy,
Bitte hab ein einsehen: Du widersprichst Dir selbst in jedem Satz.
Das was Du willst geht nicht, wird nie gehen und ist nocht nie gegangen.
Gruss Hansueli

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige