Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1228to1232
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

*xltm-Datei: nach öffnen als *.xlsm abspeichern

*xltm-Datei: nach öffnen als *.xlsm abspeichern
Peter
Guten Tag
Ich habe eine Excel-Datei mit Makros als Vorlage *.xltm abgespeichert. Wenn ich die Datei öffne, und unter einem anderen Namen abspeichern will, wird mir die Erweiterung *.xlsx vorgeschlagen. Kann ich mittels VBA steuern, dass als Dateityp automatisch *.xlsm vorgeschlagen wird?
Danke für eine Antwort und Gruss, Peter
AW: *xltm-Datei: nach öffnen als *.xlsm abspeichern
01.09.2011 23:08:57
fcs
Hallo Peter,
zum Beispiel so:
Gruß
Franz

Sub SaveAs_xlsm()
'Dialog anzeigen, voreingestellt auf Arbeitsmappe mit Makros
With Application.FileDialog(msoFileDialogSaveAs)
.InitialView = msoFileDialogViewDetails
.FilterIndex = 2 'Standardmäßig xlsm  unter Excel 2007
If .Show  False Then
.Execute
End If
End With
End Sub
Sub SaveAs_xlsm_01()
'wenn der Dateiname schon bekann ist dann so
Dim sFilename As String
sFilename = "ABC_Test"
Application.ActiveWorkbook.SaveAs Filename:=sFilename, FileFormat:=52, addtomru:=True
End Sub

AW: *xltm-Datei: nach öffnen als *.xlsm abspeichern
02.09.2011 09:31:31
Peter
Hallo Franz
Vielen Dank für deine Antwort.
Gibt es eine Möglichkeit, dass beim Anwählen von "Speichern" oder "Speichern unter" direkt der Sub SaveAs_xlsm() aufgerufen wird? Wenn ja, sollte dies allerdings nur geschehen, wenn
1. die Datei mit Excel 2007 oder 2010 geöffnet wird (ansonsten gibt es ja xlsm nicht)
2. beim erstmaligen Speichern, wenn die Vorlage geöffnet wurde
Zu 1. nehme ich an, dass eine Versionsabfrage erfolgen kann
Zu 2. Dieser Punkt ist erfüllt, wenn der Dateiname noch keine Erweiterung hat
?thisworkbook.Name
Template_TEST1 'wenn Template_TEST.xltm geöffnet wurde und noch keine Speicherung erfolgt ist
Bin gespannt, ob es eine Lösung gibt.
Gruss, Peter
Anzeige
Sicher! Zu 1. Ja! Zu 2. empfehle ich ...
02.09.2011 15:31:05
Luc:-?
Speichern unter…, Peter;
das (beides) kann man in der Ereignisprozedur _BeforeSave (SaveAsUI=True) abfangen, den im Dialog angegebenen Namen (Endung) auswerten und alles Weitere davon abhängig machen (ggf Cancel = True setzen zur Speicherungs­unterdrückung).
Gruß Luc :-?
AW: Sicher! Zu 1. Ja! Zu 2. empfehle ich ...
02.09.2011 15:50:11
Peter
Hallo Luc
Danke für die Antwort.
Könntest du mir eine solche Ereignisprozedur schreiben?
Mir ist nicht ganz klar, wie so etwas aussieht.
Gruss, Peter
Auf die Schnelle mal Folgendes, ...
02.09.2011 23:27:06
Luc:-?
…Peter:
VBEditor-Hilfe, Stichwort Ereignisse der Arbeitsmappe. Im Dokument-Klassenmodul DieseArbeitsmappe im Kopf des Codefensters links Workbook und dann rechts BeforeSave auswählen. Der Prozedurrahmen wird dabei automatisch angelegt und darf nicht verändert wdn. Die Leerzeile wird anschließend durch den auszuführenden Code ersetzt, den ich ggf irgendwann am WE liefern kann → ein schönes solches!
Gruß Luc :-?
Anzeige
AW: Sicher! Zu 1. Ja! Zu 2. empfehle ich ...
03.09.2011 08:11:52
fcs
Hallo Peter,
ein entsprechendes Makro unter DieseArbeitsmappe der Excel-Vorlagedatei muss etwa so aussehen.
Gruß
Franz

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'  MsgBox "Datei-Format: " & Me.FileFormat   ' Testzeile
Dim iFilterIndex As Integer
If Me.Path = "" Then 'Prüfen, ob Datei schon gespeichert wurde
Application.EnableEvents = False
Cancel = True
If Val(Left(Application.Version, 2)) >= 12 Then 'Excel-Versionsprüfung
'Excelversion 2007 und neuer
Select Case Me.FileFormat
Case 52             'xlOpenXMLWorkbookMacroEnabled - Excel 2007 mit Makros
iFilterIndex = 2  'Standardmäßig xlsm  unter Excel 2007
Case 56             'xlExcel8  - Excel 98 bis 2003
iFilterIndex = 4  'Standardmäßig xls  unter Excel 2007
Case Else
iFilterIndex = 1  'Standardmäßig xlsx  unter Excel 2007
End Select
'Speichern unter Dialog anzeigen
With Application.FileDialog(2)  '2 = msoFileDialogSaveAs
.InitialView = 2              '2 = msoFileDialogViewDetails
.FilterIndex = iFilterIndex
If .Show  False Then
.Execute
End If
End With
Else
'Ältere Excelversionnen - SaveAs Dialog anzeigen
Application.Dialogs(5).Show     '5 = xlDialogSaveAs
End If
Application.EnableEvents = True
End If
End Sub

Anzeige
AW: Sicher! Zu 1. Ja! Zu 2. empfehle ich ...
05.09.2011 13:23:01
Peter
Hallo Franz
Vielen Dank. Das klappt!
Gruss, Peter

315 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige