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