Chạy code (workbook open) sau khi sheet nguồn có dữ liệu

Liên hệ QC

Nhattanktnn

Thành viên gắn bó
Tham gia
11/11/16
Bài viết
3,154
Được thích
4,125
Donate (Momo)
Donate
Giới tính
Nam
Chào các anh chị và các bạn!
Mình có file xuất từ hệ thống ERP, sau khi xuất file thì sheet "draft" chạy sql lấy dữ liệu từ hệ thống (khoảng vài giây sau khi file được mở lên mới trả về đủ kết quả - cái này do IT làm và mình không can thiệp được)
Sheet "Result" mình có "chế" báo cáo theo ý muốn của mình, mình dùng workbook open để khi xuất báo cáo từ hệ thống thì Result sẽ lấy kết quả từ Draft
Tuy nhiên, do khi xuất file, sheet "draft" chưa kịp lấy dữ liệu thì sheet "Result" đã chạy code, nên kết quả mở lên file vẫn không có gì
Vậy anh chị và các bạn xem giúp có cách nào để code bên sheet "Result" "đợi" sheet "draft" có dữ liệu thì mới chạy code không?
(Nếu không có cách nào khác thì mình sẽ ấn nút chạy code, tuy nhiên hiểu biết hạn chế nên mình vẫn muốn hỏi xem có cách nào tự động được không?)
File đính kèm là file giả lập số liệu, để mọi người hình dung. Đuôi file gốc là định dạng .xltm
 

File đính kèm

  • GPE.xlsm
    145.5 KB · Đọc: 14
Cái đó là Addin của Excel phải không bạn? Hay là công cụ bên ERP?
Công cụ của ERP luôn bác, code thì IT có thể chế biến lấy dữ liệu từ ERP. Code này em sửa được, nhưng em không biết cách sửa và không biết cuối code có thể gọi code tự viết của mình vào được không
 
Upvote 0
Công cụ của ERP luôn bác, code thì IT có thể chế biến lấy dữ liệu từ ERP. Code này em sửa được, nhưng em không biết cách sửa và không biết cuối code có thể gọi code tự viết của mình vào được không
Vậy thì như này:
- Bạn không nên lấy dữ liệu từ ERP để chung vào file báo cáo của bạn. Nguyên tắc không làm vậy.
- Giờ bạn tách thành 2 files riêng biệt: File chứa dữ liệu lấy từ ERP, và file báo cáo của bạn.

ERP cứ lấy dữ liệu và ghi vào file draft (gì đó).
Bạn cứ code lấy dữ liệu từ file draft kia và tạo báo cáo của mình.

Vậy là được luôn.
 
Upvote 0
Công cụ của ERP luôn bác, code thì IT có thể chế biến lấy dữ liệu từ ERP. Code này em sửa được, nhưng em không biết cách sửa và không biết cuối code có thể gọi code tự viết của mình vào được không
Thử mới biết
Tuy nhiên nên làm theo ý của befaint, cái hình tôi chưa kịp xem
 
Upvote 0
Nhân tiện vụ ERP này mình nhắc lại (đã nói vài lần):
Các bạn trong doanh nghiệp, công ty dùng các phần mềm ERP thì nên và rất nên tìm hiểu các phần mềm tự động hóa đi.

Ví dụ: UiPath, và Microsoft Power Automate (mới có, trước là Microsoft Flow).

Như bài trong chủ đề này dùng UiPath lèo cái xong, thêm thiết lập Automation trong Orchestrator thì hoàn toàn không phải động tay gì cả.
 
Upvote 0
Cách an toàn nhất là dùng phương án token và handshake.
Bảo với bên xuất (tức là i-a-pi gì đó), lúc xuất thì thêm một cái file trống, không có gì, chỉ cần tên file theo dạng ngày tháng gì đó để dễ archive. Cái file ấy coi như token.
Bên nhận có một cái Windows task (chạy ngày, hay giờ gì đó tuỳ thích) cứ thấy hiện diện cái token này thì mở một VBScript, Excel gì gì đó mà tạo báo cáo.
Làm việc xong thì chuyển cái file token vào bên archive (lưu trữ). Và ngồi chờ cái token kế.
 
Upvote 0
Thớt thử code này xem. Sửa lại thời gian đợi cho phù hợp. Code cho sheet Draft:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Static T As Double
If T > 0 Then
    Application.OnTime T, "ExportReport", , False
End If
T = Now() + TimeSerial(0, 0, 2)
Application.OnTime T, "ExportReport"
End Sub
 
Upvote 0
Cảm ơn các thầy các bác đã nhiệt tình giúp đỡ.
Cảm ơn thầy @huuthang_bd rất nhiều, code của thầy chạy tốt với yêu cầu của em ạ!
Em xin cảm ơn tất cả mọi người
 
Upvote 0
Web KT

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

Back
Top Bottom