Lọc dữ liệu từ File đang đóng

Liên hệ QC

Phương Phương mito

Thành viên thường trực
Tham gia
1/5/19
Bài viết
275
Được thích
65
Kính gửi anh chị,
Em đang muốn không mở File mà lọc File đang đọc bằng Code sau. Nhưng nó cứ báo lỗi ở đoạn .Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [M2], xlDescending là sao ạ. Mong a chị chỉ bảo.
Mã:
Sub Loc_file_dang_dong()
    Dim FileToOpen As Variant
    Dim Arr(), Res(), i&, K&
    Dim OpenBook As Workbook
    Application.ScreenUpdating = False
    FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range", FileFilter:="Excel Files (*.xls*),*xls*")
    If FileToOpen <> False Then
    Set OpenBook = Application.Workbooks.Open(FileToOpen)
        
With OpenBook.Sheets("KE_TOAN")
.Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [M2], xlDescending
.Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [B2], xlAscending
End With

    End If
    OpenBook.Close True
    Application.ScreenUpdating = True
End Sub
 
Kính gửi anh chị,
Em đang muốn không mở File mà lọc File đang đọc bằng Code sau. Nhưng nó cứ báo lỗi ở đoạn .Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [M2], xlDescending là sao ạ. Mong a chị chỉ bảo.
Mã:
Sub Loc_file_dang_dong()
    Dim FileToOpen As Variant
    Dim Arr(), Res(), i&, K&
    Dim OpenBook As Workbook
    Application.ScreenUpdating = False
    FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range", FileFilter:="Excel Files (*.xls*),*xls*")
    If FileToOpen <> False Then
    Set OpenBook = Application.Workbooks.Open(FileToOpen)
      
With OpenBook.Sheets("KE_TOAN")
.Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [M2], xlDescending
.Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [B2], xlAscending
End With

    End If
    OpenBook.Close True
    Application.ScreenUpdating = True
End Sub
Đây vẫn là mở file mà bạn, đâu phải là không mở.
 
Upvote 0
Kính gửi anh chị,
Em đang muốn không mở File mà lọc File đang đọc bằng Code sau. Nhưng nó cứ báo lỗi ở đoạn .Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [M2], xlDescending là sao ạ. Mong a chị chỉ bảo.
Mã:
Sub Loc_file_dang_dong()
    Dim FileToOpen As Variant
    Dim Arr(), Res(), i&, K&
    Dim OpenBook As Workbook
    Application.ScreenUpdating = False
    FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range", FileFilter:="Excel Files (*.xls*),*xls*")
    If FileToOpen <> False Then
    Set OpenBook = Application.Workbooks.Open(FileToOpen)
      
With OpenBook.Sheets("KE_TOAN")
.Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [M2], xlDescending
.Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [B2], xlAscending
End With

    End If
    OpenBook.Close True
    Application.ScreenUpdating = True
End Sub
Theo tôi nghĩ là khi mở workbook ra sh được Active là Sh đầu tiên. Do vậy code trên của bạn chưa chon Sheets("kế toán") làm sh active dẫn đến code lỗi.
Bạn thử Thêm, thay
.....
Set OpenBook = Application.Workbooks.Open(FileToOpen)
For Each Ws in OpenBook.sheets
If Ws.name="KE_TOAN" then
Ws.range("A2....
Ws.Range(A2,Range("U&....
End if
next Ws
OpenBook.Close True
.....
Trúng trật, hên sui do không có file để kiểm tra.
 
Upvote 0
Từ bài trước đến bài này, bạn đang nhầm giữa khái niệm LỌC và SẮP XẾP

Tôi hiểu là mở file lên, sắp xếp, lưu, đóng lại (chứ đâu có lọc gì đâu)
 
Upvote 0
Upvote 0
Upvote 0
Kính gửi anh chị,
Em đang muốn không mở File mà lọc File đang đọc bằng Code sau. Nhưng nó cứ báo lỗi ở đoạn .Range("A2", Range("U" & Rows.Count).End(xlUp)).Sort [M2], xlDescending là sao ạ. Mong a chị chỉ bảo.
Dùng With thì phải để ý xem các dấu chấm. Đó là cái khổ tâm nhất của With.
Theo code trên thì lỗi do cái Range nó đòi bao gồm 2 ranges từ 2 workbooks khác nhau.
 
Lần chỉnh sửa cuối:
Upvote 0
Các anh cho em hỏi. Bình thường em khai báo i, với k đa số là: Dim i as Long, k As Long hoặc Interger.
Còn em thấy cách ghi: i&, k& có ý nghĩa gì vậy các anh.
(Người chuyên học lóm từ youtube, mà youtube không có dạy cái này)
Cảm ơn các anh.
 
Upvote 0
Sort đó anh. Nó vẫn lọc xếp theo thứ tự tăng giảm mà
uhm, thôi cứ coi như Sắp xếp là Lọc đi.
Bạn cứ thử phân tích logic các dòng lệnh (chưa nói đến lỗi, tốt nhất là bạn gửi cái File có sheet KE_TOAN lên đây).
(1) Đầu tiên sort giảm dần theo cột M.
(2) Sau đó là sort tăng dần theo cột B.
Vậy thì bước 2 coi như xóa toàn bộ công sức của bước 1.
 
Upvote 0
Các anh cho em hỏi. Bình thường em khai báo i, với k đa số là: Dim i as Long, k As Long hoặc Interger.
Còn em thấy cách ghi: i&, k& có ý nghĩa gì vậy các anh.
(Người chuyên học lóm từ youtube, mà youtube không có dạy cái này)
Cảm ơn các anh.
& ~ As Long
% ~ As Integer
$ ~ As String
# ~ As Double
! ~ As Single
 
Upvote 0
Rốt cuộc thì vấn đề chính đã giải quyết chưa mà lo đi hỏi chuyện khác vậy?
 
Upvote 0
Web KT
Back
Top Bottom