Xuất 100 sheets ra một file excel mới

Liên hệ QC

phuongthu0109

Thành viên mới
Tham gia
3/6/15
Bài viết
22
Được thích
1
Mình có một file excel khoảng 150 sheet.
Trong đó có một list danh sách các sheet lưu ở cột A của sheet 1. Mình muốn sử dụng VBA để xuất list sheet này ra thành một file mới chứa các sheet này. Ai biết xin mách dùm. cảm ơn diễn đàn.
 
Mình có một file excel khoảng 150 sheet.
Trong đó có một list danh sách các sheet lưu ở cột A của sheet 1. Mình muốn sử dụng VBA để xuất list sheet này ra thành một file mới chứa các sheet này. Ai biết xin mách dùm. cảm ơn diễn đàn.
Không có file thì giúp thế nào...?
 
Upvote 0
file đây ạ.,
hjc. các anh chị giúp em với ạ. em nghĩ mãi mà ko ra ạ.
danh sách các sheet cần gốp vào một file ghi ở sheet 1 ậ
 

File đính kèm

  • 1.xlsm
    75.4 KB · Đọc: 22
Upvote 0
Mình có một file excel khoảng 150 sheet.
Trong đó có một list danh sách các sheet lưu ở cột A của sheet 1. Mình muốn sử dụng VBA để xuất list sheet này ra thành một file mới chứa các sheet này. Ai biết xin mách dùm. cảm ơn diễn đàn.
Bài này phải gọi là lấy tên các Sheet vào Sheet1 chứ?
 
Upvote 0
Do online = mobile nên ko biết file thế nào. Nhưng thấy mô tả thì mách cách làm như sau:
Duyệt qua tất cả các sheet trên file.nếu sheet nào có tên khác với vùng tên sheet bạn liệt kê tại cột A gì đó thì delete nó thôi. => còn lại sheet thuộc danh sách rồi còn gì.
Và dĩ nhiên trước khi chạy code thì phải copy fike gốc ra 1 bản để lưu giữ. Vậy thôi
 
Upvote 0
Mình có một file excel khoảng 150 sheet.
Trong đó có một list danh sách các sheet lưu ở cột A của sheet 1. Mình muốn sử dụng VBA để xuất list sheet này ra thành một file mới chứa các sheet này. Ai biết xin mách dùm. cảm ơn diễn đàn.
Bạn thử Code dưới xem:
PHP:
Sub LAYTEN_SHEET()
    Dim i As Long
    For i = 1 To Worksheets.Count
        Cells(i, 1) = Sheets(i).Name
    Next i
    With Sheets(1)
        .Select
        .Range(.Cells(1, 2), .Cells(1, Columns.Count).End(xlToLeft)).Select
    End With
End Sub
 
Upvote 0
tên sheet em đã ghi ở sheet 1 rồi. em muốn xuất các sheet có trong danh sách đó ra tạo thành 1 file mới ạ.
 
Upvote 0
tên sheet em đã ghi ở sheet 1 rồi. em muốn xuất các sheet có trong danh sách đó ra tạo thành 1 file mới ạ.
Thử cái này xem:
PHP:
Sub TaoSheet()
    Dim data(), i &
    data = Sheet1.Range("A1", Sheet1.[A65536].End(3)).Value
    For i = 1 To UBound(data)
        Sheets.Add.Name = data(i, 1)
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Thử cái này xem:
PHP:
Sub TaoSheet()
    Dim data(), i &
    data = Sheet1.Range("A1", Sheet1.[A65536].End(3)).Value
    For i = 1 To UBound(data)
        Sheets.Add.Name = data(i, 1)
    Next
End Sub

Ủa gì kỳ vậy? Code này có chỗ nào XUẤT SANG FILE MỚI đâu ta?
Rõ ràng tác giả nói vầy mà:
tên sheet em đã ghi ở sheet 1 rồi. em muốn xuất các sheet có trong danh sách đó ra tạo thành 1 file mới ạ.
 
Upvote 0
Ủa gì kỳ vậy? Code này có chỗ nào XUẤT SANG FILE MỚI đâu ta?
Rõ ràng tác giả nói vầy mà:
Thực ra em chưa hiểu rõ câu hỏi này, nên mới lòng vòng và làm chưa đúng ý đồ của chủ Topic. Vậy anh hiểu vấn đề thì giúp người hỏi & và cũng giúp em hiểu được vấn đề đi anh.
 
Upvote 0
Thực ra em chưa hiểu rõ câu hỏi này, nên mới lòng vòng và làm chưa đúng ý đồ của chủ Topic. Vậy anh hiểu vấn đề thì giúp người hỏi & và cũng giúp em hiểu được vấn đề đi anh.
thầy NDU nhìn tên người hỏi không phải doveandrose chắc sẽ trả lời thôi =)) , cơ mà tôi lại thích cách nghĩ của bạn gì ở #5 .
 
Upvote 0
Tôi gửi file kết quả.
Chú ý
Chương trình chọn Sheet1, duyệt từ ô A1 xuống. Nếu gặp ô trống thì dừng, còn không thì thực hiện công việc.

Ngay từ đầu chương trình, tôi đã save vô

C:\File KQ.xls

À, tuy tôi có E2007, nhưng chưa biết mở macro nên chuyển file về 2003
 

File đính kèm

  • 1.xls
    241.5 KB · Đọc: 19
Upvote 0
Thực ra em chưa hiểu rõ câu hỏi này, nên mới lòng vòng và làm chưa đúng ý đồ của chủ Topic. Vậy anh hiểu vấn đề thì giúp người hỏi & và cũng giúp em hiểu được vấn đề đi anh.

Thì vẫn là thao tác bình thường thôi mà: Dùng chuột kết hợp phím Ctrl để chọn nhiều sheet. Xong, click phải chọn Move or copy... ---> (New book)
Vấn đề nằm ở dòng màu đỏ: Bạn phải chọn sao cho trùng với danh sách cho sẵn (đang có ở cột A sheet 1)
------------------------------
thầy NDU nhìn tên người hỏi không phải doveandrose chắc sẽ trả lời thôi =))
Lại vụ gì nữa đây đồng chí bạn?
 
Upvote 0
Theo tôi hiểu thì Chủ Topic có một file excel với khoảng 150 sheet.

Dựa vào tên từng Cell cột A của Sheet1, dựa vào vùng A1:A100 dò tìm tên các sheet cần Xuất riêng từng File.
 
Upvote 0
Theo tôi hiểu thì Chủ Topic có một file excel với khoảng 150 sheet.

Dựa vào tên từng Cell cột A của Sheet1, dựa vào vùng A1:A100 dò tìm tên các sheet cần Xuất riêng từng File.

Không phải là xuất riêng từng file đâu ạ.
Chủ topic đã nói rõ:
xuất list sheet này ra thành một file mới chứa các sheet này.
 
Upvote 0
Theo phương án bài #13 em xin phép chuyển thành "lời" như sau:
PHP:
Sub CP()
Application.DisplayAlerts = False
Dim list()
list = Application.Transpose(Sheet1.Range("A1:A100"))
Sheets(list).Copy
Application.DisplayAlerts = True
End Sub

p:/s Mong là đúng ý bạn chủ topic -\\/.
 
Upvote 0
Theo phương án bài #13 em xin phép chuyển thành "lời" như sau:
PHP:
Sub CP()
Application.DisplayAlerts = False
Dim list()
list = Application.Transpose(Sheet1.Range("A1:A100"))
Sheets(list).Copy
Application.DisplayAlerts = True
End Sub

p:/s Mong là đúng ý bạn chủ topic -\\/.

Vẫn chưa thấy chỗ nào XUẤT SANG FILE MỚI cả (chỉ mới xuất sang workbook mới thôi)
Ngoài ra còn rất nhiều chỗ cần bẫy lỗi, chẳng hạn:
- Trong cái list ở vùng A1:A100, chẳng may có cell trống
- Một vài tên trong list không phải là tên sheet thật sự (chẳng hạn ta có sheet befaint nhưng trong vùng A1:A100 lại viết nhầm thành be faint)
Nói chung là rất nhiều thứ cần giải quyết
 
Upvote 0
Vẫn chưa thấy chỗ nào XUẤT SANG FILE MỚI cả (chỉ mới xuất sang workbook mới thôi)
Ngoài ra còn rất nhiều chỗ cần bẫy lỗi, chẳng hạn:
- Trong cái list ở vùng A1:A100, chẳng may có cell trống
- Một vài tên trong list không phải là tên sheet thật sự (chẳng hạn ta có sheet befaint nhưng trong vùng A1:A100 lại viết nhầm thành be faint)
Nói chung là rất nhiều thứ cần giải quyết

Ôi. Thầy NDU bắt lỗi em làm gì.
Chỉ là em chuyển cách làm của thầy ở bài #13.
Move or copy... ---> (New book)
Còn đoạn này:
- Trong cái list ở vùng A1:A100, chẳng may có cell trống
- Một vài tên trong list không phải là tên sheet thật sự (chẳng hạn ta có sheet befaint nhưng trong vùng A1:A100 lại viết nhầm thành be faint)
Khi đọc yêu cầu ở bài #1, em nghĩ là làm thế nào mà liệt kê được từng đó tên sheet cho vào bảng. Nếu đã dùng vba lấy được danh sách tên sheet thì chắc tự làm được luôn rồi chứ.
Khi tải file về mở lên thì lại thấy code là "tạo" tên sheet (giống với tên sheet của workbook), không phải là lấy tên sheet (Worksheet.Name). Nếu như nhập thủ công từng đó tên thì quả công phu, còn chưa kể nhập không đúng...
 
Upvote 0
Khi đọc yêu cầu ở bài #1, em nghĩ là làm thế nào mà liệt kê được từng đó tên sheet cho vào bảng. Nếu đã dùng vba lấy được danh sách tên sheet thì chắc tự làm được luôn rồi chứ.
Khi tải file về mở lên thì lại thấy code là "tạo" tên sheet (giống với tên sheet của workbook), không phải là lấy tên sheet (Worksheet.Name). Nếu như nhập thủ công từng đó tên thì quả công phu, còn chưa kể nhập không đúng...

Cái đó là chuyện của người ta, mình thắc mắc làm gì (biết đâu người ta đã có sẵn danh sách ấy rồi cũng không chừng)
Code của bạn như vậy cũng được rồi, chỉ cần thêm vài công đoạn nữa:
1> Kiểm tra sự tồn tại của sheet
2> Lưu workbook mới thành file nào đó (chỗ này có thể dùng GetSaveAsFilename hoặc gán đường dẫn "cứng" tùy ý)
 
Upvote 0
Mã:
dim sh as worksheet
For each sh in worksheets
 if sh.name = ... then ....
next sh
' link file
'thisworkbook.path ....
cám ơn cả nhà, em làm đc rùi ạ @@
 
Upvote 0
Web KT
Back
Top Bottom