首页 > 解决方案 > VBA Excel 以灵活的名称保存 .xlsx 文件

问题描述

我想用灵活的名称保存我的文件,它会随着单元格值的变化而变化。

一个答案在这里:

使用与单元格值对应的名称保存文件

但是,我还想要名称的一些固定部分,与上面查询中描述的部分不同,它不会改变。

基于此解决方案,我尝试编写如下内容:

Sub Save ()
Dim name As String, Custom_Name As String

name = Range("A2").Value
Custom_Name = "NBU" & name & "- Opportunity list.xlsx"
ActiveWorkbook.SaveAs Filename:=Custom_Name

实际上,我收到了一个错误:

此扩展名不能与所选文件类型一起使用。在文件名文本框中更改文件扩展名或通过更改另存为类型来选择不同类型的文件。

我想在 .xlsx 扩展名中有这个文件。

Excel VBA - 另存为 .xlsx 扩展名

上面的答案与我的情况并不完全匹配。如果可能,删除新保存的文件中的所有表单控制按钮至关重要。

感谢和问候,

End Sub

标签: excelvba

解决方案


列出的例程中没有用于保存文件的操作。它只是简单地获取单元格的内容并创建一个带有包装值的字符串。

我不完全确定您的目标是什么,但您需要从您提供的第二个链接添加操作。Workbook.SaveAs 方法

有关我为测试而创建的工作示例,请参见下面的代码。

Public Sub Save()
    Dim name As String, Custom_Name As String

    name = Range("A2").Value
    Custom_Name = ThisWorkbook.Path & "\" & "NBU" & name & " - Opportunity list.xlsx"

    'Disable alert when saving
    Application.DisplayAlerts = False

    'Save the workbook.
    ActiveWorkbook.SaveAs Filename:=Custom_Name, FileFormat:=51

End Sub

您应该注意,执行此代码后,您现在将位于新创建的文件中。这不是出口。

对此进行测试,如果您有任何问题,请告诉我。您的代码中有一些似乎是不必要的,但如果您发现这回答了您的第一个问题,我们可以解决这些问题。

编辑:

我还会专门调用带有范围的工作表。

name = Worksheets("Sheet1").Range("A2")


推荐阅读