【发布时间】:2015-12-18 11:16:48
【问题描述】:
我正在使用根据所选国家/地区生成报告的工作簿。每个国家都使用特定的路径目录。
当涉及到从他们的根文件夹导入信息时,没问题。
我的问题是当我生成带有报告的新工作簿时。我尝试将其保存在随国家/地区变化的特定位置:
'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:固定路径
- rngFolder 是国家的路径
- rngYear 是 Country 中子文件夹的路径
- rngMonth 是年中子文件夹的路径
(rngSmthing 是指工作簿中单元格的范围)
所有这些都是根据用户介绍的信息而变化的动态范围。
因此,当我创建工作簿时,必须根据此信息将其保存在不同的位置。
文件名包含另一个动态范围“rngName”,后跟 Report 和“rngDate”: 文件名 = rngName_Report_rngDate.xlsx
我的代码所做的是将文件名 Report.xlsx
保存在 L:\Fold1\Fold2\Fold3 中用户选择的路径目录示例... 德国: 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
!问题解决了!我只是忘了设置 rngSmthng 变量...(Clap Clap)无论如何,如果您想根据您的范围设置不同的保存路径,有人可能会发现它很有用:
'cellRef is a named cell within the workbook where user selects data
rngName = ws.Range("cellRef").Value
这样你就有了一个动态路径查找器。
【问题讨论】:
-
文件名中使用的所有变量是否都返回有效值?例如
rngDate是否包含文件名的任何非法字符?正如@Kathara 所说 - 您需要即时创建文件夹吗? -
嗨,Darren,所有变量都可以正常工作(我使用相同的变量打开文件夹路径并找到要导入数据的文件)。我虽然相同的代码将打开相同的文件,而不是打开文件可以保存它。文件路径示例:L;Folder1\Folder2\Folder3\Germany\2015\06-2015\GE_Report_31-03-15.xlsx
-
不应该是:
L:\Folder1\Folder2\Folder3\Germany\2015\06-2015\GE_Report_31-03-15.xlsx还是;是错字? -
快速回复错字:很抱歉