Tôi phải duyệt qua khoảng 25 trang tính trong excel để thực hiện thao tác. Tôi đang thực hiện bằng cách sử dụng vba và tìm kiếm nó thực sự chậm, do đó muốn biết liệu tôi có thể sử dụng C# hay không điều đó sẽ giúp tôi đẩy nhanh tiến trình.Chúng ta có thể viết macro trong C# cho Excel
Trả lời
Bạn đang làm chính xác những hoạt động nào? Thứ nhất, bạn không cần phải viết mã VBA. Bạn có thể chỉ cần ghi macro trong sổ làm việc và lưu nó trong C: \ Program Files \ Microsoft Office \ Office12 \ Xlstart. Excel sẽ ghi lại một macro và làm cho nó có sẵn trong tất cả các trang tính mà bạn mở.
Bạn cũng có thể tinh chỉnh mã VBA được tạo tự động trong quy trình được đề cập ở trên để phù hợp với nhu cầu của bạn.
Cá nhân, tôi không nghĩ rằng việc viết bổ trợ C# để thực hiện công việc sẽ tăng tốc tác vụ. VBA là một ngôn ngữ được thiết kế đặc biệt để làm việc với Mô hình đối tượng Office. Nếu điều đó không hoạt động đủ nhanh thì bạn cần phải xem xét hoạt động nào bạn đang thực hiện?
Tôi nghĩ rằng việc tạo bổ trợ C# để thao tác Mô hình đối tượng Excel và duy trì quá nhiều việc phải làm. Nó cũng sẽ liên quan đến một đường cong học tập lớn.
Macro được tạo bằng tính năng Excel _record macro_ có xu hướng ** rất chậm ** vì chúng phát hành một tấn lệnh _activate_ và _select_ không cần thiết. Nó có thể hữu ích để ghi lại một macro ngắn để xem làm thế nào một cái gì đó có thể được thực hiện, nhưng nếu tốc độ thực hiện là ở tất cả các mối quan tâm, bạn cần phải viết lại vĩ mô ghi lại. – riderBill
Gọi C# từ sổ làm việc Excel như macro VBA - bạn không thể
Truy cập sổ làm việc Excel từ ứng dụng C# - bạn có thể. Điều này được gọi là Microsoft Visual Studio Tools cho Office (VSTO)
Mặc dù bạn có thể viết tương đương trong C# với macro VBA hiện tại của bạn bằng VSTO, tôi nghi ngờ rất nhiều nếu nó sẽ tạo ra bất kỳ sự khác biệt đáng kể nào về hiệu năng.
Trong cả hai trường hợp, bạn sẽ thao tác cùng các đối tượng Excel COM và thời gian thực hiện có thể rất giống nhau.
Hiệu suất của bạn sẽ phụ thuộc chủ yếu vào các kỹ thuật bạn đang sử dụng để thao tác các đối tượng Excel. Ví dụ đơn giản, bạn có thể gán các giá trị từ một phạm vi Excel cho mảng 2 chiều trong một câu lệnh đơn: điều này nhanh hơn nhiều so với việc lặp qua các hàng và cột trong mã và sao chép các giá trị vào mảng của bạn từng cái một.
Tôi khuyên bạn nên đăng bit của mã VBA mà bạn thấy quá chậm và yêu cầu các mẹo cải thiện hiệu suất.
Bạn có thể thử bổ trợ ESharper của mình để viết lệnh tự động hóa Excel trong C#. Nó dễ dàng hơn việc tạo một ứng dụng C# riêng biệt hoặc bổ trợ, và bạn sẽ có quyền truy cập vào cả mô hình đối tượng Excel và API Excel C với nhiều tùy chọn hơn cho tối ưu hóa hiệu suất.
- 1. openrowset cho excel: chúng ta có thể bỏ qua một vài hàng không?
- 2. Chúng ta có nên viết bình luận rộng rãi không?
- 3. VBScript để Viết Macro trong một tệp Excel
- 4. macro cho Ẩn hàng trong excel 2010
- 5. Tài liệu cho các macro Excel VBA
- 6. Chúng ta có một autochomp trong Perl?
- 7. Làm thế nào chúng ta có thể viết plugin maven2 trong Scala?
- 8. Chúng ta có thể viết nhiều phong cách css phù hợp duy nhất trong JQuery
- 9. Trong mục tiêu-C, chúng ta có thể đặt các biến cá thể trong phần @implementation?
- 10. Chúng ta có thực sự cần một macro phát hành an toàn không?
- 11. Chúng ta có thể viết mã Android bằng cách sử dụng netbeans
- 12. "có" macro trong C
- 13. Chúng ta có thể gọi FreeLibrary từ ExitInstance
- 14. Có thư viện nào cho urllib2 cho python mà chúng ta có thể tải xuống không?
- 15. Tại sao chúng ta có thể sao chép trực tiếp các con trỏ, nhưng chúng ta không thể trực tiếp sao chép mảng trong C++
- 16. làm thế nào chúng ta có thể sử dụng một tập tin thực thi trong c + +?
- 17. Làm thế nào chúng ta có thể gọi một hàm với "parameter = value" trong C++?
- 18. Chúng ta có thể tạo một hàm tạo bản sao lớp ảo trong C++
- 19. Chúng ta có nên sử dụng tên dài hoặc viết tắt trong mã hóa JavaScript không?
- 20. Đứng một mình Excel Macro
- 21. Chúng ta có thể có một phương pháp tĩnh ảo không? (C++)
- 22. chúng ta có thể sử dụng xpath với BeautifulSoup không?
- 23. EXcel VBA: Excel Macro để tạo bảng trong PowerPoint
- 24. Chúng ta có thể phân phối lại Oracle tools.jar không?
- 25. Chúng ta có thể lấy kiểu đối số lambda không?
- 26. Tại sao chúng ta có thể bỏ sockaddr vào sockaddr_in
- 27. chúng ta có thể gán chiều rộng để li
- 28. Chúng ta có thể đặt kiểu cho thẻ tiêu đề trong tiêu đề
- 29. Làm thế nào chúng ta có thể sử dụng các kênh trong Go thay cho mutex?
- 30. Chúng ta có thể có 2 DLL cùng tên đang được nạp trong một quá trình
Tôi không nghĩ bạn có thể sử dụng C# trực tiếp trong macro. Bạn có thể tạo một AddIn được viết bằng C# để làm việc với trang tính. Nếu nó tăng tốc quá trình của bạn không thể được trả lời cho đến khi bạn mô tả những gì bạn đang làm. – Khh
@gizgok: hi, vui lòng chấp nhận câu trả lời của tôi – abatishchev