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
1484to1488
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

Speichern sperren unter 2007

Speichern sperren unter 2007
02.04.2016 08:26:24
chris58
Hallo !
Ich bräuchte eine Auskunft hinsichtlich des u.a. Codes, da ich kein Excel 2007 auf meinem Rechner habe.
Funktioniert dieser Code unter Excel 2007 ?
Danke für die Auskunft
chris
Application.CommandBars("Standard").Controls("&Speichern").Enabled = False
Application.CommandBars("Worksheet Menu Bar").Controls("Datei").Controls("Speichern").Enabled = False
Application.CommandBars("Worksheet Menu Bar").Controls("Datei").Controls("Speichern unter...").Enabled = False

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern sperren unter 2007
02.04.2016 08:43:00
Nepumuk
Hallo,
nein das klappt nicht, denn in Excel 2007 musst du das über XML programmieren.
Siehe: http://www.rholtz-office.de/ribbonx/start
Gruß
Nepumuk

AW: Speichern sperren unter 2007
02.04.2016 08:43:00
Nepumuk
Hallo,
nein das klappt nicht, denn in Excel 2007 musst du das über XML programmieren.
Siehe: http://www.rholtz-office.de/ribbonx/start
Gruß
Nepumuk

AW: Speichern sperren unter 2007
02.04.2016 08:58:57
chris58
Hallo !
und da gibts nichts einfaches, also was ganz simples, damit das speichern nur über meinen Button erfolgen kann/ darf ?
chris

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 09:14:56
Nepumuk
Hallo,
ein Beispiel für das speichern per Commandbutton:
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI And Not gblnSaveAs Then
        Call MsgBox("Speichern unter nur per Button.", vbExclamation, "Hinweis")
        Cancel = True
    End If
End Sub

' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub CommandButton1_Click()
    Dim objFileDialog As FileDialog
    gblnSaveAs = True
    Set objFileDialog = Application.FileDialog(msoFileDialogSaveAs)
    With objFileDialog
        .FilterIndex = 2
        .InitialFileName = "G:\Eigene Dateien\Testmappe.xlsm"
        If .Show Then .Execute
    End With
    Set objFileDialog = Nothing
    gblnSaveAs = False
End Sub

' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Public gblnSaveAs As Boolean

Gruß
Nepumuk

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 09:16:30
Hajo_Zi
verhindere das Speichern mittels Code.
Setze die Variable zum Speichern auf True und danach auf False.
Der Code ist sinnlos falls Makro deaktiviert.
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf DieseArbeitsmappe, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt in der gesamten Datei.
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If BoSpeichern = False Then
Cancel = True
End If
End Sub

starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, gehe auf Deine Datei, rechte Maustaste, Einfügen Modul, Code ins rechte Fenster kopieren, VBA Editor schließen.
Register Ansicht, Befehlsgruppe Makros, auf Makro klicken, Makros anzeigen, Makro auswählen und ausführen.
Option Explicit
Public BoSpeichern As Boolean


Anzeige
AW: Speichern sperren unter 2007
02.04.2016 09:44:03
chris58
Hallo !
Also ich komm damit nicht zurecht. Leider
Wenn ich das einfüge, dann wird der VBA Editor aufgerufen und wenn ich dann die Datei schliesse, dann ist das ganze, was ich im VBA Editor eingegeben habe, weg, oder es ist dann halt gelb.
Das ist das letzte, was ich bei der Datei brauche, dann ist sie fertig. die, die damit arbeiten sollen halt nur speichern über den Button machen können.
Kann mir wer den code so einbauen, das das bei 2003 und 2007 funktioniert ?
Ich bedanke mich sehr herezlich im voraus für die Zeit und Mühe
chris
https://www.herber.de/bbs/user/104721.xls

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 09:58:35
chris58
Hallo Hajo !
Danke....
Ja, nachdem ich mir das angesehen habe, ist mir klar, warum das bei mir nicht ging. Ich habe den zweiten Code in ein neues Modul kopiert.........dabei sollte das in das bestehende Modul eingebaut werden.
Danke, vielen Dank
chris

