用于保存工作簿的vba例程没有所需的结果

问题描述 投票:1回答:1

我有一个工作簿,每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

我希望有关储蓄的选择:

  • filetype必须设置为.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

现在它非常适合储蓄。

enter image description here

关于此脚本和输入的名称的其他问题发布在一个新问题:vba script to save workbook overwrites entered filename

excel vba save-as xlsb
1个回答
2
投票

我认为问题可能是你没有过滤从GetSaveAsFilename收到的文件名,所以试试:

Application.GetSaveAsFilename(fileFilter:="Excel binary sheet (*.xlsb), *.xlsb")
© www.soinside.com 2019 - 2024. All rights reserved.