【问题标题】:EXCEL VBA - Setting a dynamic Filename based on range valuesEXCEL VBA - 根据范围值设置动态文件名
【发布时间】:2016-11-02 00:00:37
【问题描述】:

我是一个 VBA 新手,试图根据范围值保存文件名。每次用户窗体更新信息时,单元格中的信息都会更改。运行宏时,我不断收到运行时错误“1004”。这是我正在使用的代码:

ActiveWorkbook.SaveAs FileName:="C:\Users\ME\Desktop\TEST" &  Sheets("Fail").Range("B8").Value & Sheets("Fail").Range("C8").Value & Sheets("Fail").Range("B10").Value & Sheets("Fail").Range("C10").Value & ".xlsx"

我感觉我的代码格式不正确。任何建议将不胜感激!

编辑:添加更多信息:我正在从另一个工作簿中提取工作表并创建一个临时文件。我将临时文件设为活动工作簿,以便将其保存到不同的

Worksheets("Fail").Visible = True
Worksheets("Fail Screenshot").Visible = True
tempFile = Environ("Temp") & "\Failed.xlsx"
Set wb = ThisWorkbook
wb.Save
wb.Sheets(Array("Fail", "Fail Screenshot")).Copy
Set tempWB = ActiveWorkbook
'TEST is the folder name on my desktop.
ActiveWorkbook.SaveAs FileName:="C:\Users\ME\Desktop\TEST" &  Sheets("Fail").Range("B8").Value & Sheets("Fail").Range("C8").Value & Sheets("Fail").Range("B10").Value & Sheets("Fail").Range("C10").Value & ".xlsx"

【问题讨论】:

  • 串联是否产生有效路径?文件夹存在吗?你在 Windows 上,对吧?
  • 您引用的单元格中有哪些值?文件名中是否有任何无效字符?您是要保存到名为 TEST 的文件夹中,还是使用以 TEST... 开头的文件名直接保存到桌面?
  • 尝试创建一个字符串并查看它,以便了解文件名是什么: Dim fn As String fn = "C:\Users\ME\Desktop\TEST" & Sheets("Fail" ).Range("B8").Value & Sheets("Fail").Range("C8").Value & Sheets("Fail").Range("B10").Value & Sheets("Fail")。 Range("C10").Value & ".xlsx" MsgBox fn
  • Chris - 我直接从文件夹中复制了路径。我正在使用 Windows。 Werrf - 单元格值都是文本。我正在尝试将其保存到名为“TEST”的文件夹中。
  • @Will BeDeleted - 我将 fn = 设置为我的规范,并且我有 ActiveWorkBook.SaveAs fn,但我仍然遇到同样的错误。

标签: excel vba


【解决方案1】:

删除扩展名“.xlsx”并添加文件格式:=xlOpenXMLWorkbook
https://msdn.microsoft.com/en-us/library/office/ff198017.aspx
要拥有带有宏的工作簿,请使用 fileformat:=xlOpenXMLWorkbookMacroEnabled

【讨论】:

  • 试一试,我得到了同样的 1004 错误。感谢您的帮助。
【解决方案2】:

我最终在活动工作表的单个单元格中使用了 CONCATENATE 函数来输入来自多个单元格的信息。我用 CONCATENATE 函数隐藏了该列,这样用户就不会看到它,也不会打印。 CONCATENATE 函数生成的信息将根据用户进入用户表单而改变。这是我使用的代码。感谢 @SBF 使用 fileformat:=xlOpenXMLWorkbook。我最初使用“.xlsx”并不断收到兼容性弹出通知。

Dim fileName As String
fileName = "C:\Users\ME\Desktop\TEST" & Sheets("Fail").Range("M7").Value &   ".xlsx"
ActiveWorkbook.SaveAs fileName:=fileName, FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多