Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

xlsm als Speicherformat vorgeben
#1
Hallo,

ich habe eine Datei mit Makros erstellt, an der mehrere meiner Kollegen arbeiten müssen (nacheinander).

Solange an der Datei gearbeitet wird muss diese Datei mit aktivierten Makros gespeichert werden, also als xlsm (xlsx wäre ja "Gift" für die Makros).
Erst im letzten Schritt, wenn alle fertig sind, muss die Datei als .xlsx gespeichert werden, da nur dieses Dateiformat archiviert werden kann.
Soweit die Rahmenbedingungen


Meine Frage wäre jetzt, ob es eine Möglichkeit gibt, dass beim (ersten) speichern der Datei automatisch xlsm als Standardauswahl angezogen wird (und nicht xlsx wie das bei Excel Standard zu sein scheint)

Über ein Makro könnte ich das zur Not speichern (dann vielleicht sogar automatisch), es wäre mir aber im Moment noch lieber wenn der ganz normale Speicher-Dialog kommt und in der Zeile unter dem Dateinamen xlsm ausgewählt ist.

Ich hoffe ich hab halbwegs klar geschrieben was ich gern möchte - mit der Suche war ich leider nicht erfolgreich.

Grüße & schon mal vielen Dank für eure Hilfe
Daniel
to top
#2
Zitat:Meine Frage wäre jetzt, ob es eine Möglichkeit gibt, dass beim (ersten) speichern der Datei automatisch xlsm als Standardauswahl angezogen wird (und nicht xlsx wie das bei Excel Standard zu sein scheint)
Es gibt Optionen -> Speichern -> Dateien in diesem Format speichern.
Das gilt dann für alle neuen Mappen.
Wir sehen uns!
... shift-del
Hinweise zu meiner Hilfe in Foren
Excel Super-Funktionen: VERWEIS(), INDEX(), WAHL()
to top
#3
Hallo Daniel,

suchst Du so etwas?


.xlsm   Test_Daniel.xlsm (Größe: 18,03 KB / Downloads: 11)

Im folgenden farbig markierten Codeteil, kannst Du auch den Dateinamen vorgeben.

Zitat:varr = Application.GetSaveAsFilename("Test_Daniel", "Excel-Arbeitsmappen (*.xlsm),*.xlsm")

Gruß
Max

Nachtrag:
Alternativ könntest Du natürlich auch im "alten" xls-Format speichern, dann brauchst Du Dir um die Makros auch keine Gedanken zu machen.
to top
#4
Hallo Daniel,

wenn Du eine xlsm - Datei öffnest und mit ihr arbeitest, ist das eingestellte Format beim "normalen" Speichern auch wieder xlsm. Wenn Du eine Datei nigelnagelneu erstellst, dann muss allerdings xlsm ausgewählt werden. Deine Kollegen, die nacheinander damit arbeiten, haben beim Speichern dann automatisch xlsm.

Jetzt hab ich jedoch ein Verständnisproblem. Wenn die Datei erst dann als xlsx gespeichert werden soll, wenn alle fertig sind - andererseits die Datei nur beim ersten Speichern als xlsm gespeichert werden soll - wie arbeiten denn dann alle Kollegen nacheinander an der Datei, ohne das sie zwischendurch gespeichert wird? Kommen die alle an Deinem Rechner vorbei? Undecided Bleibt Dein Rechner auch solange an, bis alle fertig sind? Könnte ja sein, dass mehrere Tage an der Datei gearbeitet wird.

Spaß beiseite - aber ein Körnchen Frage steckt doch dahinter. Wie soll Excel merken, dass die Bearbeitung durch alle Kollegen fertig ist und was ist, wenn ein Kollege zu Feierabend zwischenspeichert?
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#5
@Max: Danke, das schaut ganz gut aus, ich muss mich da mal noch einarbeiten wie man automatisch den Dateinamen erstellen kann etc. - evtl. frag ich dann einfach nochmal.

@shift-del: die Variante hilft mir nichts, normalerweise werden "normale" Excel-Dateien ohne Makros bearbeitet.

@schauan:
ich habe für die Datei eine Vorlage (Beispiel.xltm)
Wenn man diese Datei Doppelklickt öffnet sich automatisch eine neue Datei, die dann, wenn man speichert, automatisch als Beispiel1.xlsx bezeichnet würde.
In dem Fall muss jedoch (momentan noch) xlsm manuell ausgewählt werden.
Alle weiteren Bearbeitet können Schnellspeichern (Strg + S) - das richtige Dateiformat ist ja eingestellt.

Ganz zum Schluss wird diese Datei archiviert (muss für 30 Jahre aufgehoben werden), da die IT aber Sicherheitsbedenken hat dürfen keine Makros abgespeichert werden - vor dem archivieren wird die Datei als xlsx gespeichert, alle Makros gelöscht und die Welt ist wieder in Ordnung
to top
#6
Hallo Daniel,

schreibe in das schon vorhandene VBA-Modul DieseArbeitsmappe Deiner Vorlage folgenden Code rein:

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If Me.Path = "" Then
    On Error Resume Next
    Application.EnableEvents = False
    Cancel = True
    Application.Dialogs(xlDialogSaveAs).Show "HalloFertig", 52
    Application.EnableEvents = True
    On Error GoTo 0
  End If
End Sub

Gruß Uwe
to top
#7
Hallo,

ich hab noch ein wenig weitergesucht, eure Tipps verwendet und bin jetzt so weit, dass ich beim Öffnen der Datei überprüfe, ob die Versuchsnummer eingetragen wurde - wenn die noch nicht eingetragen wurde (Dummy FxxCOYYYY) eingetragen ist dann frag ich die Versuchsnummer ab und lass gleich mit passendem Dateinamen speichern.

Der Code dazu schaut so aus (Das steht alles im Blatt ThisWorkBook)

Code:
Sub Workbook_Open()
  
    Dim Versuchsnummer As Variant
    Dim Checkvariable As Variant
    Dim varr As Variant
    Dim sName As String
    
    'Dass beim Aufmachen immer in der "Anleitung & Allgemeines" startet
    Sheets("Anleitung & Allgemeines").Select

    Checkvariable = Worksheets("Anleitung & Allgemeines").Range("A9").Value
    
    If Checkvariable = "FXXCOYYYY" Then
        'Abfrage der Versuchsnummer
        Versuchsnummer = Application.InputBox("Bitte die Versuchsnummer eingeben (z.B. F99CO0815)", "Versuchsnummer eingeben", Type:=2)
        Sheets("Anleitung & Allgemeines").Select
        Range("A9") = Versuchsnummer
        
        'Hinweis dass Datei der Einfachheit halber gleich gespeichert werden sollte
         MsgBox ("Bitte die Datei gleich speichern um die Funktion zu gewährleisten")
        
        'Jetzt speichern
        varr = Application.GetSaveAsFilename("IIHS_Smalloverlap_Auswertung_" & Versuchsnummer, "Excel-Arbeitsmappen (*.xlsm),*.xlsm")
        If varr <> False Then
            sName = varr
            'Speichern
            ActiveWorkbook.SaveAs (sName), FileFormat:=52
        End If
    Else
        Exit Sub
    
    End If

  
End Sub

Vielleicht kann ja der eine oder andere damit was anfangen, an alle helfenden an der Stelle nochmal vielen Dank, ich mach den Thread jetzt zu.

Grüße
Daniel
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste