[Giúp đỡ] macro tách sheet trong 1 file bất kỳ thành 1 work book mới

Liên hệ QC

mickeyzo

Thành viên mới
Tham gia
22/8/15
Bài viết
21
Được thích
5
chào anh chị! em đang tìm hiểu về macro ạ, em có được đoạn code lấy danh sách tên sheet trong 1 file excel bất kỳ
Sub Test() Dim objConn, objCat, tbl, Temp As String, PathFile As String
On Error Resume Next
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False: .Show: PathFile = .SelectedItems(1)
End With
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=MSDASQL.1;Data Source=Excel Files; Initial Catalog="
 
Lần chỉnh sửa cuối:
Tôi làm thế này, ko biết có đúng ý bạn.

1. Tạo 1 data validation gồm tên các sheet

2. Chọn sheet muốn xuất và click vào export

3. Một file mới được tạo ra với đường dẫn của file nguồn và tên là chính là tên sheet.

Mã:
Sub XuatExcelTest()
    'On Error Resume Next
    
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    Sheets(Sheet1.[D5].Value).Copy
    With ActiveWorkbook
        
        .SaveAs ThisWorkbook.Path & "\" & Sheet1.[D5].Value, 50
                
                ' 50 xuat ra XLSB
                ' 18 xuat ra XLS 97 - 2003
                ' 51 xuat ra XLSX
                ' 52 xuat ra XLSM
        
        .Close 1
    
    End With
    
    MsgBox "Data has been successfully Exported!"
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True


End Sub
 

File đính kèm

  • XuatExcel.xlsb
    16.6 KB · Đọc: 50
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
như này ạ!
1- khi macro chạy nó sẽ bật myfile của mình để dẫn tới file excel chứa nhiều sheet
2- sau khi dẫn tới file excel đó, nó sẽ list ra toàn bộ các sheet trong file excel
3- chọn 1 hoặc nhiều sheet trong list đó để export ra 1 workbook mới.
Nếu vậy Đợi các thành viên khác hỗ trợ bạn, vì tôi chưa nghĩ ra. Hì
 
Upvote 0
như này ạ!
1- khi macro chạy nó sẽ bật myfile của mình để dẫn tới file excel chứa nhiều sheet
2- sau khi dẫn tới file excel đó, nó sẽ list ra toàn bộ các sheet trong file excel
3- chọn 1 hoặc nhiều sheet trong list đó để export ra 1 workbook mới.

Thông thường người ta chơi vầy cho đơn giản: Mở File nào thì dùng File đó tách thành workbook mới và đặt tên luôn.

Chứ không ai chơi kiểu kỳ cục như bạn là dùng File này để mở File khác rồi lấy dữ liệu theo từng sheet sau đó tách ra thành workbook cả (đi vòng vo tam quốc rồi mới quẹo lại, chi cho phức tạp vậy).

Hoặc là người ta chơi như vầy: Gộp nhiều workbook của nhiều tháng, sau đó lọc và tách dữ liệu từng loại (hay từng phòng) thành 1 workbook mới.

Còn kiểu của bạn nêu thì tôi mới gặp lần đầu, hay là tôi đọc nội dung mà không hiểu rồi suy luận lung tung ???????????
 
Lần chỉnh sửa cuối:
Upvote 0
Thông thường người ta chơi vầy cho đơn giản: Mở File nào thì dùng File đó tách thành workbook mới và đặt tên luôn.

Chứ không ai chơi kiểu kỳ cục như bạn là dùng File này để mở File khác rồi lấy dữ liệu theo từng sheet sau đó tách ra thành workbook cả (đi vòng vo tam quốc rồi mới quẹo lại, chi cho phức tạp vậy).

Hoặc là người ta chơi như vầy: Gộp nhiều workbook của nhiều tháng, sau đó lọc và tách dữ liệu từng loại (hay từng phòng) thành 1 workbook mới.

Còn kiểu của bạn nêu thì tôi mới gặp lần đầu, hay là tôi đọc nội dung mà không hiểu rồi suy luận lung tung ???????????
em muốn làm 1 cái nút trên thanh công cụ với tính năng trên, để mở bất kỳ file nào ta có thể tách sheet ra thành workbook mới, em đang gặp khó khăn ở đoạn liệt kê danh sách tên sheet với checkbox để có thể chọn sheet mong muốn để tách ra ;;;;;;;;;;;

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
em muốn làm 1 cái nút trên thanh công cụ với tính năng trên, để mở bất kỳ file nào ta có thể tách sheet ra thành workbook mới, em đang gặp khó khăn ở đoạn liệt kê danh sách tên sheet với checkbox để có thể chọn sheet mong muốn để tách ra ;;;;;;;;;;;
Thế bạn thao khảo code Savesheet2file của tác giả NDU:
http://www.giaiphapexcel.com/forum/showthread.php?84992-Code-save-as-sheet-hiện-hành (bài #7 xem sao)
 
Upvote 0
em vẫn đang tìm hiểu theo cách mà ko cần mở workbook chứa sheet cần tách đó ạ, sheet tách ra sẽ mở luôn cho mình xem ạ -0-/.

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
em vẫn đang tìm hiểu theo cách mà ko cần mở workbook chứa sheet cần tách đó ạ, sheet tách ra sẽ mở luôn cho mình xem ạ -0-/.

Tách sheet từ file đang đóng, theo tôi biết thì ADO có thể làm được nhưng bạn chỉ nhận được dữ liệu thô mà thôi, toàn bộ format (tô màu, kẻ khung... ) sẽ mất sạch
 
