Excel在dynamic目录path中生成新的工作簿

我正在使用根据所选国家/地区生成报告的工作簿。 每个国家都使用特定的path目录。

当涉及到从他们的根文件夹中导入信息时,就OK了。

我的问题是当我用报告生成一个新的工作簿。 我试图把它保存在随国家而变化的具体位置:

'Generate a new workbook refering to the first Worksheet Set WkReport = Workbooks.Add(xlWBATWorksheet) With WkReport // Skip selecting the sheet, just reference it explicitly and copy it after// // the blank sheet in the new wb. ThisWorkbook.Worksheets("REPORT").Copy after:=.Worksheets(.Worksheets.Count) End With // Kill alerts, delete the blank sheet in the new wb and turn alerts back on// Application.DisplayAlerts = False With WkReport .SaveAs Filename:="L:\Fold1\Fold2\Fold3\" & rngFolder & "\" & rngYear & "\" & rngMonth &"\"& rngName & "_Report_" & rngDate & ".xlsx" End With Application.DisplayAlerts = True'`enter code here` 
  • L:\ Fold1 \ Fold2 \ Fold3:固定path
  • rFolder是国家的道路
  • rngYear是国家内子文件夹的path
  • rngMonth是年内子文件夹的path

(rngSmthing是指工作簿中单元格的范围)

所有这些都是根据用户介绍的信息而变化的dynamic范围。

因此,当我创build工作簿时,必须根据此信息将其保存在不同的位置。

文件的名称包含另一个dynamic范围“rngName”,后跟Report和“rngDate”:Filename = rngName_Report_rngDate.xlsx

我的代码是用文件名保存在L:\ Fold1 \ Fold2 \ Fold3中.xlsx

德国:L:Folder1 \ Folder2 \ Folder3 \ Germany \ 2015 \ 06-2015 \ GE_Report_31-06-15.xlsx匈牙利:L:Folder1 \ Folder2 \ Folder3 \ Hungary \ 2015 \ 06_2015 \ HU_Report_31-06-15.xlsx

!问题解决了! 我只是忘了设置rngSmthngvariables…(拍手拍)无论如何,有人可能会发现它有用的情况下,你想根据你的范围设置不同的保存path:

 'cellRef is a named cell within the workbook where user selects data rngName = ws.Range("cellRef").Value 

这样你就有了一个dynamicpath查找器。

很高兴你find答案。 作为一个侧面说明 – 这是我将如何写程序。

 Sub Test() Dim wkReport As Workbook Dim sFolder As String Dim sPath As String Dim rngFolder As Range Dim rngName As Range With ThisWorkbook.Worksheets("Sheet1") Set rngFolder = .Range("A1") Set rngName = .Range("A2") End With sFolder = "L:\Fold1\Fold2\Fold3\" & rngFolder & "\" & Format(Date, "yyyy\\mm mmm\\") CreateFolder sFolder sPath = sFolder & rngName & "_Report_" & Format(Date, "dd-mm-yy") & ".xlsx" Set wkReport = Workbooks.Add(xlWBATWorksheet) With wkReport ThisWorkbook.Worksheets("REPORT").Copy after:=.Worksheets(.Worksheets.Count) .Worksheets(1).Delete .SaveAs sPath, ThisWorkbook.FileFormat End With End Sub ' Purpose : Will Recursively Build A Directory Tree Sub CreateFolder(Folder) On Error Resume Next Dim objFSO As Object: Set objFSO = CreateObject("Scripting.FileSystemObject") If Folder <> "" Then If Not objFSO.FileExists(objFSO.GetParentFolderName(Folder)) Then Call CreateFolder(objFSO.GetParentFolderName(Folder)) End If objFSO.CreateFolder (Folder) End If End Sub 

注意:
Format(Date, "yyyy\\mm mmm\\")将返回2015\12 Dec\
Format(Date, "yyyy\mm mmm\")将返回2015m12 Dec

真的很抱歉,家伙…还有很多谢谢你的帮助…没有办法你能猜到它。

问题是,我有他们这些variables设置在一个不同的macros,我完全忘记了…所以当然,它不认识variables..因为我没有创build它们在这个macros!

再次道歉应该在发布前两次查看我的代码