Xuất file excel

kobebryant

Thành viên thường trực
Tham gia ngày
7 Tháng tám 2009
Bài viết
219
Được thích
25
Điểm
685
Em đang viết code để xuất ra 1 file gồm nhiều sheet với các sheet được đặt tên theo danh sách được chọn tại F6 (F6 là List Data validation).
Em tìm được đoạn code sau đây ráp vào dữ liệu chạy thì vướng phải một vấn đề sau:
- ở F6 bắt buộc phải là "A0001" thì code mới chạy, nếu F6 ko phải là mã "A0001" thì code lỗi. Em sửa code thành F6 <> 0 nhưng vẫn lỗi

Em có gửi file đính kèm nhờ các anh chị có hướng giải quyết nào giúp em với. Xin cám ơn.

Rich (BB code):
If Workbooks(ThisWorkbook.Name).Worksheets("SCT").Range("F6") = "A0001" Then 'Theo Code này bắt buộc ở F6 phải là A0001thì code mới chạy
    Workbooks.Add
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx" 'Em sửa lại thành <> 0 thì xảy ra lỗi ở đây
Else
    With Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
        .Activate
        Worksheets.Add After:=Worksheets(ActiveWorkbook.Worksheets.Count)
    End With
End If

Workbooks(ThisWorkbook.Name).Worksheets("SCT").Range("Print_Area").Copy
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
    skipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    skipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, skipBlanks _
    :=False, Transpose:=False

If Workbooks(ThisWorkbook.Name).Worksheets("SCT").Range("F6") = "A0001" Then 'Theo Code này bắt buộc ở F6 phải là A0001 thì code mới chạy
    Sheets("Sheet1").Name = Range("F6").Value
Else
    With Workbooks("So chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
        .ActiveSheet.Name = Range("F6").Value
    End With
End If
 

File đính kèm

kobebryant

Thành viên thường trực
Tham gia ngày
7 Tháng tám 2009
Bài viết
219
Được thích
25
Điểm
685
ko biết ai có giải pháp giúp em với ạ
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
498
Được thích
358
Điểm
710
Lần chỉnh sửa cuối:

buiquangthuan

Thành viên tiêu biểu
Tham gia ngày
17 Tháng mười hai 2010
Bài viết
471
Được thích
175
Điểm
395
Nơi ở
Bắc Ninh
File này của bạn có 1 sheet mà. Lấy đâu ra nhiều sheet. Và thực ra mình đang cố gắng đọc hiểu những gì bạn viết nhưng khi vào file thì lại không hiểu.
Khi chay code nó báo lỗi ngay dòng :
Mã:
    With Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
thấy workbook nào tên là Chi tietxxxxxxxx ở đâu đâu?
Bài đã được tự động gộp:

coi cái này

With Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")

có chưa ????7?????
cái code bạn viết "rồng rắn" thiệt...
ý tưởng là gì?
Cái "A0001" này là gì? ở đâu ra?
Em đọc xong vào nhìn file lại phải quay ra đọc lại. Huhu . Khó hiểu quá
 

kobebryant

Thành viên thường trực
Tham gia ngày
7 Tháng tám 2009
Bài viết
219
Được thích
25
Điểm
685
coi cái này

With Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")

có chưa ????7?????
cái code bạn viết "rồng rắn" thiệt...
ý tưởng là gì?
Cái "A0001" này là gì? ở đâu ra?
File này của bạn có 1 sheet mà. Lấy đâu ra nhiều sheet. Và thực ra mình đang cố gắng đọc hiểu những gì bạn viết nhưng khi vào file thì lại không hiểu.
Khi chay code nó báo lỗi ngay dòng :
Mã:
    With Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
thấy workbook nào tên là Chi tietxxxxxxxx ở đâu đâu?
Bài đã được tự động gộp:


Em đọc xong vào nhìn file lại phải quay ra đọc lại. Huhu . Khó hiểu quá
Nếu ở ô J9 thay "DTCTS1101" bằng "A0001" thì code sẽ chạy như ý muốn, nhưng giờ theo ý của mình không phải lúc nào cũng có mã "A0001" nên sẽ chạy ra bị lỗi.
Mục đích của code này là xuất ra 1 file gồm nhiều sheet, mỗi sheet tên là mã chi tiết luôn.
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
498
Được thích
358
Điểm
710
Nếu ở ô J9 thay "DTCTS1101" bằng "A0001" thì code sẽ chạy như ý muốn, nhưng giờ theo ý của mình không phải lúc nào cũng có mã "A0001" nên sẽ chạy ra bị lỗi.
Mục đích của code này là xuất ra 1 file gồm nhiều sheet, mỗi sheet tên là mã chi tiết luôn.
không hiểu luôn!!!
bạn cho file data rùi nhưng file xuất ra đi làm ví dụ!!!
theo cái code bạn thì bị lỗi vì chưa có
Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
mà???
 

kobebryant

Thành viên thường trực
Tham gia ngày
7 Tháng tám 2009
Bài viết
219
Được thích
25
Điểm
685
không hiểu luôn!!!
bạn cho file data rùi nhưng file xuất ra đi làm ví dụ!!!
theo cái code bạn thì bị lỗi vì chưa có
Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
mà???
screenshot_1596443323.png

screenshot_1596443393.pngscreenshot_1596443323.pngscreenshot_1596443393.png

Hix, đoạn code đó em lượm lặt được trên mạng nên cũng ko hiểu, chỉ biết là theo code đó ở điều kiện đầu phải có 1 mã hàng cố định ở dòng đầu tiên thì sẽ chạy ra như ý. Còn nếu ko có mã hàng cố định thì thua.
Ko biết khắc phục cách nào nếu không có mã hàng cố định đầu tiên đó
 

ongke0711

Thành viên tiêu biểu
Tham gia ngày
7 Tháng chín 2006
Bài viết
652
Được thích
731
Điểm
860
Nơi ở
HCM
Hix, đoạn code đó em lượm lặt được trên mạng nên cũng ko hiểu, chỉ biết là theo code đó ở điều kiện đầu phải có 1 mã hàng cố định ở dòng đầu tiên thì sẽ chạy ra như ý. Còn nếu ko có mã hàng cố định thì thua.
Ko biết khắc phục cách nào nếu không có mã hàng cố định đầu tiên đó
Code lượm lặt mà không hiểu nó dùng trong hoàn cảnh nào, điều kiện gì thì thôi phát biểu lại yêu cầu, viết code mới có khi còn nhanh hơn sửa code cũ.
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
498
Được thích
358
Điểm
710
View attachment 242296

View attachment 242297View attachment 242296View attachment 242297

Hix, đoạn code đó em lượm lặt được trên mạng nên cũng ko hiểu, chỉ biết là theo code đó ở điều kiện đầu phải có 1 mã hàng cố định ở dòng đầu tiên thì sẽ chạy ra như ý. Còn nếu ko có mã hàng cố định thì thua.
Ko biết khắc phục cách nào nếu không có mã hàng cố định đầu tiên đó
OK, tôi đã hiểu tàm tàm...
Cho hỏi thêm: các sheet mới tạo ra có nội dung gì không? hay là trống trơn?

Ngày mai rảnh tôi sẽ làm cho bạn.
 

kobebryant

Thành viên thường trực
Tham gia ngày
7 Tháng tám 2009
Bài viết
219
Được thích
25
Điểm
685
Code lượm lặt mà không hiểu nó dùng trong hoàn cảnh nào, điều kiện gì thì thôi phát biểu lại yêu cầu, viết code mới có khi còn nhanh hơn sửa code cũ.
dạ, em cũng có diễn giải mục đích yêu cầu rồi đó ạ, đó là em có 1 validation List ở F6 dựa theo J9:J14.
Em muốn tạo 1 workbook mới với các sheet dựa theo từng chi tiết ở F6 với tên sheet là F6.Value
Bài đã được tự động gộp:

OK, tôi đã hiểu tàm tàm...
Cho hỏi thêm: các sheet mới tạo ra có nội dung gì không? hay là trống trơn?

Ngày mai rảnh tôi sẽ làm cho bạn.
theo như ý định của em là nó sẽ chọn từng F6, nội dung sẽ tự động lọc TRUE ở cột H rồi copy nội dung PrintArea ở Worksheet gốc đem qua sheet mới tạo.
Em cám ơn
 

ongke0711

Thành viên tiêu biểu
Tham gia ngày
7 Tháng chín 2006
Bài viết
652
Được thích
731
Điểm
860
Nơi ở
HCM
dạ, em cũng có diễn giải mục đích yêu cầu rồi đó ạ, đó là em có 1 validation List ở F6 dựa theo J9:J14.
Em muốn tạo 1 workbook mới với các sheet dựa theo từng chi tiết ở F6 với tên sheet là F6.Value
Để bỏ cái vụ phải nhập "A0001" bạn thay bằng đoạn code bên dưới. Tôi không sửa gì nhiều chỉ đánh comment những đoạn code không cần chạy từ code cũ của bạn, đem 2 dòng code từ Sub "xuatfiletrunggian" xuống Sub "xuatfile". Sau này khi hiểu code rồi bạn có thể xoá những dòng đánh dấu comment để cho gọn code.

Mã:
Sub xuatfiletrunggian()
    Dim a As String
    'If Workbooks(ThisWorkbook.Name).Worksheets("SCT").Range("F6") = "A0001" Then
        'Workbooks.Add
        'ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx"
    'Else
        'Dim wkb As Workbook
        'Set wkb = Workbooks.Open(ThisWorkbook.Path & "\" & "Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
        With Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
            .Activate
            Worksheets.Add After:=Worksheets(ActiveWorkbook.Worksheets.Count)
        End With
    'End If
    Workbooks(ThisWorkbook.Name).Worksheets("SCT").Range("Print_Area").Copy

    Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
                           skipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
                           skipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, skipBlanks _
                                                                  :=False, Transpose:=False

    'If Workbooks(ThisWorkbook.Name).Worksheets("SCT").Range("F6") = "A0001" Then
    '    Sheets("Sheet1").Name = Range("F6").Value
    'Else
        With Workbooks("Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx")
            .ActiveSheet.Name = Range("F6").Value
        End With
    'End If
End Sub

Sub xuatfile()
    Dim dvCell As Range
    Dim inputRange As Range
    Dim c As Range
    Dim i As Long

    'Which cell has data validation
    Set dvCell = Worksheets("SCT").Range("F6")

    'Determine where validation comes from
    Set inputRange = Evaluate(dvCell.Validation.Formula1)

    Workbooks.Add   'them moi
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & "Chi tiet " & Format(Date, "ddmmyyyy") & ".xlsx"    'them moi

    i = 0
    'Begin our loop
    Application.ScreenUpdating = True
    For Each c In inputRange
        dvCell = c.Value
        Call xuatfiletrunggian
        i = i + 1
    Next c
End Sub
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
498
Được thích
358
Điểm
710

File đính kèm

Top Bottom