Upvote 0
Tách sheet từ file đang đóng, theo tôi biết thì ADO có thể làm được nhưng bạn chỉ nhận được dữ liệu thô mà thôi, toàn bộ format (tô màu, kẻ khung... ) sẽ mất sạch
Thầy cho em hỏi có cách nào mở file đó và đóng khi nó hoàn thành mà không hiện lên không ạ?
và khi đó ra sẽ lấy được toàn bộ format ạ? -0-/.

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
Thầy cho em hỏi có cách nào mở file đó và đóng khi nó hoàn thành mà không hiện lên không ạ?
và khi đó ra sẽ lấy được toàn bộ format ạ? -0-/.

Thì cứ dùng code mở file bình thường, tách sheet gì đó bình thường thôi. Ngoài ra thêm 2 dòng code này vào:
Mã:
Application.ScreenUpdating = False 
'' Code của bạn ở đây
Application.ScreenUpdating = True
Vậy là xong, file mở lên nhưng gần như sẽ không nhìn thấy
 
Upvote 0
Thì cứ dùng code mở file bình thường, tách sheet gì đó bình thường thôi. Ngoài ra thêm 2 dòng code này vào:
Mã:
Application.ScreenUpdating = False 
'' Code của bạn ở đây
Application.ScreenUpdating = True
Vậy là xong, file mở lên nhưng gần như sẽ không nhìn thấy
thầy cho em hỏi luôn ạ!
có cách nào tạo checkbox cho "mục tiêu" chưa rõ số lượng không ạ? như trong bài này "mục tiêu" là các sheet và khi em chạy macro sẽ hiện ra danh sách các sheet trong workbook đó cùng với checkbox, nó cho phép chọn sheet mình muốn để tách ra ạ.

quần áo trẻ em | quan ao tre em | quần áo sơ sinh | quần áo bé trai | quần áo bé gái | bodysuit carter | quan ao so sinh | quan ao tre em nhap khau
 
Lần chỉnh sửa cuối:
Upvote 0
thầy cho em hỏi luôn ạ!
có cách nào tạo checkbox cho "mục tiêu" chưa rõ số lượng không ạ? như trong bài này "mục tiêu" là các sheet và khi em chạy macro sẽ hiện ra danh sách các sheet trong workbook đó cùng với checkbox, nó cho phép chọn sheet mình muốn để tách ra ạ.

Bạn xem cách "mở ra, đóng vào" thế này có đúng ý bạn không nhé!
ghi chú: Không chơi với file tiếng việt có dấu nhé!
 

File đính kèm

  • Book1.xlsm
    33 KB · Đọc: 27
Upvote 0
Bạn xem cách "mở ra, đóng vào" thế này có đúng ý bạn không nhé!
ghi chú: Không chơi với file tiếng việt có dấu nhé!
toẹt vời Chú Cuội trả lời đúng ý em luôn!
có thể chỉ dẫn cho em phần userForm để em có thể hiểu và sau này áp dụng được không ạ /-* /
em không rõ phần tạo list checkbox nó nằm đâu nữa :S
userForm:
Mã:
Private Sub CommandButton1_Click()Dim i, k, tensheets, tenfile As String
Dim ten
Application.ScreenUpdating = False
With ListBox1
ReDim tensheets(1 To .ListCount)
For i = 0 To .ListCount - 1
     If .Selected(i) = True Then
        k = k   1
        tensheets(k) = .List(i, 0)
     End If
Next
End With


ReDim ten(1 To k)
    For j = 1 To k
        ten(j) = tensheets(j)
    Next
Workbooks.Open (PathFile)
   tenfile = ActiveWorkbook.Name
     With ActiveSheet
       Sheets(ten).Copy
    End With
Workbooks(tenfile).Close
Unload Me
Application.ScreenUpdating = True
End Sub

------------------------------------------
Private Sub ListBox1_Click()


End Sub

Mã:
Public PathFile As StringSub Test()
      Dim objConn, objCat, tbl, temp As String
On Error Resume Next
With Application.FileDialog(msoFileDialogFilePicker)
.AllowMultiSelect = False: .Show: PathFile = .SelectedItems(1)
End With
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=MSDASQL.1;Data Source=Excel Files; Initial Catalog="
 
Lần chỉnh sửa cuối:
Upvote 0
toẹt vời Chú Cuội trả lời đúng ý em luôn!
có thể chỉ dẫn cho em phần userForm để em có thể hiểu và sau này áp dụng được không ạ /-*+/
em không rõ phần tạo list checkbox nó nằm đâu nữa :S
Bạn vào Properties của listbox tìm đến dòng listStyle chọn : 1- fmlistStyleOption

À mà code có đoạn
With ActiveSheet
Sheets(ten).Copy
End With
thừa 2 dòng màu xanh

 
Lần chỉnh sửa cuối:
Upvote 0
Lần chỉnh sửa cuối:
Upvote 0
Bạn xem cách "mở ra, đóng vào" thế này có đúng ý bạn không nhé!
ghi chú: Không chơi với file tiếng việt có dấu nhé!

Xin phép chucuoi92 được quay lại bài này.
Cho mình hỏi:
1. Với việc thực hiện trên file khác thì ổn.
2. Nhưng khi thực hiện ngay trên file gốc lại không được. Tác giả xử lý vấn đề giùm.
Xin cảm ơn !
 
Upvote 0
Xin phép chucuoi92 được quay lại bài này.
Cho mình hỏi:
1. Với việc thực hiện trên file khác thì ổn.
2. Nhưng khi thực hiện ngay trên file gốc lại không được. Tác giả xử lý vấn đề giùm.
Xin cảm ơn !
Sửa lại tý tẹo xem có được không.
 

File đính kèm

  • Book1.xlsm
    27.9 KB · Đọc: 12
Upvote 0
Web KT
Back
Top Bottom