Ứng dụng lập trình VSTO

Liên hệ QC

huudu2404

Thành viên mới
Tham gia
5/6/12
Bài viết
3
Được thích
0
Tôi thấy trên các diễn đàn nói về các ưu việt của VSTO so với VBA nhưng hình như VSTO chưa được ứng dụng nhiều và các tài liệu cũng hiếm. Vậy xin hỏi Giaiphapexel là VSTO có những hạn chế gì khi ứng dụng?

Xin chân thành cảm ơn!
 
Nói 1 cách đơn giản là VBA nội trú trong Office nên tiện dụng. Còn VSTO thì nằm ngoài nên bất tiện (kiểu như dùng VB6 cũng vậy), nhất là lại dùng ngôn ngữ VB.NET. Nhiều khi viết 1 cái ứng dụng con con nhưng đòi hỏi Framework hàng chục MB nên cũng bất tiện. Nhiều cao thủ VBA, VB6 chuyển dần sang Delphi rồi bạn nhé.
 
Lần chỉnh sửa cuối:
Chào bạn hudu2404,

VSTO (Visual Studio Tools for Office) là bộ công cụ lập trình cho những người phát triển sử dụng ngôn ngữ C#, VB.NET mở rộng thêm các tính năng cho bộ Microsoft Office.

Vấn đề như PhanTuHuong có đề cập nó liên quan đến việc tương thích và các phiên bản của VSTO như sau:



Đây cũng là vấn đề tôi quan tâm. Làm sao khắc phục được nhược điểm của VBA nhưng lại tận dụng thế mạnh của các ngôn ngữ .NET hoặc các ngôn ngữ khác?
Theo tôi thì có các giải pháp sau:

1. Sử dụng các công cụ/thành phần miễn phí tương ứng với các ngôn ngữ.
_ Chẳng hạn AutoIt (như có lần tôi đã giới thiệu). Link: http://www.autoitscript.com/site/. Nếu chịu khó "ngâm cứu" thì cũng làm được các công việc như VBA. Ngoài ra AutoIt còn có thể giúp ích trong công việc nhập liệu tự động của bạn. Ví dụ: có thể dùng AutoIt trợ giúp cho công việc chỉnh sửa (đơn giản như chỉnh sửa tên theo mã hàng...) có thể tự động. Chỉ cần 60' = 2 người trong 2 ngày làm việc.
_ Sử dụng Python: Link: http://pythonhosted.org/openpyxl/

2. Sử dụng các công cụ/controls/components trên thị trường:
Để tìm kiếm các bạn có thể vào trang sau: http://www.componentsource.com
Hầu hết tất cả các components cho .NET đều có component để làm việc với Excel.
Giá trung bình khoảng 1,400 USD
_ Spreadsheet của ComponentOne: http://www.componentone.com/SuperProducts/SpreadStudio/
(Tôi đã có đưa lên diễn đàn công cụ trợ giúp tính giá thành dựa trên control này). Cách lập trình phải học lại, nó khác nhiều so với cách lập trình với VBA. Tốc độ load/Save tập tin chậm (đây là vấn đề tại sao tôi bỏ Spreadsheet cho tới bây giờ). Có nhiều chức năng/control hơn trong Excel, giúp cho làm việc với CSDL hoặc hạn chế việc nhập liệu sai của người dùng rất tốt.
(Một chú ý là component này được viết bởi các coder của Việt Nam ở Hà Nội)

_ Spreadsheetgear: http://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx
Cách lập trình sẽ rất gần gũi với những người dùng VBA.

Ví dụ: về lấy một DataSet từ một vùng được đặt tên trong Excel
[GPECODE=csharp]
// Tạo một từ một tập tin Excel
IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook("myfile.xls");

// Lấy DataSet từ một vùng được đặt tên trong Excel
DataSet dataSet = workbook.GetDataSet("mydefinedname",
SpreadsheetGear.Data.GetDataFlags.FormattedText);
[/GPECODE]

Ví dụ: thêm một worksheet vào workbook hiện tại, đặt lại tên và thêm vào công thức
[GPECODE=csharp]
// Tạo một workbook.
IWorkbook workbook = SpreadsheetGear.Factory.GetWorkbook();

// Tạo một worksheet mới, đặt tên và thêm công thức vào
IWorksheet worksheet = workbook.Worksheets[0];
worksheet.Name = "MyFirstSheet";
worksheet.Cells["A1"].Value = 123.456;

// Thêm một worksheet thứ hai, đặt lại tên và thêm công thức vào
worksheet = workbook.Worksheets.Add();
worksheet.Name = "MySecondSheet";
worksheet.Cells["A1"].Formula = "=MyFirstSheet!A1 * 2";
[/GPECODE]

Tốc độ của SpreadsheetGear khi Load/Save tốt hơn nhiều so với các component khác trên thị trường. Tôi đang sử dụng component này.
Với việc sử dụng component này việc học viết code sẽ được dễ dàng hơn nhiều (nếu đã biết VBA). Bảo mật code thì không lo như khi viết với VBA. Tận dụng được tất cả các component trên nền .NET.

Một điều quan trọng là thế mạnh của bạn là gì. Bạn đừng quan tâm VBA/VSTO/Component. Bạn hãy sử dụng những công cụ nào mà bạn có thể phát triển nhanh các ứng dụng/công cụ để sử dụng vào mục đích công việc của mình. Như vậy sẽ tốt hơn cho công việc hiện tại của mình.

Vài dòng chia sẻ cùng bạn.

Lê Văn Duyệt
 
Lần chỉnh sửa cuối:
Cảm ơn bác Lê Văn Duyệt đã chia sẻ! Thực ra em chưa có thế mạnh gì bởi vì bây giờ em mới bắt đầu nên mọi thứ còn rất mơ hồ.
Em học C#, cơ sở dữ liệu và VSTO thì liệu có tạm đủ dùng ko ạ (viết 1 chương trình dự toán chẳng hạn)
Mong bác Duyệt và các bác có kinh nghiệm chỉ giúp.
 
Cảm ơn bác Lê Văn Duyệt đã chia sẻ! Thực ra em chưa có thế mạnh gì bởi vì bây giờ em mới bắt đầu nên mọi thứ còn rất mơ hồ.
Em học C#, cơ sở dữ liệu và VSTO thì liệu có tạm đủ dùng ko ạ (viết 1 chương trình dự toán chẳng hạn)
Mong bác Duyệt và các bác có kinh nghiệm chỉ giúp.

Theo tôi thì mình phải tự thân mà thử, sau đó mới có kinh nghiệm thực tế.
 
Nói 1 cách đơn giản là VBA nội trú trong Office nên tiện dụng. Còn VSTO thì nằm ngoài nên bất tiện (kiểu như dùng VB6 cũng vậy), nhất là lại dùng ngôn ngữ VB.NET. Nhiều khi viết 1 cái ứng dụng con con nhưng đòi hỏi Framework hàng chục MB nên cũng bất tiện. Nhiều cao thủ VBA, VB6 chuyển dần sang Delphi rồi bạn nhé.
Em đã hiểu một chút!
 
Nói 1 cách đơn giản là VBA nội trú trong Office nên tiện dụng. Còn VSTO thì nằm ngoài nên bất tiện (kiểu như dùng VB6 cũng vậy), nhất là lại dùng ngôn ngữ VB.NET. Nhiều khi viết 1 cái ứng dụng con con nhưng đòi hỏi Framework hàng chục MB nên cũng bất tiện. Nhiều cao thủ VBA, VB6 chuyển dần sang Delphi rồi bạn nhé.


Nếu bạn xây dựng ứng dụng trong Excel 2013 và 2016 thì framework tối thiểu 4.0.
 

File đính kèm

  • VSTO.png
    VSTO.png
    58.3 KB · Đọc: 81
Chào mọi người!
Tôi đang sử dụng VSTO trong VS 2017 để phát triển Excel. Muốn viết hàm tự định nghĩa sử dụng được trong Excel bằng ngôn ngữ VB.NET
Mọi người chỉ giáo chi tiết giúp! Tks!
 
Mình mới học VBA và ứng dụng vào công việc vô cùng tiện lợi, viết vài cái hàm, thủ tục rồi kết nối CSDL là thấy đã rồi.
Giờ thấy VSTO muốn khám phá thêm nhưng chưa thấy ứng dụng thực tế nó làm được gì? và mình có cần đến vậy không?
 
