1

I have a workbook which is updated every 4 weeks with new data. When updated, it has to be saved with a specific name and with specific options. I already had a script which saves workbook to a new file for me so I used that script and modified it.

Sub save_workbook_name()
Dim workbook_Name As Variant
Dim location As String

location = "N:\IRi\"
workbook_Name = Application.GetSaveAsFilename

If workbook_Name <> False Then

    ActiveWorkbook.SaveAs Filename:=Workbook.Name, WriteResPassword:="TM", FileFormat:=50

End If
End Sub

When I use this code and I press the button, a popup screen appears asking me how I want to save the file:

enter image description here

But there is not file format being set. The password for opening the file is set I noticed when opening the saved file. I know for myself that I have to add the .xslb extension when saving the file but I am not sure about any colleague whom also works with this file.

When I enter a filename and extension, I get an error:

enter image description here

error 424: object needed

enter image description here

my wished regarding to the options for saving:

  • filetype has to be set to .xlsb
  • to prevent the saved copy from being updated, I want it to be saved with password protection for opening

How can I make the routine to already add the .xlsb extension so only the file names has to be entered?

edit: with the answer from Marcucciboy2 I changed the script to:

Sub save_workbook_name()
Dim workbook_Name As Variant
Dim location As String

workbook_Name = Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb", InitialFileName:="N:\IRi\")

If workbook_Name <> False Then

    ActiveWorkbook.SaveAs WriteResPassword:="TM", FileFormat:=50

End If
End Sub

And now it works perfectly for saving.

enter image description here

Additional question with regarding to this script and the entered name is posted in a new question: vba script to save workbook overwrites entered filename

DutchArjo
  • 319
  • 3
  • 8
  • 29
  • 2
    I think the issue might be that you're not filtering the filename that you receive from [`GetSaveAsFilename`](https://learn.microsoft.com/en-us/office/vba/api/excel.application.getsaveasfilename), so try `Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb") ` – Marcucciboy2 Sep 07 '18 at 12:52
  • thank you! was exactly what I needed. – DutchArjo Sep 07 '18 at 12:57
  • cool! i'll pop it in as an answer then to keep things clean – Marcucciboy2 Sep 07 '18 at 12:59

1 Answers1

2

I think the issue might be that you're not filtering the filename that you receive from GetSaveAsFilename, so try:

Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb")
Marcucciboy2
  • 3,156
  • 3
  • 20
  • 38