想把兩個語法合併成一個新功能,但因為理解不徹底不知從何修改

各位好:

之前我在這裡問過各位兩種excel功能,分別是「把大量工作表逐個分成獨立檔案另存,並避開不必要的檔案。」

大概長成以下這樣:

Sub 另存分頁()
'
' 另存分頁 巨集

For Each w In Worksheets '宣告
If w.Name <> "202101" Then '不複製
If w.Name <> "202102" Then
If w.Name <> "202103" Then
If w.Name <> "202104" Then
'If w.Name <> "202105" Then
'If w.Name <> "202106" Then '不複製

Windows("資料2021.xlsx").Activate '回主要表格視窗
Sheets(w.Name).Select
Sheets(w.Name).Copy
ChDir "C:\TEST\test資料-分頁\"
ActiveWorkbook.SaveAs Filename:="C:\TEST\test資料-分頁\" & w.Name & ".xlsx", _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close '關閉該視窗
Windows("資料2021.xlsx").Activate '回主要表格視窗

End If
Next w

End Sub

----------------

另外一個功能是「把A資料夾的檔案『逐個打開』並另存成CSV格式」,因為該檔案是CSV檔,所以另存的時候工作表會自動分成單獨檔案個別存起,沒什麼太大問題。

Sub SaveToEach_批量工作表另存()

Dim fDir As String
Dim wB As Workbook
Dim wS As Worksheet
Dim fPath As String
Dim sPath As String
fPath = "C:\TEST\test資料\"
sPath = "C:\TEST\test資料-分頁\"
fDir = Dir(fPath)
Do While (fDir <> "")
If Right(fDir, 4) = ".xls" Or Right(fDir, 5) = ".xlsx" Then
On Error Resume Next
Set wB = Workbooks.Open(fPath & fDir)
'MsgBox (wB.Name)
For Each wS In wB.Sheets

'csv
wS.SaveAs sPath & wB.Name & ".csv", xlCSV

Next wS
wB.Close False
Set wB = Nothing
End If
fDir = Dir
On Error GoTo 0
Loop

End Sub

-----------------

今天我剛好需要這兩種功能同時使用,一個是「將資料夾A內檔案逐個打開並另存到B資料夾」這部分的功能,還需要「將檔案打開後所有工作表分別另存」的功能。

需要能做到「A資料夾內『每個檔案每個分頁』獨立出來另存新檔到B資料夾內」這樣的效果

我試著把w.name和wS、wB等關係弄清楚然後修改,但最後產生的結果:

一種是——全部打開分割但不另存新檔

一種是——開了之後不會幫你關掉直到檔案多到當機為止

還有一個挺有趣的——完成之後另存新檔,但是每個檔案都擁有「每一個分頁」

目前都只有做到這種悲慘效果

請問我是哪裡理解錯誤了,該從哪裡開始修正才能合併出我要的功能呢?

感謝各位
2021-08-02 12:21 發佈
文章關鍵字 語法 功能
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?