我正在嘗試使用Excel VBA自動化每日過程以從源文件複製6個工作表並在Prod文件中創建副本,並用以下名稱替換舊的同名工作表這將成爲一個「日常重複過程」,我需要將6個工作表從源文件複製到Prod文件。這兩個文件中的工作表名稱相同,並且希望保留相同的工作表名稱,因爲我的公式提供了Prod文件 - 主報告。Excel VBA將多個工作表從源文件複製到生產文件
我不知道什麼是最有效率和最有效的方法,首先從Prod文件中刪除先前的工作表,然後將當前工作表複製到Prod文件。
或者
源文件工作表督促文件,這將創建以數字2的副本,刪除先前的工作表,並從當前工作表名稱中刪除2複製。
像往常一樣,我很感謝這個網站,總是找到解決方案。
下面的過程是:
從源文件 - 我想複製下面的工作表:
文件名,表名和日期約定:
源文件名:CM棱鏡MTD ROR MMDDYYYY.xlsx
工作表:
-
個
- 活動在全球範圍內
- 活動USRR
- 活動指數
- MACO
- 位數
- HY
督促文件 - 工作表的名稱將保持不變,並更換前工作。
文件名,表名和日期約定
PROD文件名:CM複合MTD爲MM.DD.xlsm
的工作表:
- 活動在全球範圍內
- 活動USRR
- 活躍指數
- MACO
- 位數
- HY
而且源文件的工作表對單元格「D4」估值日期爲「09-OCT-2015」,在這裏我想補充一個「估值日期檢查「以確保從源文件複製到Prod文件的工作表具有與單元」D6「上的產品文件相同的」2015/10/09「。 因此,如果估價日期與Prod文件相同,則不要複製它。 目標是添加任何不屬於評估日期的ALERTS或觸發器。
這是我有:
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
末次
感謝大衛的建議。我的代碼看起來很長,有一種方法可以用Source File和Prod File的所有Dim來簡化它。 – cemg
我不認爲你的代碼有什麼問題,它已經很簡潔了。你可以在一行中聲明多個變量,但我不喜歡這樣做,例如'Dim FileNameSource $,FileNameProd $'可以在一行上。 –
大衛感謝您的更正。我正在運行它。我想簡化幾行代碼,太混亂了。再次感謝。 – cemg