之前我在這裡問過各位兩種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等關係弄清楚然後修改,但最後產生的結果:
一種是——全部打開分割但不另存新檔
一種是——開了之後不會幫你關掉直到檔案多到當機為止
還有一個挺有趣的——完成之後另存新檔,但是每個檔案都擁有「每一個分頁」


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



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


























































































