【发布时间】:2017-01-23 14:19:17
【问题描述】:
我有一个 master Excel sheet 用于吐出工资单的详细信息。工作表上的数字由 A2 中的数据验证下拉列表驱动,该下拉列表使用从数据选项卡中提取的识别信息(Last、First、Region、PayPeriod、Year)填充 B2:G2。
我想做的是让一个宏将下拉列表中每个选项的工作表副本保存到基于 B2:G2 中的信息的层次结构中的特定文件夹中。
例如,
ID Last First Region PP Year
10001 Smith Scott DC PP1 2016
我希望将名为“2016_PP1_DC_Smith_Scott.xlsx”的工作表保存在文件夹 C:\2016\PP1\DC 中。
然后改成
ID Last First Region PP Year
10002 Jones Karen NY PP3 2015
并将工作表“2015_PP3_NY_Jones_Karen.xlsx”保存在文件夹 C:\2015\PP3\NY 中。
我有一个宏,它是其中的一部分。它遍历每个下拉菜单并使用正确的文件名保存文件(尽管它正在重命名初始文件)(编辑)我需要帮助添加功能以将工作表保存在文件夹层次结构中,而不是用最新的文件覆盖原始文档保存的工作表名称。
继续使用此宏进行编辑或从头开始完全没问题。
Sub PrintValidationChoices()
Dim wbSource As Workbook
Dim r As Long, i As Long
Dim relativePath As String
Dim year As String
Dim quarter As String
Dim pp As String
Dim region As String
Dim doctor As String
Set wbSource = ActiveWorkbook
r = Range("ID").Cells.Count
For i = 1 To r
Range("A2") = Range("ID").Cells(i)
year = ActiveSheet.Range("G2")
pp = ActiveSheet.Range("F2")
region = ActiveSheet.Range("E2")
hospital = ActiveSheet.Range("D2")
doctor = ActiveSheet.Range("B2") & "_" & ActiveSheet.Range("C2")
'visually validating what will be used - not needed
Range("H3") = year
Range("H4") = pp
Range("H5") = region
Range("H6") = hospital
Range("H7") = doctor
sname = year & "_" & pp & "_" & region & "_" & hospital & "_" & doctor & ".xls"
relativePath = wbSource.Path & "\" & sname 'use path of wbSource
Range("H8") = relativePath
Application.DisplayAlerts = False
ActiveWorkbook.CheckCompatibility = False
ActiveWorkbook.SaveAs Filename:=relativePath, FileFormat:=xlExcel8
Application.DisplayAlerts = True
Application.Wait (Now + TimeValue("00:00:01")) 'pausing to see actions - not needed
Next i
Range("A2") = Range("ID").Cells("1") 'return to start of list
MsgBox "Done!"
End Sub
谢谢大家的帮助!如果您觉得冗长,最好在您的回复中提供一些详细信息,以便我学习。
【问题讨论】:
-
所以你的宏让你明白了一点,那么你需要帮助来获得最后一部分吗?如果是这样,您需要帮助的部分是什么?还是您的代码给了您错误/意外的结果?或者它根本不起作用,等等?我真的不知道你的问题/问题是什么。
-
嗨布鲁斯 - 感谢您的回复。我的代码将在单个目录中保存一系列正确命名的工作表。我需要帮助添加将工作表保存在文件夹层次结构中的功能,而不是用最近保存的工作表名称覆盖原始文档。我编辑了我的原始帖子以反映这一点。
-
所以你只想摆脱与
wbSource路径的连接。此外,您的第二个示例不应该是 “并将工作表“2015_PP3_NY_Jones_Karen.xlsx”保存在文件夹 C:\2015\PP3\NY 中。” 而不是 ”并保存工作表“2016_PP1_NY_Jones_Karen” .xlsx”在文件夹 C:\2015\PP3\NY。”? -
不确定您所说的“摆脱连接”是什么意思,是的,更新了该文件名。
-
我的意思是,既然你想要像“C:\2015\PP3\NY”这样的文件夹路径,它们主要是从单元格内容构建的,除了“C:\”第一部分,我猜@不再需要 987654326@