2008-09-18 45 views
6

Tôi có Macro Excel 4 cũ mà tôi sử dụng để chạy hóa đơn hàng tháng. Đó là khoảng 3000 dòng và có nhiều bảng hộp thoại Excel 5 (cho hộp thoại). Tôi muốn biết cách dễ nhất để thay đổi nó thành Visual Basic và nếu nó là giá trị nó. Tôi cũng muốn biết làm thế nào, nếu một khi tôi đã chuyển đổi nó sang VBA, làm thế nào để tạo ra một ứng dụng độc lập của nó.Chuyển đổi macro Excel 4 thành VBA

Trả lời

2

AFAIK không có khả năng bằng cách nào đó chuyển đổi nó. Bạn phải viết lại cơ bản trong VBA.

Nếu bạn đã chuyển đổi thành VBA, bạn không thể chạy dưới dạng ứng dụng độc lập. Như VBA nói Visual Basic cho ứng dụng, nó đang sống bên trong một ứng dụng (Word, Excel, Scala, bất cứ điều gì).

Bạn phải học ngôn ngữ chuẩn (không phải ngôn ngữ macro) để tạo các ứng dụng độc lập. Nhưng bạn phải học nhiều hơn bản thân ngôn ngữ. Bạn phải học các kỹ thuật khác nhau, ví dụ như xử lý cơ sở dữ liệu thay vì xử lý trang tính Excel, in thay vì in Excel, v.v. Vì vậy, về cơ bản bạn sẽ mất rất nhiều chức năng hiển nhiên nếu bạn sử dụng Excel.

6

Tôi đã thử điều này trước và cuối cùng bạn cần phải viết lại nó như Biri đã nói.

Tôi đã làm khá nhiều công việc này khi công ty chúng tôi đang nâng cấp từ Windows NT lên Windows XP. Tôi thường thấy rằng không dễ nhìn vào mã cũ và bắt đầu lại từ đầu. Bạn có thể dành rất nhiều thời gian để tìm ra những gì Excel 4 đã làm đặc biệt xung quanh ký hiệu hộp thoại "lạ". Cuối cùng, nếu bạn biết đầu vào là gì và đầu ra thì nó thường hiệu quả hơn và sạch hơn để viết lại.

Có nên sử dụng VBA hay không theo một số cách khác nhưng VBA khá mạnh và có thể mở rộng, mặc dù tôi muốn sử dụng các công cụ khác như .NET trong nhiều trường hợp hoạt động tốt và dễ triển khai.

Xét về mặt giá trị, nó có đáng không? Nếu bạn có thể nói rằng bạn sẽ không bao giờ cần phải thay đổi macro Excel 4 của bạn một lần nữa thì có thể không. Nhưng trong kinh doanh luôn luôn có một cái gì đó mà thay đổi ví dụ như thuế suất, đặc biệt là cuối năm điều. Với khó khăn như thế nào để tìm một ai đó để hỗ trợ Excel 4 và thậm chí tìm tài liệu trên nó tôi sẽ nói nó là nguy hiểm không để di chuyển đến VBA nhưng đó là một cái gì đó để cân bằng.

3

(Disclaimer: Tôi phát triển thư viện Excel-DNA)

Thay vì di chuyển vĩ mô để VBA, trong đó sử dụng một mô hình đối tượng COM tự động hóa khác với ngôn ngữ macro Excel, thay vì di chuyển nó đến VB. NET (hoặc C#) đang chạy với thư viện Excel-DNA.

Excel-DNA cho phép bạn sử dụng API C, phản chiếu ngôn ngữ macro rất chặt chẽ. Đối với mỗi lệnh macro, giống như các hộp thoại của bạn, có một hàm API C có cùng các tham số. Ví dụ, tương đương với DIALOG.BOX sẽ là xlfDialogBox - có một số thảo luận và ví dụ trong chủ đề này: http://groups.google.com/group/exceldna/browse_thread/thread/53a8253269fdf0a5.

Một ưu điểm lớn của động thái này là bạn có thể dần dần thay đổi các phần mã của mình để sử dụng giao diện tự động hóa COM - Excel-DNA cho phép bạn trộn và khớp với giao diện COM và API C.

Các vấn đề liên quan