VBA - copy các sheets unhide và dạng giá trị theo vùng xác định

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

nguyenhuong91

Thành viên mới
Tham gia
19/10/11
Bài viết
4
Được thích
0
Dạ em chào anh chị ạ!

Em đang tận dụng VBA để export 1 file có đặc điểm sau:
- Có rất nhiều sheets
- Sheet nào cũng có công thức

Nhu cầu export 1 file gửi cho khách hàng:
1. Chỉ xuất các sheets hiển thị
2. Thông tin trong các sheets hiện thị:
> Copy paste value: các line từ 1-30 (chỉ copy giá trị ạ)
> Copy paste: Các line từ 30 trở đi (giữ nguyên công thức)

Với nhu cầu (1), em đang dùng code dưới nhưng các sheet được xuất vẫn giữ nguyên công thức => Nếu các sheets được xuất có công thức phụ thuộc vào sheets hide thì giá trị bị lỗi ạ.

Sub Export()
Dim ws As Worksheet

With CreateObject("scripting.dictionary")
For Each ws In Worksheets
If ws.Visible = xlSheetVisible Then .Add ws.Name, Nothing
Next ws
Sheets(.Keys).Copy
End With
ActiveWorkbook.SaveAs ThisWorkbook.Path & Application.PathSeparator & "Customer.xlsm", 52
End Sub

Em xin phép gửi các anh chị cao nhân file mô phỏng đính kèm để các anh chị dễ hình dung ạ.
Mong các anh chị chỉ em với ạ.
Em cám ơn anh chị nhiều ạ. <3
 

File đính kèm

  • Export_test.xlsm
    28.6 KB · Đọc: 3
Em xin phép gửi các anh chị cao nhân file mô phỏng đính kèm để các anh chị dễ hình dung ạ.
Bạn nên đưa code của mình vào thẻ code cho dễ nhìn
Thêm nữa với code hiện tại thì nó đã làm được những gì? Vấn đề bạn đang gặp phải là như nào? Có thể đính kèm thêm hình ảnh hay gì đó để nhìn thấy không?
Hãy mô tả thêm 1 chút nữa coi xem giúp được gì không nào?
Và không viết tắt, tây ta lẫn lộn, nên dùng những từ ngữ phổ thông chuẩn mực. Ví dụ: không phải "Cao nhân" thì không được tham gia sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Thử code này nhé bạn:
PHP:
Option Explicit
Sub ExportB()
Dim ws As Worksheet
Dim dic As Object, key
Set dic = CreateObject("Scripting.Dictionary")
For Each ws In Sheets
    If ws.Visible = xlSheetVisible Then dic.Add ws.Name, ""
Next
Sheets(dic.keys).Copy
With ActiveWorkbook
    For Each ws In .Sheets
        With ws.Rows("1:30")
            .Copy
            .PasteSpecial Paste:=xlPasteValues
        End With
    Next
    .SaveAs ThisWorkbook.Path & Application.PathSeparator & "For send to site.xlsm", 52
End With
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom