Tôi đã tự hỏi tôi có thể làm gì để cải thiện hiệu suất của tự động hóa Excel, vì nó có thể khá chậm nếu bạn có rất nhiều thứ trong bảng tính ...Excel Interop - Hiệu quả và hiệu suất
Đây là một vài tôi thấy bản thân mình:
ExcelApp.ScreenUpdating = false
- tắt vẽ lại màn hìnhExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual
- tắt động cơ tính toán để Excel không tự động tính toán lại khi thay đổi giá trị của ô (lần lượt nó trở lại sau khi bạn đã hoàn tất)Giảm cuộc gọi đến
Worksheet.Cells.Item(row, col)
vàWorksheet.Range
- Tôi phải thăm dò hàng trăm ô để tìm ô mà tôi cần. Thực hiện một số bộ nhớ đệm của các vị trí ô, giảm thời gian thực hiện từ ~ 40 đến ~ 5 giây.
Loại cuộc gọi interop nào có hiệu suất cao về hiệu suất và nên tránh? Bạn có thể làm gì khác để tránh việc xử lý không cần thiết đang được thực hiện?
+1 Tôi cũng gặp vấn đề về hiệu suất khi sử dụng Excel Interop và tôi đã học được điều gì đó mới: 'ExcelApp.Calculation = Excel.XlCalculation.xlCalculationManual'. Cảm ơn! =) –
Cảm ơn bạn đã chia sẻ những phát hiện hiện tại của mình trong câu hỏi, rất hữu ích. – Alex
một số tùy chọn có thể có khác ở đây http://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/5925/switch-off-properties-during-macro-execution – Slai