AW: Speichern sperren unter 2007
02.04.2016 10:04:45
Hajo_Zi
Hallo Chris,
das ist nicht das Problem. Der kann in irgendein Modul stehen.
Ich vermute Du hast das
Setze die Variable zum Speichern auf True und danach auf False.

nicht gemacht.
Gruß Hajo

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 10:23:33
chris58
Nochmal eine Frage, wenn ich die Datei über den Button speicher, dann bleibt sie offen stehen. Kann ich irgendwo einen Schliessbefehl eingeben, damit sie, wenn sie gespeichert ist, nicht mehr offen ist ?
Danke
chris

AW: Speichern sperren unter 2007
02.04.2016 10:25:53
Hajo_Zi
Hallo Chris,
Private Sub CommandButton3_Click()
Dim strVerzeichnis As String
Dim strDateiname As String
BoSpeichern = True
strVerzeichnis = "C:\Temp\"
strDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & _
Format(Range("H2"), "mm") & " " & Range("F2") & ".xls", _
FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
Select Case strDateiname
Case False
Exit Sub
Case Else
ThisWorkbook.SaveAs Filename:=strDateiname
End Select
BoSpeichern = False
ThisWorkbook.Close True
End Sub

Gruß Hajo

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 10:42:04
chris58
Danke......endlich fertig
Nochmals danke für die nette Hilfe
chris58

AW: Speichern sperren unter 2007
02.04.2016 13:50:31
chris58
Hallo !
leider habe ich noch ein "großes" Problem seit ich die Mappe für speichern gesperrt habe.
Ich habe einen Code von Rudi, der vergleicht 2 Mappen miteinander und speichert dann das Ergebnis in eine andere Datei. Bis zum Abgleich geht alles. Das Speichern geht aber nicht, da ja nur über den Speicherbutton in den beiden Mappen gespeichert werden kann.
Wie kann ich das umgehen, bzw. was muß ich voranstellen um die Speicherung zuzulassen.
Das ist eigentlich der Hauptcode für die ganze Datei.
Hier der untere Teil, wo das speichern anfängt:
Sub TP_Schreiben(strDatei As String)
Dim wkbTP As Workbook
Dim arrKeys, arrItems
Dim i As Integer, j As Integer
Dim arrTmp
Dim strSaveAS As String, iFF As Integer, strExt As String
Dim strPfad As String
Dim lFirstRow As Long, lColTrainer As Long
Dim wksHK As Worksheet, wksVS As Worksheet, wks As Worksheet
Application.ScreenUpdating = False
Set wkbTP = Workbooks.Open(strDatei)
For Each wks In wkbTP.Worksheets
Select Case LCase(wks.CodeName)
Case "tbhauptkader": Set wksHK = wks
Case "tbvorstufe": Set wksVS = wks
End Select
Next
With wkbTP
If objHK.Count Then
With wksHK
.Unprotect
arrKeys = objHK.keys
arrItems = objHK.items
lFirstRow = Application.Match("Datum", .Columns(1), 0)
lColTrainer = Application.Match("Trainer", .Rows(lFirstRow), 0)
.Cells(lFirstRow, lColTrainer).Resize(31).ClearContents
For i = 0 To UBound(arrKeys)
arrTmp = Split(arrItems(i), cstrDELIM)
For j = 0 To UBound(arrTmp)
arrTmp(j) = WorksheetFunction.Proper(arrTmp(j))
Next
.Cells(Day(arrKeys(i)) + lFirstRow, lColTrainer) = Join(arrTmp, "; ")
Next
End With
End If
If objVS.Count Then
With wksVS
.Unprotect
arrKeys = objVS.keys
arrItems = objVS.items
lFirstRow = Application.Match("Datum", .Columns(1), 0)
lColTrainer = Application.Match("Trainer", .Rows(lFirstRow), 0)
.Cells(lFirstRow, lColTrainer).Resize(31).ClearContents
For i = 0 To UBound(arrKeys)
arrTmp = Split(arrItems(i), cstrDELIM)
For j = 0 To UBound(arrTmp)
arrTmp(j) = WorksheetFunction.Proper(arrTmp(j))
Next
.Cells(Day(arrKeys(i)) + lFirstRow, lColTrainer) = Join(arrTmp, "; ")
Next
End With
End If
strPfad = .Path & "\"
strSaveAS = Left(.Name, InStrRev(.Name, ".") - 1) & "_Abgeglichen"
If Val(Application.Version)  "" Then Kill strPfad & strSaveAS & strExt 'löschen  _
falls vorhanden
'Punkte as Dateinamen entfernen; XL2007 ist da empfindlich
.SaveAs Filename:=strPfad & Replace(strSaveAS, ".", ""), FileFormat:=iFF
.Close
If Replace(strSaveAS, ".", "")  strSaveAS Then
Name strPfad & Replace(strSaveAS, ".", "") & strExt As strPfad & strSaveAS & strExt 'ggf  _
Datei umbenennen mit Punkten
End If
Application.DisplayAlerts = True
MsgBox "Datei unter " & vbLf & "  " & strSaveAS & strExt & vbLf & "gespeichert.",  _
vbInformation
End With
End Sub

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 13:57:12
Hajo_Zi
Du liest meine Beiträge also nicht komplett. Ich bin dann also raus.
Ich hatte schon 2x was zur Variable "BoSpeichern" geschrieben.
Gruß Hajo

AW: Speichern sperren unter 2007
02.04.2016 14:01:23
chris58
Hallo Hajo !
Ich habe alles gelesen........habe das auch eingebaut.....vor dem If....nach dem If.......
er speichert nicht........ich habe den gesamten code reingetan, ohne Erfolg....kein speichern.....
Naja, ......muß dann wieder alles auf Anfang stellen, den wenn ich das nicht zusammenbringe, bringt das ganze nichts ......
Danke jedenfalls fürs Lesen
chris

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 15:18:51
Nepumuk
Hallo,
also nochmal.
In das Modul "DieseArbeitsmappe":
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    If SaveAsUI And Not gblnSaveAs Then
        Call MsgBox("Speichern nur per Button.", vbExclamation, "Hinweis")
        Cancel = True
    End If
End Sub

In dein Modul1:
Public gblnSaveAs As Boolean

Und die Makros für deine Commandbuttons so:
Private Sub CommandButton3_Click()
    Dim strVerzeichnis As String
    Dim strDateiname As Stringvariant
    strVerzeichnis = "C:\Temp\"
    strDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis & _
        Format(Range("H2"), "mm") & " " & Range("F2") & ".xls", _
        FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls")
    Select Case strDateiname
        Case False
            Exit Sub
        Case Else
            gblnSaveAs = True
            ThisWorkbook.SaveAs Filename:=strDateiname
            gblnSaveAs = False
    End Select
End Sub

Gruß
Nepumuk

Anzeige
AW: Speichern sperren unter 2007
02.04.2016 15:38:41
chris58
Hallo Nepumuk !
Also das mit dem Speichern, also Nichtspeichern in den Datein, das funktioniert einwandfrei.
Ich habe 2 Mappen, die werden mit einer Abgleichsdatei abgeglichen. Wenn ich nun in den 2 Mappen den Abgleich durchführe, dann hemmt der Code das Abspeichern aus der Abgleichsdatei. ich müsste also voher immer die Codes in den 2 Mappen die abgeglichen werden, von True auf False und dann wieder retourstellen.
Das ist mir zuviel Aufwand, wenn das nicht aus der dritten Datei automatisch kommen kann.
1. Mappe heisst TP
2. mappe heisst TA
und die Abgleichsdatei greift auf beide zu, gleicht diese ab und speichert diese unter dem Namen TA_Abgeglichen.
Hoffe ich konnte mich verständlich ausdrücken.
Danke für deine Hilfe
chris

AW: Speichern sperren unter 2007
02.04.2016 16:05:04
Nepumuk
Hallo,
kann ich nicht nachvollziehen. Wie soll den der Code in einer Mappe das Speichern einer anderen beeinflussen? Das ginge nur über eine Klasse der Application und die sehe ich weit und breit nicht.
Gruß
Nepumuk

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige