Nhờ giúp để CODE hoạt động được với nhiều SHEET hơn nữa (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tiendungnst

Thành viên chính thức
Tham gia
9/7/07
Bài viết
87
Được thích
5
Option Explicit
Sub BCTK(Folder As String, ShName As String, SrcRng As String, Target As Range)
Dim Temp As String
Temp = ShName & "'!" & Range(SrcRng).Address(, , 2)
If Right(Folder, 1) <> "\" Then Folder = Folder & "\"
ActiveWorkbook.Names.Add "Arr", "=""'" & Folder & "[""&Files(""" & Folder & "*.*"")&""]" & Temp & """"
Target.Consolidate Evaluate("Arr"), 9, 0, 1
ActiveWorkbook.Names("Arr").Delete
End Sub
Sub Tonghop()
Dim Folder As String, ShName As String, SrcRng As String
Range("B12:M27").ClearContents
With CreateObject("Shell.Application")
On Error Resume Next
Folder = .BrowseForFolder(0, "", 1).Self.Path
End With
ShName = "MAU1": SrcRng = "B12:M27"
BCTK Folder, ShName, SrcRng, Range("B12")
End Sub

Đoạn CODE trên mình copy được từ các cao thủ của GPE và mình chỉnh sửa lại để phục vụ yêu cầu công việc của mình thấy rất đúng với yêu cầu, nhưng vấn đề còn một tí vướng mắc là File Excel tổng hợp của mình có hơn 10 SHEET và các file dữ liệu cũng chung một mẫu, nhưng đoạn CODE trên chỉ tổng hợp cho một SHEET có tên là "MAU1". Vậy đoạn CODE phải chỉnh sửa như thế nào để tất cả các SHEET trong File có thể tổng hợp dữ liệu từ các SHEET tương ứng của các File nguồn
Nhờ các ACE GPE xem và giúp ah. Xin cảm ơn!
 
Option Explicit
Sub BCTK(Folder As String, ShName As String, SrcRng As String, Target As Range)
Dim Temp As String
Temp = ShName & "'!" & Range(SrcRng).Address(, , 2)
If Right(Folder, 1) <> "\" Then Folder = Folder & "\"
ActiveWorkbook.Names.Add "Arr", "=""'" & Folder & "[""&Files(""" & Folder & "*.*"")&""]" & Temp & """"
Target.Consolidate Evaluate("Arr"), 9, 0, 1
ActiveWorkbook.Names("Arr").Delete
End Sub
Sub Tonghop()
Dim Folder As String, ShName As String, SrcRng As String
Range("B12:M27").ClearContents
With CreateObject("Shell.Application")
On Error Resume Next
Folder = .BrowseForFolder(0, "", 1).Self.Path
End With
ShName = "MAU1": SrcRng = "B12:M27"
BCTK Folder, ShName, SrcRng, Range("B12")
End Sub

Đoạn CODE trên mình copy được từ các cao thủ của GPE và mình chỉnh sửa lại để phục vụ yêu cầu công việc của mình thấy rất đúng với yêu cầu, nhưng vấn đề còn một tí vướng mắc là File Excel tổng hợp của mình có hơn 10 SHEET và các file dữ liệu cũng chung một mẫu, nhưng đoạn CODE trên chỉ tổng hợp cho một SHEET có tên là "MAU1". Vậy đoạn CODE phải chỉnh sửa như thế nào để tất cả các SHEET trong File có thể tổng hợp dữ liệu từ các SHEET tương ứng của các File nguồn
Nhờ các ACE GPE xem và giúp ah. Xin cảm ơn!

Muốn chọn sheet nào thì thay chỗ màu đỏ.
Muốn chọn vùng nào cần tính thì thay chỗ màu xanh.

Range("B12:M27").ClearContents
ShName = "MAU1": SrcRng = "B12:M27"
 
Upvote 0
Muốn chọn sheet nào thì thay chỗ màu đỏ.
Muốn chọn vùng nào cần tính thì thay chỗ màu xanh.

Range("B12:M27").ClearContents
ShName = "MAU1": SrcRng = "B12:M27"

Mình đã thử, nhưng nếu chỉ thay chổ màu đỏ thành "MAU2" thì nó chỉ tổng hợp cho SHEET đó, Nhu cầu của mình là muốn tất cả các SHEET có trong File đều được tổng hợp từ các SHEET tương ứng của các file dữ liệu thì phải chỉnh như thế nào ah?
Đã thử như vầy: ShName = "MAU1, MÀU": SrcRng = "B12:M27" và như này: ShName = ("MAU1","MAU2"): SrcRng = "B12:M27" cũng ko được ah!
 
Upvote 0
Mình đã thử, nhưng nếu chỉ thay chổ màu đỏ thành "MAU2" thì nó chỉ tổng hợp cho SHEET đó, Nhu cầu của mình là muốn tất cả các SHEET có trong File đều được tổng hợp từ các SHEET tương ứng của các file dữ liệu thì phải chỉnh như thế nào ah?
Đã thử như vầy: ShName = "MAU1, MÀU": SrcRng = "B12:M27" và như này: ShName = ("MAU1","MAU2"): SrcRng = "B12:M27" cũng ko được ah!

Ít ra thì bạn cũng phải đưa lên đây vài file con và 1 file đích, ghi rõ kết quả bạn cần là gì chứ
(hỏi hoài mà chẳng thấy ai trả lời thì... tự biết rồi đấy)
 
Upvote 0
Ít ra thì bạn cũng phải đưa lên đây vài file con và 1 file đích, ghi rõ kết quả bạn cần là gì chứ
(hỏi hoài mà chẳng thấy ai trả lời thì... tự biết rồi đấy)
Cảm ơn Bác đã nhắc nhở, xin rút kinh nghiệm ah! Yêu cầu bài tập của E là CODE để tự tổng hợp dữ liệu của all các File có trong thư mục con ( tất cả các file đều có cùng biểu mẫu)
Vui lòng xem file đính kèm!
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Bác đã nhắc nhở, xin rút kinh nghiệm ah! Yêu cầu bài tập của E là CODE để tự tổng hợp dữ liệu của all các File có trong thư mục con ( tất cả các file đều có cùng biểu mẫu)
Vui lòng xem file đính kèm!

Dữ liệu trong các sheet của bạn nó "loạn cào cào", chẳng theo quy luật nào (Sheet thì có dữ liệu bằng đầu từ dòng 12, sheet khác lại có dữ liệu bắt đầu từ dòng 7... vân vân...)
Vậy biết cách nào tổng hợp đây bạn?
Nếu nó "loạn" như thế thì thôi có bao nhiều sheet ta viết bấy nhiêu sub để tổng hợp từng cái cho chắc
Vậy đi nha
 
Upvote 0
Dữ liệu trong các sheet của bạn nó "loạn cào cào", chẳng theo quy luật nào (Sheet thì có dữ liệu bằng đầu từ dòng 12, sheet khác lại có dữ liệu bắt đầu từ dòng 7... vân vân...)
Vậy biết cách nào tổng hợp đây bạn?
Nếu nó "loạn" như thế thì thôi có bao nhiều sheet ta viết bấy nhiêu sub để tổng hợp từng cái cho chắc
Vậy đi nha
Cảm ơn Bác đã hướng dẫn, Vì ko rành về Excel nên lúc thiết kế mẫu em cũng chưa hình dung ra ah, E đã chỉnh lại các biểu mẫu rồi nhờ Bác xem giúp ah. Hoặc bác có thể chỉnh sửa đoạn CODE theo như yêu cầu của bài tập, còn việc thiết kế lại vùng dữ liệu e sẽ thiết kế lại được ko ah.
E cũng đã thử viết CODE cho từng nút lệnh cho từng SHEET nhưng nó tổng hợp cũng không đúng yêu cầu ah
Em gửi lại File đã chỉnh sửa!
 

File đính kèm

Upvote 0
Cảm ơn Bác đã hướng dẫn, Vì ko rành về Excel nên lúc thiết kế mẫu em cũng chưa hình dung ra ah, E đã chỉnh lại các biểu mẫu rồi nhờ Bác xem giúp ah. Hoặc bác có thể chỉnh sửa đoạn CODE theo như yêu cầu của bài tập, còn việc thiết kế lại vùng dữ liệu e sẽ thiết kế lại được ko ah.
E cũng đã thử viết CODE cho từng nút lệnh cho từng SHEET nhưng nó tổng hợp cũng không đúng yêu cầu ah
Em gửi lại File đã chỉnh sửa!

Đã xem file và thấy bạn cũng có chỉnh sửa lại dữ liệu. Tuy nhiên, Sheet MAU6 và MAU7 vẫn còn khác so với những sheet khác
Nếu tất cả các sheet đều giống nhau về cấu trúc thì ta có thể làm vầy:
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  Dim wks As Worksheet
  Range("B12:R27").ClearContents
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:R37"
  [COLOR=#ff0000][B]For Each wks In ThisWorkbook.Worksheets
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, wks.Range("B12")
  Next[/B][/COLOR]
End Sub
Chổ màu đỏ là chổ sửa lại để "mần" hết các sheet
Nhưng nếu dữ liệu vẫn lung tung thế tôi bó tay rồi
(và tin chắc các cao thủ khác cũng khó ai có đủ kiên nhẫn để giúp bạn vụ này)
 
Upvote 0
Đã xem file và thấy bạn cũng có chỉnh sửa lại dữ liệu. Tuy nhiên, Sheet MAU6 và MAU7 vẫn còn khác so với những sheet khác
Nếu tất cả các sheet đều giống nhau về cấu trúc thì ta có thể làm vầy:
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  Dim wks As Worksheet
  Range("B12:R27").ClearContents
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:R37"
  [COLOR=#ff0000][B]For Each wks In ThisWorkbook.Worksheets
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, wks.Range("B12")
  Next[/B][/COLOR]
End Sub
Chổ màu đỏ là chổ sửa lại để "mần" hết các sheet
Nhưng nếu dữ liệu vẫn lung tung thế tôi bó tay rồi
(và tin chắc các cao thủ khác cũng khó ai có đủ kiên nhẫn để giúp bạn vụ này)

Em đã chỉnh sửa CODE theo gợi ý của Bác, nhưng nó không chạy được ah, E đã xóa cả hai SHEET "MAU6" và "MAU7" nhưng nó vẫn không chạy được ah,
Nhờ Bác xem lại giúp, E đã mò thử nhưng không sửa được ah.
E gửi lại File đã xóa 02 SHEET
 

File đính kèm

Upvote 0
Em đã chỉnh sửa CODE theo gợi ý của Bác, nhưng nó không chạy được ah, E đã xóa cả hai SHEET "MAU6" và "MAU7" nhưng nó vẫn không chạy được ah,
Nhờ Bác xem lại giúp, E đã mò thử nhưng không sửa được ah.
E gửi lại File đã xóa 02 SHEET

Không chạy là thế nào? Tôi thử bình thường
Nếu có báo lỗi thì chắc là bạn quên khai báo biến wks ở đầu code
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  [COLOR=#ff0000][B]Dim wks As Worksheet[/B][/COLOR]
  Range("B12:M27").ClearContents
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:M27"
  For Each wks In ThisWorkbook.Worksheets
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, wks.Range("B12")
  Next
End Sub
Dòng màu đỏ ấy
-----------
Nói ngoài lề chút: Bạn chèn chi mà cả 1 rừng module thế? (21 module tất cả)
 
Upvote 0
Không chạy là thế nào? Tôi thử bình thường
Nếu có báo lỗi thì chắc là bạn quên khai báo biến wks ở đầu code
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  [COLOR=#ff0000][B]Dim wks As Worksheet[/B][/COLOR]
  Range("B12:M27").ClearContents
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:M27"
  For Each wks In ThisWorkbook.Worksheets
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, wks.Range("B12")
  Next
End Sub
Dòng màu đỏ ấy
-----------
Nói ngoài lề chút: Bạn chèn chi mà cả 1 rừng module thế? (21 module tất cả)

E đã sửa CODE, nhưng nó vẫn chỉ tổng hợp được có một SHEET "MAU1" nhưng dòng đầu tiên (Row12) chạy ko đúng, còn các SHEET khác ko tổng hợp được ah. E đã chuyển tất cả các File về cùng một cấu trúc nhưng vẫn ko chạy được,
Nhờ bác xem lại giúp, e gửi lại file có cùng cấu trúc cho tất cả.
 

File đính kèm

Upvote 0
E đã sửa CODE, nhưng nó vẫn chỉ tổng hợp được có một SHEET "MAU1" nhưng dòng đầu tiên (Row12) chạy ko đúng, còn các SHEET khác ko tổng hợp được ah. E đã chuyển tất cả các File về cùng một cấu trúc nhưng vẫn ko chạy được,
Nhờ bác xem lại giúp, e gửi lại file có cùng cấu trúc cho tất cả.

Tại bạn copy code sai thôi
Code tôi ghi rõ thế này:
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  Dim wks As Worksheet
  Range("B12:M27").ClearContents
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:M27"
  For Each wks In ThisWorkbook.Worksheets
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, [SIZE=4][COLOR=#ff0000][B]wks.[/B][/COLOR][/SIZE]Range("B12")
  Next
End Sub
Chổ màu đỏ của tôi bạn bỏ đâu mất rồi
???
------------
Ngoài ra, nếu các sheet đích đang chưa dữ liệu thì phải Clear từng sheet trước khi tổng hợp:
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  Dim wks As Worksheet
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:M27"
  For Each wks In ThisWorkbook.Worksheets
    [COLOR=#ff0000]wks.Range("B12:M27").ClearContents[/COLOR]
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, wks.Range("B12")
  Next
End Sub
Chán bạn quá, chỉ có mỗi việc copy code paste vào cũng sai! Tôi cho file lên luôn đây
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Tại bạn copy code sai thôi
Code tôi ghi rõ thế này:
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  Dim wks As Worksheet
  Range("B12:M27").ClearContents
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:M27"
  For Each wks In ThisWorkbook.Worksheets
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, [SIZE=4][COLOR=#ff0000][B]wks.[/B][/COLOR][/SIZE]Range("B12")
  Next
End Sub
Chổ màu đỏ của tôi bạn bỏ đâu mất rồi
???
------------
Ngoài ra, nếu các sheet đích đang chưa dữ liệu thì phải Clear từng sheet trước khi tổng hợp:
Mã:
Sub Tonghop()
  Dim Folder As String, ShName As String, SrcRng As String
  Dim wks As Worksheet
  With CreateObject("Shell.Application")
    On Error Resume Next
    Folder = .BrowseForFolder(0, "", 1).Self.Path
  End With
  SrcRng = "B12:M27"
  For Each wks In ThisWorkbook.Worksheets
    [COLOR=#ff0000]wks.Range("B12:M27").ClearContents[/COLOR]
    ShName = wks.Name
    BCTK Folder, ShName, SrcRng, wks.Range("B12")
  Next
End Sub
Chán bạn quá, chỉ có mỗi việc copy code paste vào cũng sai! Tôi cho file lên luôn đây

Cảm ơn Bác nhiều lắm, mọi thứ đều OK, tại e gà quá nên phiền Bác nhiều, Cảm ơn Bác lần nữa nhé, ôi Vui quá!
+-+-+-+ ;;;;;;;;;;; @$@!^% &&&%$R --=0!
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom