Juli 15, 2020, 13:52:29

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Makro zum Speichern einer Arbeitsmappe

Begonnen von ohnePlan, Juli 20, 2010, 12:46:35

⏪ vorheriges - nächstes ⏩

ohnePlan

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.

database

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

ohnePlan

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

database

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?

ohnePlan

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.

database

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?

ohnePlan

Nach dem Sheet "Erfüllungsgrad" zeigt er Laufzeitfehler '9' an: Index ausserhalb des gültigen Bereichs

database

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

ohnePlan

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.

database

Juli 22, 2010, 20:34:15 #9 Letzte Bearbeitung: Juli 22, 2010, 20:37:12 von database
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

ohnePlan

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

database

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

ohnePlan

Zeigt er bei den 'Next' immer noch den Laufzeitfehler an.

database

Verstehe ich nicht ganz ...

kannst mal die Mappe anschaun lassen?

ohnePlan

jo. hier ist sie.

[Anhang gelöscht durch Administrator]