Xin code Tìm và xóa dữ liệu trên file csv.

Trạng thái
Không mở trả lời sau này.

tuhocvba

Administrator
Thành viên BQT
Có gì đó k ổn rồi
Hiện tại thì anh chưa biết cái không ổn là cái gì. @thanhphuongvip có rành vụ này không? Liệu có liên quan gì tới việc thiết định trên excel mà dẫn tới việc mọi người đều double click vào file csv mà lại hiển thị hình ảnh data cho ra khác nhau?
Còn về việc phải mở file làm sao để được như này (giống của @Ốc Yêu ):
Bạn cần đăng nhập để thấy hình ảnh

thì anh làm như sau:
Bạn cần đăng nhập để thấy hình ảnh
 

Euler

Administrator
Thành viên BQT
khác nhau hoàn toàn thế kia nhỉ
Có hai khả năng.
1. file của anh không có dấu chấm phẩy ";"
2. Hoặc là file có dấu chấm phẩy ";" nhưng excel của anh tự động phân tách.
Muốn xem data thực tế, anh mở notepad lên, kéo file csv vào, xem có dấu ";" hay không là biết ngay.
Mong sớm nhận được trả lời của anh. Trên máy em thì ra như thế này nhé.
Bạn cần đăng nhập để thấy hình ảnh


Rất nhiều dấu chấm phẩy luôn anh nhé: ";"
 

Ốc Yêu

Yêu THVBA
Có hai khả năng.
1. file của anh không có dấu chấm phẩy ";"
2. Hoặc là file có dấu chấm phẩy ";" nhưng excel của anh tự động phân tách.
Muốn xem data thực tế, anh mở notepad lên, kéo file csv vào, xem có dấu ";" hay không là biết ngay.
Mong sớm nhận được trả lời của anh. Trên máy em thì ra như thế này nhé.
Bạn cần đăng nhập để thấy hình ảnh


Rất nhiều dấu chấm phẩy luôn anh nhé: ";"
File Csv mở bằng notepad thì như này là đúng rồi bạn. Của m cũng vậy, có thể do phiên bản excel khác nhau nên dẫn đến hiển thị sai.
 
S

Snow24

Guest
File Csv mở bằng notepad thì như này là đúng rồi bạn. Của m cũng vậy, có thể do phiên bản excel khác nhau nên dẫn đến hiển thị sai.
Bạn thử code này nhé.Vì mình cũng không xem được dữ liệu cứ nhìn hình viết code thôi.
Mã:
Sub layxoadulieu()
    Dim arr, i As Long, lr As Long, kq, dic As Object, mang, T, dk As String, chon As Boolean, link, wb As Workbook, lc As Long
    Dim j As Long, b As Long
    Set dic = CreateObject("scripting.dictionary")
    ReDim kq(1 To 10000, 1 To 1000)
    mang = Application.InputBox("chon du lieu can loc", , Type:=8)
        For Each T In mang
           dic.Item(T) = T
        Next
     If MsgBox("Ban chon giu lai hay xoa di", vbYesNo) = vbYes Then
        chon = True
     End If
     Set link = Application.FileDialog(msoFileDialogFilePicker)
         link.Show
         link.AllowMultiSelect = True
         For Each T In link.SelectedItems
             Set wb = Workbooks.Open(T)
             lc = wb.Sheets(1).Cells(1, Columns.Count).End(xlToLeft).Column
             lr = wb.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
             arr = wb.Sheets(1).Range("A1").Resize(lr, lc).Value
             For j = 1 To UBound(arr, 2)
                 dk = arr(1, j)
                 If dic.exists(dk) = chon Then
                    b = b + 1
                    For i = 1 To UBound(arr)
                        kq(i, b) = arr(i, j)
                    Next i
                 End If
            Next j
            wb.Close False
        Next
        Set wb = Workbooks.Add
        wb.Sheets(1).Range("A1").Resize(10000, b).Value = kq
End Sub
 

Euler

Administrator
Thành viên BQT
Dear anh @Ốc Yêu
Nếu anh đồng ý giao diện dưới đây, thì em sẽ tiến hành code trong ngày mai.
Bạn cần đăng nhập để thấy hình ảnh
 

Ốc Yêu

Yêu THVBA
Dear anh @Ốc Yêu
Nếu anh đồng ý giao diện dưới đây, thì em sẽ tiến hành code trong ngày mai.
Bạn cần đăng nhập để thấy hình ảnh
Chào bạn, cám ơn bạn đã giúp đỡ mình nhé.
Cái này bạn cho vào form hay gì vậy? Theo mình thì bạn cứ giữ giao diện như m tạo í. Đơn giản dễ nhìn, thực tế label có khi lên 50-60 nhãn. Để ở cells như vậy sẽ nhìn được nhiều hơn, mà khi muốn thêm hoặc bớt thì cứ bụp trực tiếp ở list ds là được rùi.
 

Euler

Administrator
Thành viên BQT
1. Cái này em tạo trên form.
2. Nếu theo ý anh là tạo trực tiếp trên sheet thì:
Người dùng phải ấn nút hai lần.
Lần 1: Load các nhãn LabelA,LabelB,... nạp vào nút select.
Nút thứ hai là chạy tạo file csv mới.
Đấy là em quên chưa cho đường link folder vào đấy.
Khi làm trực tiếp trên sheet này có điều lo lắng như sau, cùng với thời gian, file có thể vô hình bị nặng lên, dù nhìn vào nội dung file không có gì mấy.
Tất nhiên thời gian này cũng phải đủ lâu, cỡ vài năm, với tần suất dùng thông thường, một tuần dùng file này vài lần.
 

Ốc Yêu

Yêu THVBA
1. Cái này em tạo trên form.
2. Nếu theo ý anh là tạo trực tiếp trên sheet thì:
Người dùng phải ấn nút hai lần.
Lần 1: Load các nhãn LabelA,LabelB,... nạp vào nút select.
Nút thứ hai là chạy tạo file csv mới.
Đấy là em quên chưa cho đường link folder vào đấy.
Khi làm trực tiếp trên sheet này có điều lo lắng như sau, cùng với thời gian, file có thể vô hình bị nặng lên, dù nhìn vào nội dung file không có gì mấy.
Tất nhiên thời gian này cũng phải đủ lâu, cỡ vài năm, với tần suất dùng thông thường, một tuần dùng file này vài lần.
OK cám ơn bạn, vậy bạn làm theo Form giúp m nhé :)
 

vbano1

SMod
Thành viên BQT
OK cám ơn bạn, vậy bạn làm theo Form giúp m nhé :)
Anh nên sửa lại ý tưởng. Nên loại bỏ sheet Option_1 và sheet Option_2 đi. Vì hai sheet này cũng ghi và xóa dữ liệu liên tục. Việc này qua thời gian cũng làm nặng file.
Nên sửa lại thiết kế. Anh có một file mặc định tên là Option.xls, trên đó có hai sheet như trên. File này để cùng thư mục với file Tool để chạy.
File Tool là trái tim, coi như không thêm hay xóa dữ liệu gì trên ấy. Các data input nên là data riêng biệt.
Vì file Option dùng đi dùng lại nhiều lần, nên mình qui định nó nằm chung thư mục với file tool.
Tool tự kiểm tra và vào hai sheet trên file ấy mà lấy dữ liệu.
Như thế thì anh sửa hay xóa gì thì cũng là trên file riêng biệt.
Cũng giống như một số phần mềm phải có file config mới cho chạy ấy. Anh nên đi theo hướng ấy.
 

Euler

Administrator
Thành viên BQT
OK cám ơn bạn, vậy bạn làm theo Form giúp m nhé :)
Tạm thời em fix xong giao diện.
Bạn cần đăng nhập để thấy hình ảnh


Về ý tưởng file config như trên, ý anh thế nào ạ. Em nghĩ input option nên là file riêng, nằm chung thư mục với file tool là được. Chứ bây giờ ít người dùng tool mà còn bê theo cái sheet đi bên cạnh lắm.
 

Ốc Yêu

Yêu THVBA
Anh nên sửa lại ý tưởng. Nên loại bỏ sheet Option_1 và sheet Option_2 đi. Vì hai sheet này cũng ghi và xóa dữ liệu liên tục. Việc này qua thời gian cũng làm nặng file.
Nên sửa lại thiết kế. Anh có một file mặc định tên là Option.xls, trên đó có hai sheet như trên. File này để cùng thư mục với file Tool để chạy.
File Tool là trái tim, coi như không thêm hay xóa dữ liệu gì trên ấy. Các data input nên là data riêng biệt.
Vì file Option dùng đi dùng lại nhiều lần, nên mình qui định nó nằm chung thư mục với file tool.
Tool tự kiểm tra và vào hai sheet trên file ấy mà lấy dữ liệu.
Như thế thì anh sửa hay xóa gì thì cũng là trên file riêng biệt.
Cũng giống như một số phần mềm phải có file config mới cho chạy ấy. Anh nên đi theo hướng ấy.
Cám ơn bạn nhé, m ở trình độ cùi bắp nên chưa biết được file nó sẽ ra sao về sau này ^^. Nhờ các bạn chỉ giáo thêm nhiều nhé @@
 

Ốc Yêu

Yêu THVBA
Xin cám ơn cả nhà đã quan tâm giúp đỡ và góp ý với mình trong thời gian vừa qua về chủ đề này. Hiện tại mình đã hoàn thành được việc này và đưa output cho người phụ trách, mặc dù nó k được pro như các bạn góp ý nhưng đại khái cũng làm được những việc cần thiết. Vậy m viết ở đây để các bạn k phải làm giúp m nữa nhé.
Xin lỗi vì đã làm phiền các bạn nhiều.
Cám ơn cả nhà rất nhiều @@
 

giaiphapvba

Administrator
Thành viên BQT
Như vậy là tốt rồi, chúc mừng anh. Chủ đề khép lại được rồi. Công đoạn phía sau chỉ là vấn đề thời gian, mà anh lại không đặt kỳ hạn, nên các anh ấy ưu tiên việc khác, chỉ code vào lúc rảnh. Không uổng công diễn đàn dịch
 
Trạng thái
Không mở trả lời sau này.
Top