Mình mới học VBA và ứng dụng vào công việc vô cùng tiện lợi, viết vài cái hàm, thủ tục rồi kết nối CSDL là thấy đã rồi.
Giờ thấy VSTO muốn khám phá thêm nhưng chưa thấy ứng dụng thực tế nó làm được gì? và mình có cần đến vậy không?
Mình mới nghiên cứu về VSTO, nhưng tài liệu tiếng việt về nó ít quá. Tạm thời mình cho bạn xem thử 2 video demo mà mình đã nghiên cứ được bạn xem thử thế nào nhé.
Video thứ nhất là viết hàm cho Excel, sau khi biên dịch hàm ra thì mang file xll (Giống như hàm VND của Nguyễn Duy Tuân vậy) đi máy khác là sử dụng như một Add-Ins mà khỏi sợ gười khác xem mã nguồn.
Video thứ hai là tạo thanh Ribbon tương tác rất chuyên nghiệp.
Bạn muốn nghiên cứu về nó có thể tham khảo trang này, tôi cũng đang xem và nghiên cứu về VSTO. Trước kia tôi cũng không thích cái vụ .Net này đâu, nhưng thấy xu hướng hiện nay hầu như là rất cần nên việc cài nó là sớm hay muôn thôi. Hy vong trong diễn đàn sẽ có nhiều thành viên nghiên cứu về nó và chia sẻ để mình học hỏi thêm.
 
Mình mới nghiên cứu về VSTO, nhưng tài liệu tiếng việt về nó ít quá. Tạm thời mình cho bạn xem thử 2 video demo mà mình đã nghiên cứ được bạn xem thử thế nào nhé.
Video thứ nhất là viết hàm cho Excel, sau khi biên dịch hàm ra thì mang file xll (Giống như hàm VND của Nguyễn Duy Tuân vậy) đi máy khác là sử dụng như một Add-Ins mà khỏi sợ gười khác xem mã nguồn.
Video thứ hai là tạo thanh Ribbon tương tác rất chuyên nghiệp.
Bạn muốn nghiên cứu về nó có thể tham khảo trang này, tôi cũng đang xem và nghiên cứu về VSTO. Trước kia tôi cũng không thích cái vụ .Net này đâu, nhưng thấy xu hướng hiện nay hầu như là rất cần nên việc cài nó là sớm hay muôn thôi. Hy vong trong diễn đàn sẽ có nhiều thành viên nghiên cứu về nó và chia sẻ để mình học hỏi thêm.

Cho mình xin link tham khảo. cảm ơn bạn !
 
Cho mình xin link tham khảo. cảm ơn bạn !
Mình mới nghiên cứu thôi, nên code cũng chẳng có gì để học hỏi đâu. Định khi nghiên cứu xong sẽ có những bài viết cụ thể về vấn đề này để chia sẻ cho ai có nhu cầu. Thôi thì chia sẻ đại để bạn xem và có hy vọng cùng nhau nghiên cứu.
 

File đính kèm

  • FuncUDF.zip
    2.5 MB · Đọc: 129
  • VnToolsAddIns.zip
    2.9 MB · Đọc: 129
Mình mới nghiên cứu thôi, nên code cũng chẳng có gì để học hỏi đâu. Định khi nghiên cứu xong sẽ có những bài viết cụ thể về vấn đề này để chia sẻ cho ai có nhu cầu. Thôi thì chia sẻ đại để bạn xem và có hy vọng cùng nhau nghiên cứu.
Em tải về chưa biết cách dùng Anh ơi!, Mong Anh chỉ bảo thêm.
 
Em tải về chưa biết cách dùng Anh ơi!, Mong Anh chỉ bảo thêm.
Cái này muốn dùng được ít nhất phải là Visual Studio 2013 trở lên, cái nửa là trong 2 cái file ở #13 phải cài thêm công cụ Visual Studio Tools For Office (Công cụ này sẽ không tự động có khi cài Visual Studio) thứ hai nửa là phải cài ExcelDnaDoc - Excel-DNA (http://mndrake.github.io/ExcelDnaDoc/index.html) mởi chuyển project sang xll được.
Chạy file theo hình trong mục Debug xong chọn cài đặt mà thử Add-InsView attachment 204334 cài
@kieu manh sẽ không thể chạy được các file trong thư mục Debug theo cách thông thường được đâu (Do chưa đăng ký thư viện Com Add-Ins). Cái này chỉ mở Source project để chạy thôi, còn muốn chia sẻ cho người dùng thì phải tạo file setup (những việc đăng ký và cài đặt do setup làm) và cài đặt vào máy thế là dùng thôi.
Trong thời gian nghiên cứu mình thấy rõ ràng là khi viết hàm và xuất ra dạng xll thì tốc độ chạy tuyệt làm sao, thấy anh @Nguyễn Duy Tuân viết hàm VND đọc nhanh quá nên thử viết hàm này trên C# và xuất ra Xll và so sánh với cái Add-Ins viết trên Excel (Hai hàm này giải thuật như nhau) thì thôi nó bỏ xa quá về tốc độ, nếu chỉ có vài công thức thôi thì chưa thấy rõ, thử test 20 000 dòng thì thấy nó mới đã.
Hy vọng có thành viên nào nghiên cứu và mình cùng nhau chia sẽ, lúc đó mình cũng sẽ hướng dẫn chi tiết luôn về việc tạo Ribbon và Com Add-Ins trong Excel.
 
Cái này muốn dùng được ít nhất phải là Visual Studio 2013 trở lên, cái nửa là trong 2 cái file ở #13 phải cài thêm công cụ Visual Studio Tools For Office (Công cụ này sẽ không tự động có khi cài Visual Studio) thứ hai nửa là phải cài ExcelDnaDoc - Excel-DNA (http://mndrake.github.io/ExcelDnaDoc/index.html) mởi chuyển project sang xll được.

@kieu manh sẽ không thể chạy được các file trong thư mục Debug theo cách thông thường được đâu (Do chưa đăng ký thư viện Com Add-Ins). Cái này chỉ mở Source project để chạy thôi, còn muốn chia sẻ cho người dùng thì phải tạo file setup (những việc đăng ký và cài đặt do setup làm) và cài đặt vào máy thế là dùng thôi.
Trong thời gian nghiên cứu mình thấy rõ ràng là khi viết hàm và xuất ra dạng xll thì tốc độ chạy tuyệt làm sao, thấy anh @Nguyễn Duy Tuân viết hàm VND đọc nhanh quá nên thử viết hàm này trên C# và xuất ra Xll và so sánh với cái Add-Ins viết trên Excel (Hai hàm này giải thuật như nhau) thì thôi nó bỏ xa quá về tốc độ, nếu chỉ có vài công thức thôi thì chưa thấy rõ, thử test 20 000 dòng thì thấy nó mới đã.
Hy vọng có thành viên nào nghiên cứu và mình cùng nhau chia sẽ, lúc đó mình cũng sẽ hướng dẫn chi tiết luôn về việc tạo Ribbon và Com Add-Ins trong Excel.
Chạy File đó xài ok mà ... 2 năm trước Mạnh cũng từng Viết Add-Ins *.xll rồi thấy chạy tốt Nhưng trong VBA mình muốn xài hàm của nó phải khai báo Application.Run ... thấy mất công quá ghét bỏ luôn
thấy người ta khai báo vầy để xài ExcelDna
Mã:
Imports ExcelDna.Integration
Imports ExcelDna.Integration.XlCall
Hay thêm dòng sau khi làm việc với Visual
Mã:
Install-Package ExcelDnaDoc
Mai mốt rảnh coi lại code & tài liệu úp cho ... thấy họ viết = VB chạy tốt đó còn ai thích xài C# thì xài trong đó có cả mà

Capture.PNG
 
Chạy File đó xài ok mà ... 2 năm trước Mạnh cũng từng Viết Add-Ins *.xll rồi thấy chạy tốt Nhưng trong VBA mình muốn xài hàm của nó phải khai báo Application.Run ... thấy mất công quá ghét bỏ luôn
thấy người ta khai báo vầy để xài ExcelDna
Mã:
Imports ExcelDna.Integration
Imports ExcelDna.Integration.XlCall
Hay thêm dòng sau khi làm việc với Visual
Mã:
Install-Package ExcelDnaDoc
Mai mốt rảnh coi lại code & tài liệu úp cho ... thấy họ viết = VB chạy tốt đó còn ai thích xài C# thì xài trong đó có cả mà

View attachment 204339
Cái đó là viết hàm để dùng trong sheet, còn nếu đã code c# rồi thì không cần viết code trong vba nửa. Xử lý công việc của excel bằng c# luôn, tôi nghĩ viết add-ins cho excel bằng c# rồi mà còn dùng lại vba nửa thì viết bằng vba luôn cho rồi. Nửa nạc nửa mở khó chịu lắm.
Mà hình như C# vẫn tạo được thư viện DLL để dùng cho excel được mà (vấn đề này tôi chưa nghiên cứu).
 
Lần chỉnh sửa cuối:
Cái đó là viết hàm để dùng trong sheet, còn nếu đã code c# rồi thì không cần viết code trong vba nửa. Xử lý công việc của excel bằng c# luôn, tôi nghĩ viết add-ins cho excel bằng c# rồi mà còn dùng lại vba nửa thì viết bằng vba luôn cho rồi. Nửa nạc nửa mở khó chịu lắm.
Mà hình như C# vẫn tạo được thư viện DLL để dùng cho excel được mà (vấn đề này tôi chưa nghiên cứu).
Quan điểm cá NHÂN Mạnh nghĩ vầy nè:

1/ Nếu ta viết Add-ins thì viết các hàm phổ thông nhất vào File *.xll ... VD như: DocSo … vvv thì khi ta xài trên Sheet chỉ việc gõ vào Cells = DocSo() là xài ok ...
Còn nếu ta viết một cái phần mềm chạy nền Excel thì thấy rất bất tiện khi xài lại các Hàm đã viết trong đó

2/ Khi viết Add-ins như VnTools đó thì cũng vậy chỉ xài những code chung nhất như loại dấu tiếng việt … ngày tháng vvv nhưng có điều nó sẻ áp dụng cho toàn bộ file Excel kể cả file mới tinh mở lên vì nó tích hợp luôn vào Office Excel

Vậy nếu Mạnh viết thêm một cái phần mềm nhúng trong Excel thì cũng ko thể tận dụng lại các hàm đã viết trong đó (chưa thử phán bạy vậy he )
nếu xài được các hàm đó đi nữa thì khai báo nó cũng rất dài dòng … và nó thêm 1 Tab Menu trên đó vô tình bấm tầm bạy cái nó xóa hay làm sai dữ liệu trên cells vv ...

3/ Ý Mạnh là cho dù xài tools gì viết đi nữa khi ta vẫn lấy Excel chạy nền thì nên viết 1 cái thư viện Hàm *.dll chuẩn API thì khi đó ta viết Add -Ins hay cái chi đó thì ta có thể xài lại các hàm chuẩn đó trong thư viện không phải mất công viết thêm nữa mà chỉ làm thủ tục gọi hàm là ok nhất

4/ Mạnh thì rất mê Delphi …. Vì chỉ viết 1 code duy nhất ta có thể Build chạy cho đa nền tảng 32bit, 64 bit, IOS, mac ….
và Manh vẫn còn mê Excel và viết úng dụng chạy trên nó thì xài lại các hàm đã viết trong đó là 1 điều tuyệt vời nhất kể cả viết Add -ins cũng vẫn xài lại ok … tốc độ truy xuất rất nhanh

5/ @giaiphap thử viết thật nhiều code vào file *.xll và Vntools xem xong mở 1 file Excel mới lên xem nó load quay tròn quay tròn mãi mới lên à
còn load code file *.dll khi mở 1 ứng dụng Excel lên nó bay cái vèo …. còn mở file mới lên xem lại càng bay vèo vèo … vì nó không phải C.ò.n.g lưng C.ỏ.n.g 2 cái ứng dụng kia nữa

1 vài ý theo cá nhân Mạnh là vậy đó hên thì phán trúng … trật cho qua he -0-0-0-===\.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom