- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 139
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-6-9
               
|
回復 4# PJChen
參考看看- Sub copy_all()
- Dim ws() '已經開啟視窗
- books = Array("庫存資料表.xlsx", "庫存.xlsx") '欲開啟檔案
- mypath = ThisWorkbook.Path '存放檔案資料夾
- For Each w In Windows '已經開啟視窗
- ReDim Preserve ws(s)
- ws(s) = w.Caption
- s = s + 1
- Next
- For Each b In books '測試檔案是否開啟
- If UBound(Filter(ws, b)) = -1 Then Workbooks.Open (mypath & "\" & b) '檔案未開啟則開啟
- Next
- x = ThisWorkbook.Sheets(1).[H2] '準則
- With Workbooks(books(0)) '庫存資料表.xlsx
- Set a = .Sheets(1).Columns("D").Find(x, lookat:=xlWhole) '找準則位置
- If a Is Nothing Then MsgBox "找不到準則位置": End
- k = Application.CountIf(a.EntireColumn, x) '合乎準則列數
- Set Rng = .Sheets(1).Cells(a.Row, "B").Resize(k, 26) 'B:AA欄資料
- With Workbooks(books(1)) '庫存.xlsx
- k1 = Application.CountIf(.Sheets(1).Columns("D"), x) '合乎準則列數
- Set a = .Sheets(1).Columns("D").Find(x, lookat:=xlWhole) '找準則位置
- If a Is Nothing Then Set a = .Sheets(1).Cells(.Sheets(1).Rows.Count, 4).End(xlUp).Offset(1) '原資料不存在準則資料
- yn = MsgBox("原資料" & k1 & "列,新資料" & k & "列,是否複製?", vbYesNo)
- If yn = 6 Then
- a.Offset(, -2).Resize(k, 26).Value = Rng.Value '寫入新資料
- MsgBox "資料已更新"
- Else
- MsgBox "資料未更新", 48
- End If
- End With
- End With
- End Sub
複製代碼 |
|