Check macro tách 1 file thành nhiều file (3 người xem)

  • Thread starter Thread starter 881516
  • Ngày gửi Ngày gửi
Liên hệ QC

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

881516

Thành viên chính thức
Tham gia
8/6/16
Bài viết
80
Được thích
6
Chào cả nhà,
em có 1 file macro tìm được trên 4rum, e quên topic rồi ạ
macro giúp tách 1 file ra thành nhiều file, nhưng hiện tại em đang gặp 2 vấn đề

1. File được tách ra đang lưu ở định dạng xls, nhưng vẫn chứa macro trong đó, mỗi lần mở file lại bị báo sai định dạng file. nếu ignore thông báo thì file lại bị trắng data

2. Đường dẫn lưu file xuất ra e ko sửa được, mặc định thư mục lưu là C/Documents

Nhờ mọi người update giúp em ạ, e đính kèm file ví dụ, các bác check giúp

Mã:
Sub TachFile()
    Dim Sh As Worksheet, Cll As Range
    Const Pth As String = "H:\"
    Application.ScreenUpdating = False
    Set Sh = Sheets(1)
    With Sh
    If .AutoFilterMode Then .AutoFilterMode = False
    End With
    With CreateObject("scripting.dictionary")
        For Each Cll In Sh.Range("A3", Sh.Range("A" & Rows.Count).End(3))
            If Not .exists(Cll.Value) Then
                .Add Cll.Value, Nothing
                Sh.Range("A2").AutoFilter 1, Cll.Value
                Workbooks.Add (1)
                With ActiveWorkbook
                    Sh.AutoFilter.Range.Copy .Sheets(1).Range("A1")
                    .SaveAs Cll.Value & ".xls", 52
                    .Close False
                End With
            End If
        Next
    End With
    Sh.AutoFilterMode = False
End Sub
 

File đính kèm

Chào cả nhà,
em có 1 file macro tìm được trên 4rum, e quên topic rồi ạ
macro giúp tách 1 file ra thành nhiều file, nhưng hiện tại em đang gặp 2 vấn đề

1. File được tách ra đang lưu ở định dạng xls, nhưng vẫn chứa macro trong đó, mỗi lần mở file lại bị báo sai định dạng file. nếu ignore thông báo thì file lại bị trắng data

2. Đường dẫn lưu file xuất ra e ko sửa được, mặc định thư mục lưu là C/Documents

Nhờ mọi người update giúp em ạ, e đính kèm file ví dụ, các bác check giúp

Mã:
Sub TachFile()
    Dim Sh As Worksheet, Cll As Range
    Const Pth As String = "H:\"
    Application.ScreenUpdating = False
    Set Sh = Sheets(1)
    With Sh
    If .AutoFilterMode Then .AutoFilterMode = False
    End With
    With CreateObject("scripting.dictionary")
        For Each Cll In Sh.Range("A3", Sh.Range("A" & Rows.Count).End(3))
            If Not .exists(Cll.Value) Then
                .Add Cll.Value, Nothing
                Sh.Range("A2").AutoFilter 1, Cll.Value
                Workbooks.Add (1)
                With ActiveWorkbook
                    Sh.AutoFilter.Range.Copy .Sheets(1).Range("A1")
                    .SaveAs Cll.Value & ".xls", 52
                    .Close False
                End With
            End If
        Next
    End With
    Sh.AutoFilterMode = False
End Sub
Sửa thử dòng này:
.SaveAs Cll.Value & ".xls", 52 thành .SaveAs "C:\Documents\" & Cll.Value & ".xlsx", 51
 
Sửa thử dòng này:
.SaveAs Cll.Value & ".xls", 52 thành .SaveAs "C:\Documents\" & Cll.Value & ".xlsx", 51

bác ơi, sửa được cái lưu thành xlsx ko bị báo lỗi khi mở file, nhưng file đó vẫn chứa macro ở bên trong và e muốn xóa nội dung macro đó đi

Còn đường link lưu thì nó lại nhảy ra hết desktop và bị lỗi tên file ạ
 
Sửa thử dòng này:
.SaveAs Cll.Value & ".xls", 52 thành .SaveAs "C:\Documents\" & Cll.Value & ".xlsx", 51
Lâu lắm mới thấy em xuất hiện.
Hôm nào rảnh anh qua Bình Dương nhậu nhé.
Bài đã được tự động gộp:

bác ơi, sửa được cái lưu thành xlsx ko bị báo lỗi khi mở file, nhưng file đó vẫn chứa macro ở bên trong và e muốn xóa nội dung macro đó đi

Còn đường link lưu thì nó lại nhảy ra hết desktop và bị lỗi tên file ạ
Làm gì có chuyện lưu với đuôi này xlsx mà có chứa Macro.
 
Lần chỉnh sửa cuối:
Lâu lắm mới thấy em xuất hiện.
Hôm nào rảnh anh qua Bình Dương nhậu nhé.
Bài đã được tự động gộp:


Là gì có chuyện lưu với đuôi này xlsx mà có chứa Macro.
ah được rồi bác ạ, sorrry bác e nhầm, macro đó là ở file em đang mở ra :D
Cảm ơn bác nhé
 
Web KT

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

Back
Top Bottom