Vì vậy, tôi đang làm việc trên một Dự án Excel sẽ tải một dll C++ bằng VBA. Những gì tôi muốn làm là để có thể vượt qua một phạm vi Excel không có loại cụ thể (dữ liệu có thể là số hoặc phân loại) vào dll C++ (Cách tốt nhất tôi có thể mô tả phạm vi Excel của tôi là loại variant
).Vượt qua dữ liệu kiểu tùy ý giữa VBA và dll
Vì vậy, các bước có thể bao gồm:
- tải dll trong VBA
- Gửi dải excel để dll (Phạm vi có thể chứa các cột các số và/hoặc cột dây)
- thao tác dữ liệu từ excel trong tệp dll
Tôi đang nghĩ đến việc sử dụng biến thể excel và biến thể C++. Nhưng nó không rõ ràng đối với tôi làm thế nào để sử dụng các biến thể C + + như tôi không thể tìm thấy bất kỳ tài liệu tốt về nó.
Một đề xuất khác mà tôi nhận được là lập trình COM.
Câu hỏi của tôi:
- thể một loại linh hồn có thể cung cấp gợi ý cho tôi về cách tiến hành? (ví dụ: bằng cách cung cấp nguyên mẫu C++ và một ví dụ đơn giản về cách xử lý biến thể)
- Có ai biết bất kỳ tài liệu/hướng dẫn tốt nào về việc sử dụng Biến thể C++ (và có lẽ cùng với VBA) không?
- Có sử dụng COM thích hợp hơn khi sử dụng VARIANTS nếu tốc độ là vấn đề không?
- Có sử dụng tùy chọn API của C không?
UPDATE:
- Kích thước của dãy Tôi cần phải thao tác có thể lớn (~ 500.000 hàng).
- Tốc độ là một yếu tố, do đó, tôi muốn tránh việc sao chép không cần thiết càng nhiều càng tốt.
Cảm ơn! Nếu tôi không nhầm, viết TLB liên quan đến lập trình COM, phải không? Và sau đó không giới hạn tính di động của ứng dụng (đặc biệt là trên các máy linux)? – SMir
@SMir Không, nó không liên quan đến chương trình COM. Bạn chỉ viết TLB để VB hiểu chữ ký hàm C++ của bạn. Khác hơn thế, hàm này là hàm xuất thô, không phải COM, kiểu cổ điển. – GSerg
Cảm ơn bạn đã trả lời nhanh chóng. Có sử dụng 'Biến thể' cho phép tôi để vượt qua các loại hỗn hợp để DLL? Hoặc nó chỉ cho phép có một loại duy nhất (có thể là chuỗi hoặc số, v.v.). – SMir