Процедура vba для сохранения книги не дает желаемого результата

У меня есть рабочая книга, которая обновляется каждые 4 недели новыми данными. При обновлении его необходимо сохранить с определенным именем и с определенными параметрами. У меня уже был скрипт, который сохраняет книгу в новый файл, поэтому я использовал этот скрипт и модифицировал его.

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

Когда я использую этот код и нажимаю кнопку, появляется всплывающее окно с вопросом, как я хочу сохранить файл:

введите здесь описание изображения

Но не устанавливается формат файла. Установлен пароль на открытие файла Я заметил при открытии сохраненного файла. Я знаю по себе, что мне нужно добавить расширение .xslb при сохранении файла, но я не уверен в коллеге, который также работает с этим файлом.

Когда я ввожу имя файла и расширение, я получаю сообщение об ошибке:

введите здесь описание изображения

ошибка 424: нужен объект

введите здесь описание изображения

мои пожелания относительно вариантов сохранения:

  • тип файла должен быть установлен на .xlsb
  • чтобы сохраненная копия не обновлялась, я хочу, чтобы она сохранялась с защитой паролем на открытие

Как я могу сделать так, чтобы подпрограмма уже добавляла расширение .xlsb, чтобы нужно было вводить только имена файлов?

редактировать: с ответом Marcucciboy2 я изменил сценарий на:

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

И теперь он отлично работает для сохранения.

введите здесь описание изображения

Дополнительный вопрос, касающийся этого скрипта, и введенное имя публикуется в новом вопросе: скрипт vba для сохранения книги перезаписывает введенное имя файла


person DutchArjo    schedule 07.09.2018    source источник
comment
Я думаю, проблема может заключаться в том, что вы не фильтруете имя файла, которое получаете от GetSaveAsFilename, попробуйте Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb")   -  person Marcucciboy2    schedule 07.09.2018
comment
спасибо! было именно то, что мне было нужно.   -  person DutchArjo    schedule 07.09.2018
comment
Круто! я вставлю это как ответ, чтобы все было чисто   -  person Marcucciboy2    schedule 07.09.2018


Ответы (1)


Я думаю, проблема может заключаться в том, что вы не фильтруете имя файла, которое получаете от GetSaveAsFilename, поэтому попробуйте:

Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb")
person Marcucciboy2    schedule 07.09.2018