Tôi đã thành công có thể chạy mã Net của riêng tôi bằng cách làm theo các bước đăng ở đây Execute .NET 3.0 code from Office 2003Sử dụng thư viện Net tiêu chuẩn với VBA
Có cách nào để sử dụng các thư viện Net tiêu chuẩn mà không cần phải viết một wrapper ? Bằng cách này chúng ta có thể tránh phải đăng ký và cài đặt một DLL tùy chỉnh vào GAC trên máy của khách hàng.
Tôi đã tìm thấy tệp tlb đã có trong thư mục C: \ Windows \ Microsof.NET \ Framework và đã có thể thêm tham chiếu đến mscorlib.dll. Nhìn vào tài liệu cho RijndaelManaged, lớp này dường như được hiển thị COM.
Tôi có thể tạo một cá thể, nhưng ngay khi tôi thử và làm việc với nó, tôi gặp lỗi (ví dụ: "Loại không phù hợp").
Sub Macro1()
Dim aesImplementation As New RijndaelManaged
Set key = aesImplementation.GenerateKey()
Set iv = aesImplementation.GenerateIV()
End Sub
Tôi sẵn sàng chấp nhận mọi bản hack bạn phải cung cấp!
Tôi không có một câu trả lời lại: sử dụng. NET mà không có một wrapper, nhưng nếu bạn mới đến VBA, bạn cần phải biết rằng tuyên bố một cái gì đó 'Như mới' không thực sự instantiate bất cứ điều gì tại thời điểm đó giống như trong .NET. Nó không rõ ràng với tôi cho dù lỗi của bạn đang được nâng lên trên instantiation hoặc trên 'Set'. (Tôi giả sử bạn đã khai báo biến 'khóa' của bạn là loại chính xác, v.v.) Xem http://stackoverflow.com/questions/2478097/vba-difference-in-two-ways-of-declaring-a -new-object-trying-to-understand-why/2480559 # 2480559 – jtolle
Đó là điều điên rồ Tại sao có As New as syntax hợp lệ nếu nó không khởi tạo một đối tượng mới ?! Nó dường như tạo ra một trường hợp trong trường hợp này mặc dù, tôi sẽ nhớ ít nhất là "As New" không phải là thực hành tốt nhất. Lý do tôi chưa khai báo đối tượng khóa một cách rõ ràng là vì tôi nhận được lỗi "Không thể gán cho mảng" nếu tôi làm. Rõ ràng lỗi này xảy ra khi bạn thử và gán cho một mảng của một kiểu khác. –
Đây không phải là rất nhiều công việc để tiết kiệm chỉ một số công việc? Ý tôi là, nếu người dùng của bạn sẽ cho phép bạn chạy macro, tại sao không chạy một ứng dụng .NET thực tế? Văn phòng interop trong. NET có vẻ khá tốt, vì vậy bạn có thể thao tác tài liệu bằng nhau hoặc tốt hơn! –