2016-10-31 76 views
0

我是VBA新手,尝试根据范围值保存文件名。每次Userform更新信息时,单元格中的信息都会更改。宏运行时,我不断收到运行时错误“1004”。这是我正在使用的代码:EXCEL VBA - 根据范围值设置动态文件名

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" 
+0

串联是否产生有效的路径?文件夹是否存在?你在Windows上,对吗? –

+0

您参考的单元格中有什么值?有没有在文件名中有效的字符?您是否尝试保存到名为TEST的文件夹中,或者直接将文件名保存到桌面上以开始测试...? – Werrf

+0

尝试创建一个字符串,并查看它,以便不知道文件是什么: Dim fn As String fn =“C:\ Users \ ME \ Desktop \ TEST”&表格(“失败”)。 (“B8”)。值和表格(“失败”)。范围(“C8”)。值和表格(“失败”)。范围(“B10”)。值和表格(“失败” C10“)。Value&”.xlsx“ MsgBox fn –

回答

0

我结束了在活动工作表内的单个单元格中使用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