1. 程式人生 > >學以致用——使用VBA複製整理後的資料到新的工作表並另存為新檔案(Save a worksheet as a workbook)

學以致用——使用VBA複製整理後的資料到新的工作表並另存為新檔案(Save a worksheet as a workbook)

需求:某個欄位需要基於當前資料和十幾個獨立的原始檔定期整理,整理後的檔案會多出0到n條新資料。目前採用全量更新的方式匯入這些新資料。即,需要提供包括這幾條新資料在內的所有資料的完整檔案。而這個完整檔案,可通過以下程式碼自動生成。(很簡單的一個VBA小段程式)

Sub createNewDataFile()

Dim sourceRows As Integer           '整理後的資料行數(用於複製、另存為新的Data File資料)
Dim targetRows As Integer           '現有Data File的資料行數(即,上一期整理後的資料行數,用於清空現有資料)
Dim sourceSht As Worksheet          '整理後的工作表,即“ManuallyCollated_work”
Dim targetSht As Worksheet          '整理後的工作表的資料要複製到此工作表,進而另存為新的的Data File
Dim filePath As String              'Data File的儲存路徑
Dim timeStamp As String             '儲存Data File時的時間戳

filePath = "C:\Data_File\AutoCreated\"
Set sourceSht = ThisWorkbook.Worksheets("ManuallyCollated_work")
Set targetSht = ThisWorkbook.Worksheets("ManuallyCollated_new")

sourceRows = sourceSht.UsedRange.rows.Count
targetRows = targetSht.UsedRange.rows.Count

targetSht.Range("A2:G" & targetRows).ClearContents          '複製新內容前先清空現有內容

sourceSht.Range("A2:D" & sourceRows).Copy targetSht.Range("A2")   '複製PID, CTY, SID和RD
sourceSht.Range("K2:L" & sourceRows).Copy targetSht.Range("E2")   '複製SRC和UK
sourceSht.Range("P2:P" & sourceRows).Copy targetSht.Range("G2")   '複製LUD
'將整理後的資料另存為單獨的Data File
targetSht.Select
targetSht.Copy
timeStamp = Format(Now, "yyyy-mm-dd hh_mm_ss")
ChDir filePath
ActiveWorkbook.SaveAs filename:= _
        filePath & "ManuallyCollatedData_" & timeStamp & ".xlsx", _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub