【发布时间】:2015-10-13 20:36:30
【问题描述】:
我正在尝试使用 Excel VBA 自动化日常流程,以从源文件中复制 6 个工作表并在 Prod 文件中创建副本并用相同名称替换旧的同名工作表。这将成为“日常重复过程” 我需要将 6 个工作表从源文件复制到产品文件。两个文件中的工作表名称相同,并且希望保留相同的工作表名称,因为我有公式提供 Prod 文件 - 主报告。
我不确定首先从 Prod 文件中删除以前的工作表然后将当前工作表复制到 Prod 文件中的最有效和最有效的方法是什么。
或者
将源文件工作表复制到产品文件,这将创建一个编号为 2 的副本,删除之前的工作表并从当前工作表名称中删除 2。
像往常一样,我很感谢这个总能找到解决方案的网站。
流程如下:
从源文件 - 我想复制以下工作表:
文件名、工作表名和日期约定:
源文件名:CM Prism MTD ROR MMDDYYYY.xlsx
工作表:
- 全球活跃
- 主动 USRR
- 活跃指数
- MACO
- 分位数
- HY
到 Prod 文件 – 工作表名称将保持不变并替换之前的工作表。
文件名、工作表名和日期约定
产品文件名:CM Composite MTD as of MM.DD.xlsm
工作表:
- 全球活跃
- 主动 USRR
- 活跃指数
- MACO
- 分位数
- HY
此外,源文件工作表在单元格“D4”上的估价日期为“09-Oct-2015”,我想在其中添加“估价日期检查”以确保从源文件复制工作表Prod 文件的估价日期与单元格“D6”上的 Prod 文件相同,为“10/09/2015”。 因此,如果评估日期与 Prod 文件的副本相同,则不要复制它。 目标是添加任何不针对评估日期的警报或触发器。
这就是我所拥有的:
Sub copyNreplaceWorksheets()
Application.EnableEvents = False
Dim DpathSource As String
Dim DpathProd As String
Dim FolderName As String
Dim FileNameSource As String
Dim FileNameProd As String
Dim HolidayList
Dim RptDateSource As Date
Dim RptDateProd As Date
Dim wkbSource As Workbook
Dim wkbProd As Workbook
Dim shtToCopy As Worksheet
Set HolidayList = Range("I77:I86")
''****Set the Report File Date*****
'''Source File: CM Prism MTD ROR MMDDYYYY.xlsx
RptDateSource = Format(WorksheetFunction.WorkDay(Now(), -1, HolidayList), "mmddyyyy")
'''Prod File: CM Composite MTD as of MMDD.xlsm
RptDateProd = Format(WorksheetFunction.WorkDay(Now(), -1, HolidayList), "mm.dd")
'''****Set the File Name*****
'''Source File: CM Prism MTD ROR MMDDYYYY.xlsx
FileNameSource = "CM Prism MTD ROR" & RptDateSource & ".xlsx"
'''Prod File: Aladdin Composite MTD as of MMDD.xlsm
FileNameProd = "CM Composite MTD as of" & RptDateProd & ".xlsm"
'''****Set the Directory Path****
DpathSource = "U:\Performance\CM Performance\" & FileNameSource & ""
DpathProd = "U:\Performance\ROR calculations\2015\Daily Returns\" & FileNameProd & ""
Set wkbSource = Workbooks.Open("DpathSource")
Set wkbProd = Workbooks.Open("DpathProd")
Set shtToCopy = wkbSource.Sheets("Active US")
shtToCopy.copy wkbProd.Sheets("Active US")
Application.EnableEvents = True
结束子
【问题讨论】: