VBA hay VSTO (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

levanduyet

Hãy để gió cuốn đi.
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,798
Được thích
4,706
Giới tính
Nam
VBA hay VSTO
VBA: Visual Basic for Application
VSTO: Visual Studio Tools for Office

Vâng, chúng ta đang đứng trước một sự chọn lựa VBA hay VSTO. Nếu các bạn không quan tâm về vấn đề này thì các bạn vẫn cứ dùng VBA. Công việc các bạn vẫn không gì thay đổi,… Chủ đề này tôi chỉ muốn cung cấp cho các bạn một thông tin nhỏ về tương lai của VBA. Theo nhận định của một số chuyên gia thì có thể đến năm 2008 VBA sẽ không còn nữa. Dĩ nhiên các bạn có thể vẫn dùng VBA nhưng có thể rằng trong tương lai (và hình như cả bây giờ) Microsoft đã không còn phát triển để nhằm hổ trợ cho dân lập trình VBA. Vâng, nếu các bạn bỏ công sức ra để chuyển đến ở nhà của VSTO các bạn sẽ được hưởng được nhiều điều từ VSTO.
Như các bạn thấy hiện tại các ngôn ngữ lập trình mà các bạn thường nghe nhắc đến như C++, C#, J#...có thể nói đây là các ngôn ngữ lập trình hiện đại. Tại sao tôi lại nhắc đến điều này? Vâng, tôi nhắc đến điều này bởi vì VSTO không những dùng ngôn ngữ lập trình Visual Basic, nó còn dùng các ngôn ngữ khác mà tôi đã nhắc đến ở trên đó là C++, C#, J#. Chúng ta có thể tham khảo bảng sau về mối liên hệ giữa ngôn ngữ lập trình và các công cụ phát triển của chúng:
Công cụ VBA VB 6.0 VSTO VS.NET
Ngôn ngữ lập trình VB VB.NET, C#, C++, J#
Tại sao lại là VSTO mà không là VB.NET? Các bạn sẽ hỏi, thế thì VB.NET có thể lập trình với Excel hay không? VB.NET có thể dùng các công cụ mạnh của Excel như vẽ biểu đồ, …? Câu trả lời là “Vâng, có thể” nhưng nó sẽ phức tạp và không hiệu quả. Đó cũng là lý do tại sao Microsoft cho ra đời VSTO. VSTO cơ bản là một add-in của Visual Studio.
Chúng ta có thể tóm tắt, dự đoán sự phát triển của VBA, VSTO và Visual Basic 6.0 như sau:
Năm | 2001| 2003| 2008
VBA | | |
| |VSTO |
VB 6.0| Visual Studio .NET, including VB.NET

VSTO làm việc với môi trường .NET Framework. VSTO tương tác trực tiếp với các ứng dụng Office như Excel, vâng có thể vì điều này chúng ta nên học VSTO chăng?
Một số thuận lợi của VSTO:
_ Có thể làm việc với các ngôn ngữ như: VB, C++, C#, J#...
_ Dùng được nhiều thế mạnh của form.
_ Cải tiến việc truy cập dữ liệu trên server.
_ Tăng cường sự kết nối với Web Server.
_ Bảo vệ người dùng với việc bảo mật tốt hơn.
_ Bảo vệ mã bằng việc không cho xem, ngăn chặn việc vô ý hay cố ý làm thay đổi mã. (Bởi vì mã sẽ không được lưu trong tập tin Excel ! Mã lập trình sẽ nằm trong file .DDL: Dynamic Link Library)
_ Cải thiện việc triển khai mã mới và cập nhật mã cho người dùng trong tương lai.
Làm sao mà VSTO có thể thao tác với Excel và các thành phần Office khác? Câu trả lời là PIAs (Primary Interop Assemblies).

.Net Framework là xương sống của VSTO. Thực sự ra cái thằng .Net Framework là gì? Vâng, nó thực sự là hàng trăm classes và giao diện.

Có bốn đối tượng chính trong Excel đó là:
1. Excel.Application
2. Excel.Workbook
3. Exel.Worksheet
4. Excel.Range

Vâng, vài hàng giới thiệu với các bạn. Tôi hy vọng rằng sẽ có dịp giới thiệu với các bạn nhiều hơn về VSTO.

Lê Văn Duyệt
 
Bác Duyệt ơi, code cái VSTO có khác nhiều so với VBA không vậy?
Sách về VSTO có nhiều không hả bác?-\\/.
 
Upvote 0
Phải công nhận anh Duyệt là người đam mê công nghệ, đam mê ... ngôn ngữ lập trình ... hơn cả những nhân viên ở công ty cũ của em rất nhiều (1 số họ hiện nay vẫn đang viết VB6, vẫn viết ASP nhưng ứng dụng của họ lớn lắm anh ạ). À, anh có biết SAP không? SAP là 1 cty chuyên làm ERP, CRM đứng đầu thế giới (số 1 luôn chứ ko phải là thứ 2). Họ có rất nhiều sản phẩm tuyệt vời và 1 trong số các SP đó là SAP B1 danh cho DN vừa và nhỏ (nhỏ là nhỏ của tây chứ 1 giải pháp B1 cũng phải vài chục ngàn $). B1 được viết bằng VB6 nhưng được thiết kế thì .... thôi rồi lượm ơi. (Em đã xem rất nhiều tài liệu thiết kế của họ vì em có account vào portal của họ mà).

Theo kinh nghiệm của em: (trừ những người làm files excel bình thường thì chắc chắn họ sẽ ko care chuyện này - đây lại là số đông của diễn đàn này) thì những người làm PM không chỉ nên chú trọng việc viết ứng dụng = gì mà còn nên chú trọng đến vấn đề yêu cầu phần mềm như thế nào, thiết kế ra sao, testing như thế nào, v.v.... Chắc mọi người thừa hiểu câu chuyện dùng dao mổ bò giết kiến rồi chứ? (ko phải dao mổ bò là làm tốt việc đó mà nó làm rất dở (thậm chí là rất tệ) trong việc đó).

Em đã từng chứng kiến rất rất nhiều ứng dụng viết trên .NET hẳn hỏi (cả của cty lẫn cá nhân phát triển) nhưng ko thể chấp nhận được tính kỷ luật lập trình, độ sâu của nghiệp vụ, tính... nhiều lắm. Phải nói là rất ...baby trong việc phát triển phần mềm.

hai2hai sẽ thử upload lên đây 1 màn hình nhập 1 invoice của 1 phần mềm được viết trên... Access để mọi người có thể nhận thấy sự khác biệt./.
 

File đính kèm

  • ar_invoice.jpg
    ar_invoice.jpg
    132.3 KB · Đọc: 266
Lần chỉnh sửa cuối:
Upvote 0
hai2hai đã viết:
Phải công nhận anh Duyệt là người đam mê công nghệ, đam mê ... ngôn ngữ lập trình ... hơn cả những nhân viên ở công ty cũ của em rất nhiều (1 số họ hiện nay vẫn đang viết VB6, vẫn viết ASP nhưng ứng dụng của họ lớn lắm anh ạ). À, anh có biết SAP không? SAP là 1 cty chuyên làm ERP, CRM đứng đầu thế giới (số 1 luôn chứ ko phải là thứ 2). Họ có rất nhiều sản phẩm tuyệt vời và 1 trong số các SP đó là SAP B1 danh cho DN vừa và nhỏ (nhỏ là nhỏ của tây chứ 1 giải pháp B1 cũng phải vài chục ngàn $). B1 được viết bằng VB6 nhưng được thiết kế thì .... thôi rồi lượm ơi. (Em đã xem rất nhiều tài liệu thiết kế của họ vì em có account vào portal của họ mà).
_ Không biết sao mà trả lời H nữa! Đơn giản vì anh thấy thế mạnh của VSTO nên anh thích vậy thôi.
SAP: công ty anh đã mua và đang trong thời gian đào tạo và thử. Thời gian đầu chỉ áp dụng ở Malaysia mà thôi. Anh cũng đang đọc sách về nó.

hai2hai đã viết:
Em đã từng chứng kiến rất rất nhiều ứng dụng viết trên .NET hẳn hỏi (cả của cty lẫn cá nhân phát triển) nhưng ko thể chấp nhận được tính kỷ luật lập trình, độ sâu của nghiệp vụ, tính... nhiều lắm. Phải nói là rất ...baby trong việc phát triển phần mềm.
_ Mình không thể đổ lỗi cho cái ".NET" được !

phantuhuong đã viết:
Bác Duyệt ơi, code cái VSTO có khác nhiều so với VBA không vậy?
Sách về VSTO có nhiều không hả bác?
_Nó khác cũng nhiều. Theo bước đầu anh tìm hiểu thì nó cũng lập trình hướng đối tượng. Nhận xét bản thân anh thì nó rất hay và tận dụng được nguồn mã của các ngôn ngữ khác (đầy dãy trên internet).
_Sách thì anh thấy cũng tương đối.

To: hai2hai, phantuhuong,
Hay anh em mình tìm các tài liệu về VSTO và tạo một thư việc cho nó?!

LVD
 
Upvote 0
levanduyet đã viết:
_ Mình không thể đổ lỗi cho cái ".NET" được !
LVD

Có lẽ anh Duyệt vẫn chưa hiểu ý của em. Em đâu có đổ lỗi cho .NET mà ý em nói là nhiều khi cứ hì hục viết trên công nghệ cao mà ko quan tâm đến những chuyện khác (mà cái đó quan trọng hơn nhiều, hơn rất nhiều). Đơn cử như cách tiếp cận bài toán mới hay như cách viết tài liệu yêu cầu phần mềm (dự án mà chị Dung đưa ra là 1 ví dụ nhỏ - chỉ là cách làm thôi, ko care đến nội dung nghiệp vụ) mà còn ko có ai làm (và thậm chí ko biết phải làm thế nào) thì chuyện nghiên cứu công nghệ "cao" để làm gì?

Giá trị đem lại từ ứng dụng là việc đáp ứng yêu cầu của phần mềm đối với những gì mà KH yêu cầu. Nếu KH yêu cầu đến vấn đề khó mà ko thể giải quyết được, cần phải sử dụng ngôn ngữ A, ngôn ngữ B kia thì mới đáp ứng được thì lúc đó công nghệ mới được tính đến (lúc đó việc "sử dụng công nghệ" mới mạng tính chất đáp ứng yêu cầu).

1 câu chắc đinh về thế nào là PM tốt: Không phải phần mềm đó được xây dựng bằng công nghệ nào mà là PM đó đem lại lợi ích cho KH được bao nhiêu.

Ví dụ về 1 yêu cầu dẫn đến phải tính đến công nghệ:
Khách hàng yêu cầu: Thông thường chúng tôi có khoảng 100 concurrent users sử dụng hệ thống phần mềm (100 users ở đây là cùng 1 lúc (gọi là concurrent users) có thể chạy 1 loại giao dịch nào đó (như rút tiền từ 1 hệ thống Ngân hàng chẳng hạn) chứ ko phải là 100 users sử dụng chương trình). Từ yêu cầu đó ta mới xác định là hệ thống cần phải chạy trên Oracle hay MS SQL 2k hoặc MS SQL 2005 Ent (mấy cái đó đều phải mua lisence) mà ko thể dùng được MSDE hay MS SQL 2005 Express được vì cái đó chỉ hỗ trợ tối đa là 15 concurrent users (mặc dù mấy cái đó là Free).

Ở trường hợp khác, khi KH là 1 công ty có yêu cầu mua PM kế toán mà phòng KToan chỉ có khoảng 10 người sử dụng (ko đồng thời liên tục) + phòng giám đốc sử dụng (3 người - cũng ko đồng thời liên tục - liên tục ở đây nghĩa là tại 1 thời điểm cùng tạo connection vào DB chứ ko phải login vào chương trình rồi để đó ko out ra). Bên cạnh đó, KH này chỉ mua PM với tối đa là X tiền mà ko muốn bỏ tiền ra mua Database theo đúng luật bản quyền của M$ thì chắc chắn sự lựa chọn về Database sẽ hoặc là MSDE2k hoặc MS SQL 2005 Express mà ko thể chọn Oracle, MS SQL 2005 Ent được.

Đó chỉ là 2 ví dụ về việc lựa chọn công nghệ để đáp ứng theo yêu cầu phần mềm (theo phân khúc thị trường hoặc theo yêu cầu khách hàng)

Đó còn chưa tính đến chuyện đáng ra nhà phát triển nếu làm theo đúng luật thì phải mua VS .NET, v.v... gì đó mà hiện nay mọi người toàn là down chùa ở đâu đó hoặc mua chui ở ngoài hiệu đĩa CD.
 
Lần chỉnh sửa cuối:
Upvote 0
PhanTuHuong đã viết:
Bác Duyệt ơi, code cái VSTO có khác nhiều so với VBA không vậy?
Sách về VSTO có nhiều không hả bác?-\\/.
À mà Hướng ơi. Anh nhớ là chính em đã upload cái file VBA có cả VSTO mà ! |||||
LVD
 
Upvote 0
Đọc bài phân tích về VSTO của anh Duyệt em thấy rất hay và muốn nghiên cứu về nó. Nhung hiện tại em chỉ biết có chút ít về VBA thôi. Anh có thể chỉ cho em bắt đầu nghiên cứu từ đâu không? Từ việc cài đặt phiên bản nào để có VSTO em cũng chưa biết. Nó có thể tạo ra được những ứng dụng hoàn chỉnh không?
 
Upvote 0
Đọc sách

Bạn có thể vào mục e-books để download về quyển:
OReilly.Programming.Excel.with.VBA.and.dot.NET.Apr.2006
Quyển này chủ yếu giúp cho các bạn tìm hiểu về VBA và chỉ một phần VSTO.

Lê Văn Duyệt
 
Upvote 0
Tôi đang học C#.
Ứng dụng cho excel thì C# chắc chắn hỗ trợ rồi, nhưng nó có hỗ trợ cho AutoCAD để làm việc giống như kiểu VBA Automation giữa Excel và AutoCAD không các anh nhỉ???
Có ai dùng C# cho Excel chia sẻ kinh nghiệm nhé!
 
Upvote 0
Chào bạn,

Lỗi Exception này do việc bẫy lỗi của người viết. Bạn không thể làm gì được. :)

Lê Văn Duyệt
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom