Access-o-Mania

Office-Forum (Deutsch/German) => Microsoft Excel => Thema gestartet von: ohnePlan am Juli 20, 2010, 12:46:35

Titel: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 20, 2010, 12:46:35
Hallo,

ich habe ein kleines Problem und zwar benötige ich ein Makro zum speichern einer vorher ausgefüllten Arbeitsmappe, in den man auch den Dateinamen eintippen kann. Wenn man danach etwas an der Mappe ändert und wieder auf speichern klickt sollte sie unter einem neuen Namen gespeichert werden (z.B. mit ner fortlaufenden Nummer hinter dem Dateinamen), wenn das möglich ist.

Danke schonmal.
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 20, 2010, 20:33:52
Hallo,

Zitatz.B. mit ner fortlaufenden Nummer hinter dem Dateinamen
das Problem liegt nicht darin, eine Routine zu erzeugen, welche die gestellten Anforderungen erfüllt sondern hier ein gewisses Maß an Automatismus zu erzeugen.

Ich finde es persönlich nicht gut, wenn man gerade hier keine Kontrolle mehr hat - so kann es leicht vorkommen, dass jemand mehrmals auf den Button klickt und jedes Mal wird eine neue Datei angelegt.
Besser ist es daher mit einer kleinen Unterbrechung des Codeablaufes dieses zu unterbinden.
Ich habe dir unten ein Schnippsel erstellt, das genau das leistet. Erstell einen Button und hinterlege das Makro, versuch mal das Ding und schau ob du das brauchen kannst.


Sub DateiSpeichern()

   Dim str As String
   Dim alterName As String, neuerName As String
   
   'Konstanten deklarieren
   Const LW = "C:\"
   Const Pfad = "C:\Eigene Dateien"
   
   'alten, bisherigen Namen auslesen
   alterName = Left(ActiveWorkbook.Name, (Len(ActiveWorkbook.Name) - 4))
   'neuen Dateinamen erfragen
   neuerName = InputBox("Alter Dateiname " & alterName & _
                       "- geben Sie den neuen Namen ein:", "Datei speichern unter")
                       
   If neuerName <> "" Then 'Wenn ein neuer Name eingegeben wurde, Datei unter dem neuen Namen speichern
       
       str = neuerName & ".xls"
       ChDrive LW
       ChDir Pfad
       ActiveWorkbook.SaveAs Filename:=str, FileFormat:=xlNormal, _
                             Password:="", WriteRespassword:="", _
                             ReadOnlyRecommended:=False, CreateBackup:=True
   End If
   
   'hier ev. die Datei schließen...
   
End Sub


HTH
Peter
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 22, 2010, 11:49:05
Hey Peter,

funtioniert, vielen vielen Dank!
Hätte noch ne Frage, und zwar würde ich gern auf dem Startsheet ein Administrator Button haben, der bei allen Blättern den Blattschutz deaktiviert und zum ersten Blatt springt. Aber mit dem unteren Code zeigt er mir immer einen Fehler an und deaktiviert nur die ersten 4 Blätter.
Was ist daran falsch?

Option Explicit

Sub Administrator()

ThisWorkbook.Worksheets("Fragen").Unprotect "00"
ThisWorkbook.Worksheets("Gewichtung").Unprotect "00"
ThisWorkbook.Worksheets("Zielgrößen").Unprotect "00"
ThisWorkbook.Worksheets("Zielerreichung").Unprotect "00"
ThisWorkbook.Worksheets("Tabelle5").Unprotect "00"
ThisWorkbook.Worksheets("Methoden").Unprotect "00"
ThisWorkbook.Worksheets("Erfüllungsgrad").Unprotect "00"
ThisWorkbook.Worksheets("Potential").Unprotect "00"
ThisWorkbook.Worksheets("Methodenempfehlung").Unprotect "00"

Worksheets("Fragen").Activate

End Sub
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 22, 2010, 11:55:57
Mahlzeit!

Kann es sein, dass das 5. Blatt NICHT Tabelle5 heisst - nur mal so in den Wind gereimt, da ja alle anderen Blätter einen eigenen Namen haben?
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 22, 2010, 12:12:05
doch es heißt Tabelle5. Aber "Potential" und "Erfüllungsgrad" sind Diagramme, muss dann da was anderes stehen?
Am besten wäre es wenn man den Button klickt und dann einmal das Passwort eingibt und alles entsperrt wird.
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 22, 2010, 12:16:02
Hi,

meine Annahme resultiert aus deinem Argument
Zitatund deaktiviert nur die ersten 4 Blätter

Also muss logischerweise ab Nummer 5 was sein, das einen Fehler erzeugt.
Welche Fehlermeldung bekommst du denn?
Was wird angezeigt, wenn du den Code mit F8 abarbeiten lässt?
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 22, 2010, 12:21:39
Nach dem Sheet "Erfüllungsgrad" zeigt er Laufzeitfehler '9' an: Index ausserhalb des gültigen Bereichs
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 22, 2010, 12:25:41
Hmmm....

würde das beinahe so interpretieren, dss das Ding nicht mehr als 7 Blätter durchlaufen kann.

Vielleicht weiß einer der EXCEL-Spezialisten hier Rat

Peter
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 22, 2010, 12:35:59
gibt es vielleicht einen Befehl der alle Blätter auf einmal entsperrt? Ich denke es hat damit zu tun, dass es Diagramme sind,
weil wenn ich das Blatt "Methodenempfehlung" vorziehe entsperrt er das auch, also hat es nichts mit der Anzahl an Blättern zu tun.
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 22, 2010, 20:34:15
Hallo,

versuche mal mittels dem untenstehenden Code die Auflistung der Arbeitsblätter zu durchlaufen und die Entsperrung so vorzunehmen.
Bevor ein Blatt entsperrt wird wird mittels Messagebox der Name des Blattes angezeigt.



Public Sub Entsperren()

   Dim strPassword As String
   Dim Mysheet As Worksheet
   strPassword = InputBox("Password eingeben!")

   For Each Mysheet In Sheets
       MsgBox Mysheet.Name
       Mysheet.Unprotect strPassword
   Next
   
   MsgBox "Alle Blätter entsperrt"
    Worksheets("Fragen").Activate  
   

End Sub


Zitatalso hat es nichts mit der Anzahl an Blättern zu tun
Hmmm ... war ein Verzweiflungsschlag von mir  ;D ;D

ZitatAber "Potential" und "Erfüllungsgrad" sind Diagramme
Sind die denn überhaupt gesperrt? wenn nicht, dann können sie in der Auflistung ja versuchsweise übersprungen werden.

Greets
Peter
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 27, 2010, 12:47:16
Hey,

bis zu den Diagrammen läuft das so.
Dann kommt der Laufzeitfehler '13': Typen unverträglich
Ansonsten ist das gut, kann man die beiden sheets da rausnehmen aus dem Durchlauf?

Gruß Felix
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 27, 2010, 12:59:47
Hallo,

sollte in Etwa so laufen...


Public Sub Entsperren()

   Dim strPassword As String
   Dim Mysheet As Worksheet
   strPassword = InputBox("Password eingeben!")

   For Each Mysheet In Sheets
       if Mysheet.Name <> "DeinSheet1Name" And Mysheet.Name <> "DeinSheet2Name" Then
           Mysheet.Unprotect strPassword
       End If
   Next
   
   MsgBox "Alle Blätter entsperrt"
   Worksheets("Fragen").Activate  
   

End Sub



HTH

Peter
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 27, 2010, 13:08:24
Zeigt er bei den 'Next' immer noch den Laufzeitfehler an.
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 27, 2010, 13:15:49
Verstehe ich nicht ganz ...

kannst mal die Mappe anschaun lassen?
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 27, 2010, 13:35:23
jo. hier ist sie.

[Anhang gelöscht durch Administrator]
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: database am Juli 27, 2010, 14:23:15
So,

das war's ...
folgender Code wird OHNE Fehler abgearbeitet!


Public Sub Entsperren()
    Dim strPassword As String
   Dim Mysheet As Excel.Worksheet
   strPassword = InputBox("Password eingeben!")

   For Each Mysheet In Application.Worksheets
       
       Debug.Print Mysheet.Name
       Mysheet.Unprotect strPassword
       
   Next Mysheet
   
   MsgBox "Alle Blätter entsperrt"
   Worksheets("Fragen").Activate

End Sub


Oft ist es nur eine Kleinigkeit ...   ;D

1. Dim Mysheet As Excel.Worksheet
2. For Each Mysheet In Application.Worksheets

Mit dieser Syntax werden deine Charts erst gar nicht angerührt.  ;)

Greets
Peter
Titel: Re: Makro zum Speichern einer Arbeitsmappe
Beitrag von: ohnePlan am Juli 29, 2010, 13:35:19
Super, es funktioniert.
Vielen Dank!!!