【发布时间】:2020-06-03 21:54:14
【问题描述】:
我想将我的文件保存在由...excel 宏创建的文件夹中。
vba excel文件夹创建过程已经介绍到这里了:
Create a folder and sub folder in Excel VBA
按照它,我已将其分配给我的情况:
Sub Createfolder ()
Dim fso As Object
Dim fldrtitle As String
Dim flrdrname As String
Dim fldrpath As String
Set fso = CreateObject("scripting.filesystemobject")
fldrtitle = Worksheets("Sheet1").Range("A2").Value
fldrname = "Pre-planning NBU " & fldrtitle
fldrpath = "H:\ProfileV2\Desktop\Pre planning NBU\ Alex list new\" & fldrname
If not fso.FolderExists(fldrpath) Then
fso.Createfolder (fldrpath)
End If
End Sub
创建文件夹的位置。 根据previous query,我保存文件的方式如下:
Sub Save()
Dim name As String, Custom_Name As String
name = Worksheets("Sheet1").Range("A2").Value
Custom_Name = ThisWorkbook.Path & "\" & "NBU " & name & " - Opportunity list.xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Custom_name, FileFormat:=51
End Sub
现在,我尝试将它们组合在一起,其中方式 1 是:
Sub Save()
Call Createfolder
Dim name As String, Custom_Name As String
name = Worksheets("Sheet1").Range("A2").Value
Custom_Name = ThisWorkbook.Path & Createfolder & "NBU " & name & " - Opportunity list.xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Custom_name, FileFormat:=51
End Sub
这里出现错误: 预期的函数或变量
我理解的,因为我无法在代码中获取外部宏。
后来我尝试了另一种方法:
Sub Savetofolder ()
Dim fso As Object
Dim fldrtitle As String
Dim flrdrname As String
Dim fldrpath As String
Dim name As String, Custom_Name As String
Set fso = CreateObject("scripting.filesystemobject")
fldrtitle = Worksheets("Sheet1").Range("A2").Value
fldrname = "Pre-planning NBU " & fldrtitle
fldrpath = "H:\ProfileV2\Desktop\Pre planning NBU\ Alex list new\" & fldrname
If not fso.FolderExists(fldrpath) Then
fso.Createfolder (fldrpath)
End If
'name = Worksheets("Sheet1").Range("A2").Value
Custom_Name = ThisWorkbook.Path & Createfolder & "NBU " & fldrtitle & " - Opportunity list.xlsx"
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=Custom_name, FileFormat:=51
End Sub
我关闭了name 变量,因为它与fldrtitle 相同。
结果我的文件保存在创建的文件夹旁边,如下图所示:
有没有机会将它保存在这个文件夹中?
【问题讨论】:
-
哪行代码抛出错误?
-
工作簿名称创建中的
Createfolder想要成为什么? -
fldrpath = "H:\ProfileV2\Desktop\Pre planning NBU\ Alex list new\" & fldrname 这是我的文件夹名称。一旦我使用第二种解决方案,就没有错误。在第一个解决方案中,此行引发错误:Custom_Name = ThisWorkbook.Path & Createfolder & "NBU " & name & " - Opportunity list.xlsx"
-
就像我之前说的
& Createfolder &没有意义...Createfolder不是返回路径的函数。即使是这样,与ThisWorkbook.Path一起使用也没有任何意义...当您需要构建一条看起来很奇特的路径时,请尝试Debug.Print ThisWorkbook.Path & Createfolder & "NBU " & fldrtitle & " - Opportunity list.xlsx"看看它会返回什么。 -
好的,最后一个代码怎么样 - 我的第二种方法?因为文件保存在我相信的文件夹旁边,所以代码中的不匹配是微不足道的。谢谢你的提示。