Spara som
Antag att vi har skapat en mallarbetsbok, inte en mall med filändelsen "xlt" utan med filändelsen "xls". Antag vidare att vi vill förhindra att mallen vid kommandot "Spara som" sparas med sitt ursprungliga namn, dvs användarna måste ange ett annat namn.Hur löser vi detta problem? Ett sätt visas här där vi använder oss av GetSaveAsFilename för att styra händelseförloppet vid sparandet.
Option Explicit
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
'© 2003 Alla rättigheter XL-Dennis
Dim stSparaNamn As String, stFilNamn As String
Dim vaFilNamn As Variant
'Detta gäller endast när användaren använder sig av Spara_Som kommandot.
'Ska det även gälla för Spara tas den första If-satsen bort.
If SaveAsUI = True Then
'Namnet på mallen
stSparaNamn = "Längd.xls"
'Öppnar den egna Spara Som-dialogrutan.
vaFilNamn = Application.GetSaveAsFilename(InitialFilename:="", _
FileFilter:="Excel Filer (*.xls), *.xls", Title:="Spara som")
If vaFilNamn = False Then
Cancel = True
Exit Sub
End If
'Här måste vi extrahera filnamnet från sökvägen.
stFilNamn = Filnamn(vaFilNamn)
If stFilNamn = stSparaNamn Then
MsgBox "Mallen måste sparas under ett annat namn!", vbInformation
Cancel = True
Exit Sub
Else
ThisWorkbook.SaveAs FileName:=stFilNamn
Cancel = True
End If
End If
End Sub
Function Filnamn(FileName As Variant)
Dim lnNuvPos As Long, lnPos As Long
lnNuvPos = 1
Do While lnNuvPos <> 0
lnPos = lnNuvPos + 1
lnNuvPos = InStr(lnPos, FileName, "\")
Loop
Filnamn = Mid(FileName, lnPos, Len(FileName))
End Function