vba рутина для сохранения книги не дает желаемого результата - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть рабочая тетрадь, которая обновляется каждые 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

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

enter image description here

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

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

enter image description here

ошибка 424: необходим объект

enter image description here

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

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

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

edit: с ответом 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

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

enter image description here

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

1 Ответ

0 голосов
/ 07 сентября 2018

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

Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb")
...