EXCEL VBA - 根据范围值设置动态文件名

时间:2016-10-31 20:20:07

标签: excel vba

我是VBA新手试图根据范围值保存文件名。每次Userform更新信息时,单元格中的信息都会更改。运行宏时,我不断收到运行时错误“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"

2 个答案:

答案 0 :(得分:0)

删除扩展程序" .xlsx"并添加fileformat:= xlOpenXMLWorkbook
https://msdn.microsoft.com/en-us/library/office/ff198017.aspx
要获得包含宏的工作簿,请使用fileformat:= xlOpenXMLWorkbookMacroEnabled

答案 1 :(得分:0)

我最终在活动工作表内的单个单元格中使用CONCATENATE函数来输入来自多个单元格的信息。我使用CONCATENATE函数隐藏了列,因此用户无法看到它并且无法打印。从CONCATENATE函数生成的信息将根据用户输入Userform而更改。这是我使用的代码。感谢@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