根据特定单元格中的值指定文件位置

时间:2018-11-21 19:03:13

标签: excel vba

我可以基于某个单元格值更改文件名。我正在尝试根据某个单元格中的值更改文件位置。

“ B6”中有一个下拉列表,每个可用选项都有一个文件夹。

这是我当前的代码:

Sub SFVTEST()

Dim filepath

filepath = """T:\Restricted - Department\GLA_Shortcuts\Reagent and Column _ Validation\" & Range("B6") & "\" & Range("T26") & ".csv"""

ActiveWorkbook.SaveAs Filename:=filepath,_ FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

End Sub

获取

  

“运行时错误'1004':对象'_Workbook'的方法'SaveAs'失败””

有错误的代码行
enter image description here

2 个答案:

答案 0 :(得分:0)

错误似乎是在字符串和变量之间切换。字符串用双引号引起来,而变量则没有。在两者之间切换时,请使用“&”。

Sub SaveForValidation()
'
' SaveforValidation Macro
'

' File Name Formula Found in T26 in white text.
    ActiveWorkbook.SaveAs Filename:= _
        "T:\Restricted - Department\GLA_Shortcuts\Reagent and Column 
         Validation\" & Range("B6") & "\" & Range("T26") & ".csv" _
         , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

End Sub

将文件名构建在变量中以简化测试可能是有意义的,例如:

Sub SaveForValidation()
Dim filepath
filepath = "T:\Restricted - Department\GLA_Shortcuts\Reagent and Column Validation\" & Range("B6") & "\" & Range("T26") & ".csv"

ActiveWorkbook.SaveAs Filename:=filepath, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

End Sub

答案 1 :(得分:0)

上面的代码中您具有要另存为.csv的文件名,但您希望它成为启用宏的工作簿...

Sub SaveForValidation()

    Dim filepath As String
    filepath = "T:\Restricted - Department\GLA_Shortcuts\Reagent and Column Validation\" & Range("B6") & "\" & Range("T26") & ".xlsm"

    ActiveWorkbook.SaveAs Filename:=filepath, FileFormat:=52, CreateBackup:=False

End Sub

我个人使用文件格式#而不是文字。 52 = .xlsm

对于其他类型,请参见下文 51 = xlOpenXMLWorkbook(不含2007年的宏,.xlsx)

52 = xlOpenXMLWorkbookMacroEnabled(带有或不带有2007年的宏,.xlsm)

50 = xlExcel12(2007年的Excel Binary Workbook,带有或不带有宏,.xlsb)

56 = xlExcel8(Excel 2007中的97-2003格式,.xls)