Tổng quan VSTO - Visual Studio Tools for Office (1 người xem)

  • Thread starter Thread starter hienld
  • Ngày gửi Ngày gửi
Liên hệ QC

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

hienld

Thành viên mới
Tham gia
25/5/08
Bài viết
35
Được thích
125
Tổng quan VSTO-Visual Studio Tools for Office

Slide của Hienld giới thiệu về VSTO nhân kỷ niệm 2 năm thành lập GPE.
Hiện mình vẫn đang tìm hiểu về phần này, hy vọng sẽ có một tài liệu cụ thể hơn trong thời gian tới.
(Bác admin chuyển giúp bài này sang mục Lập trình với Excel ạ. Do em không được quyền post ở đó.)
 

File đính kèm

  • 1.jpg
    1.jpg
    75.8 KB · Đọc: 474
  • 2.jpg
    2.jpg
    53.2 KB · Đọc: 376
  • 3.jpg
    3.jpg
    76.2 KB · Đọc: 341
  • 4.jpg
    4.jpg
    91.5 KB · Đọc: 333
  • 5.jpg
    5.jpg
    108.7 KB · Đọc: 316
  • 6.jpg
    6.jpg
    66.6 KB · Đọc: 302
  • 7.jpg
    7.jpg
    46.8 KB · Đọc: 303
  • VSTO simple.rar
    VSTO simple.rar
    429.4 KB · Đọc: 2,542
Lần chỉnh sửa cuối:
Upload tài liệu

Slide của Hienld giới thiệu về VSTO nhân kỷ niệm 2 năm thành lập GPE.
Hiện mình vẫn đang tìm hiểu về phần này, hy vọng sẽ có một tài liệu cụ thể hơn trong thời gian tới.
(Bác admin chuyển giúp bài này sang mục Lập trình với Excel ạ. Do em không được quyền post ở đó.)

Thầy Hiền có thể upload thêm tài liệu về VSTO cho mọi người tham khảo như trao đổi hôm qua được không ạh???
 
Anh Levanduyet đã từng dự đoán tương lai của GPEX là VSTO! Mình nghĩ đã đến lúc bắt đầu, hy vọng hienld sẽ tiếp tục nghiên cứu và phổ biến rộng rãi cho các thành viên. Còn các ứng dụng mà bạn đã viết, tài liệu liên quan nữa...
Mà không biết tác giả đã được post bài ở đây chưa nhỉ?
 
To: luonchinguoc.
Tài liệu em nói đến là VBA trên Excel và AutoCAD. Do em bị hạn chế gửi bài nên chưa share trên diễn đàn được. Em sẽ cố gắng gửi sớm (Hì, tùy vào bác admin ạ).
Em đang làm đơn xin bác Minh lép về vấn đề này!
 
Nhanh quá nhanh quá, thank you Hiền nhé, Hiền có nói sẽ gửi cả bộ cài ứng dụng trong xử lý 1 số thứ trong file word ý
Thanks
 
Bạn hienld thân, tôi đã tải đủ các phần bạn nói về máy, chạy setup, nó báo successfully rồi...
Nhưng khi vào Word 2007 hay Excel 2007, tôi chẳng thấy có gì khác hết.
Trong menu Start/Microsoft Office ngoài Windows, cũng không thấy có gì thêm vào.
Vậy làm sao biết được có sự hiện diện của VSTO ?
 
Bạn hienld thân, tôi đã tải đủ các phần bạn nói về máy, chạy setup, nó báo successfully rồi...
Nhưng khi vào Word 2007 hay Excel 2007, tôi chẳng thấy có gì khác hết.
Trong menu Start/Microsoft Office ngoài Windows, cũng không thấy có gì thêm vào.
Vậy làm sao biết được có sự hiện diện của VSTO ?
Bạn vừa cài dotNET 3.5 và VSTOR30 phải không ạ? Đó mới là điều kiện cần để OF 2007 có thể chạy được các ứng dụng viết bằng VSTO.
Còn muốn viết ứng dụng sử dụng VSTO. Bạn cần cài đặt bộ Visual Studio 2008.
 
Anh Levanduyet đã từng dự đoán tương lai của GPEX là VSTO! Mình nghĩ đã đến lúc bắt đầu, hy vọng hienld sẽ tiếp tục nghiên cứu và phổ biến rộng rãi cho các thành viên. Còn các ứng dụng mà bạn đã viết, tài liệu liên quan nữa

Vấn đề là ?% người dùng Việt Nam cài đặt Framework 3.5; Office 2003 SPX, Office 2007.
Tôi thấy hiện tại đa số người dùng vẫn xài Office 2003.

Thật sự cái VSTO 2005 tôi đã thử nhưng không thích lắm. Có lẻ sản phẩm này chưa được hoàn hảo lắm.
Chapter 22 Using VB.NET đã viết:
A few thíng that can be done with VBA cannot be achieved using VSTO workbooks, the main ones being these:
* User-defined functions callable from a worksheet.
* Calling VSTO code from OnKey, OnTime, OnData and so on.
* Calling VSTO code from the OnAction property of drawing objects.
* Uniquely indentifying worksheets (without relying on the sheet tab)
Hôm nào lại phải cài VSTO 2008 để thử lại các chức năng khác xem sao.

Lê Văn Duyệt
 
Lần chỉnh sửa cuối:
Khi tạo một project mới cho Office trong VSTO 2005:

VSTO2005.png


Khi tạo một project mới cho Office trong VSTO 2008:

VSTO2008.png


Những cái mới so với phiên bản trước (từ version 1.0 lên 3.0)

VSTO4Office.png


Tôi mới test thử một vài chức năng, nhưng xem ra những cái hạn chế vẫn tồn tại trong phiên bản này.
Ví dụ như việc sử dụng hàm người dùng trong worksheet.

Lê Văn Duyệt
 
Lần chỉnh sửa cuối:
Vấn đề là ?% người dùng Việt Nam cài đặt Framework 3.5; Office 2003 SPX, Office 2007.
Tôi thấy hiện tại đa số người dùng vẫn xài Office 2003.
Em nghĩ sử dụng Office 2007 chỉ còn là vấn đề thời gian và thói quen.
Nguyên văn bởi Chapter 22 Using VB.NET
A few thíng that can be done with VBA cannot be achieved using VSTO workbooks, the main ones being these:
* User-defined functions callable from a worksheet.
* Calling VSTO code from OnKey, OnTime, OnData and so on.
* Calling VSTO code from the OnAction property of drawing objects.
* Uniquely indentifying worksheets (without relying on the sheet tab)
Vẫn có những ưu điểm nổi bật của VSTO so với VBA như vấn đề bảo mật và đặc biệt cho phép người dùng lựa chọn ngôn ngữ sử dụng.
 
Cài Framework 3.5 tốn chừng > 60 MB, trong khi đó các chương trình của mình chỉ khoảng 2 MB. Xem qua VSTO thích thật nhưng không hiểu khi nào mới hỗ trợ trong AutoCad như VBA?
Ngoài ra tạo liên kết giữa 2 môi trường Excel và AutoCad có thực hiện được bằng VSTO không?
 
To: Lê Văn Duyệt.
Mình viết cái này chỉ để demo cho VSTO ạ.
To: PhanTuHuong
Tương lai theo mình nghĩ sẽ có 1 cái gọi là VSTA (đang phát triển), sẽ giống như VBA ạ.
VSTO cho phép kết nối với AutoCAD qua COM tương tự VBA anh Hướng ạ!
 
Nó có chạy độc lập mà không cần Office 2007 không?
 
Đây là lập trình mở rộng cho Office nên tất nhiên phải cần chạy trên office ạ!
 
Có một vài vấn đề khi sử dụng VSTO mong các bác giải thích dùm

- Khi sử dụng VSTO tạo Ribbon cho file Excel (Excel Workbook), trong quá trình sử dụng (ví dụ New file một vài lần) quay trở về cửa số file của mình, Ribbon mất tiêu không phục hồi lại được.

- Sau khi hoàn thành Project (ví dụ AddIn Excel), Public tạo bộ cài đặt, copy bộ cài đặt này sang máy khác (đã cài VSTO V3.0, .net famework 3.5), tiến hành cài đặt OK, xong khi khởi động Excel không thể load được file *.vsto (add-in Com) nhưng khi chuyển tất cả Form, Module của AddIn đó qua Excel Workbok, debug thành công, mở trực tiếp file Excel đó, save as thành *.xlam và copy toàn bộ thư mục Public (bao gồm cả Addin *.xlam vừa save as, chuyển sang máy khác sử dụng Addin đó một cách dễ dàng.
 
Em có cuốn From VBA to VSTO có bác nào cần em sẽ up lên(Sách tiếng Anh-Em kém tiếng anh nên không dịch nổi). Em thấy VSTO rất hay, nhưng em thử làm 1 file Add-in Excel 2003 (Dịch sang DLL) thì thấy nó chạy chậm hơn file xla-Không biết vì sao.
 
Có một vài vấn đề khi sử dụng VSTO mong các bác giải thích dùm

- Khi sử dụng VSTO tạo Ribbon cho file Excel (Excel Workbook), trong quá trình sử dụng (ví dụ New file một vài lần) quay trở về cửa số file của mình, Ribbon mất tiêu không phục hồi lại được.

- Sau khi hoàn thành Project (ví dụ AddIn Excel), Public tạo bộ cài đặt, copy bộ cài đặt này sang máy khác (đã cài VSTO V3.0, .net famework 3.5), tiến hành cài đặt OK, xong khi khởi động Excel không thể load được file *.vsto (add-in Com) nhưng khi chuyển tất cả Form, Module của AddIn đó qua Excel Workbok, debug thành công, mở trực tiếp file Excel đó, save as thành *.xlam và copy toàn bộ thư mục Public (bao gồm cả Addin *.xlam vừa save as, chuyển sang máy khác sử dụng Addin đó một cách dễ dàng.

Bạn nên đưa tập tin đính kèm, như vậy các bạn khác mới có thể giúp bạn được.

Lê Văn Duyệt
 
Table 17: Reference differences between VBA and VSTO
VBA VSTO
ActiveSheet ThisWorkbook.Application.ActiveSheet
ActiveCell ThisWorkbook.Application.ActiveCell
Selection ThisWorkbook.Application.Selection

Trích Chương 3 sách :From VBA to VSTO Is Excel New Engine Right for You,trong chương này cũng có thêm nhiều bảng so sánh dạng như vậy
 

File đính kèm

Em có cuốn From VBA to VSTO có bác nào cần em sẽ up lên(Sách tiếng Anh-Em kém tiếng anh nên không dịch nổi). Em thấy VSTO rất hay, nhưng em thử làm 1 file Add-in Excel 2003 (Dịch sang DLL) thì thấy nó chạy chậm hơn file xla-Không biết vì sao.

Mình đang tìm hiểu về VSTO nhưng khổ nỗi tìm tài liệu khó quá, bạn có thể gửi cho mình xin 1 bản được không. email của mình là tunghauhien@gmail.com. Thanks bạn nhé!
 
To : Bác Lê Văn Duyệt
Xin nhờ gợi ý đoạn code sau trong VSTO

Private Sub ThisWorkbook_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup

Dim CDT1 As Microsoft.Office.Interop.Excel.Range
CDT1 = Sheets("data").range("CDT")
For Each cell In CDT1
If cell.Value <> "" Then
With Me.Sheets("DA").cmbListCDT.items
.Add(cell)
End With
End If
Next cell


End Sub

Trong đó "CDT" là vùng đặt tên ở Sheet "data"
Còn cmdListCDT nằm trong Sheet "DA"

Làm hoài không được, mong bác gợi ý vài dòng

Thank
 
Khi tạo một project mới cho Office trong VSTO 2005:

VSTO2005.png


Khi tạo một project mới cho Office trong VSTO 2008:

VSTO2008.png


Những cái mới so với phiên bản trước (từ version 1.0 lên 3.0)

VSTO4Office.png


Tôi mới test thử một vài chức năng, nhưng xem ra những cái hạn chế vẫn tồn tại trong phiên bản này.
Ví dụ như việc sử dụng hàm người dùng trong worksheet.

Lê Văn Duyệt
Xin cho hỏi là mình làm theo hướng dẫn nhưng khi chon New project thì cái cửa sổ nhận được như file ảnh chứ không như của bạn? Mình cài Visual 2008 bản Express. Phải chăng bản này không những cái đó. Vậy bạn nào có bản cài crack cho xin với???
 

File đính kèm

  • New project.jpg
    New project.jpg
    68.2 KB · Đọc: 154
Thầy có thể đăng thêm tài liệu về VSTO cho mọi người tham khảo được không ạh???
 
To: Lê Văn Duyệt.
Mình viết cái này chỉ để demo cho VSTO ạ.
To: PhanTuHuong
Tương lai theo mình nghĩ sẽ có 1 cái gọi là VSTA (đang phát triển), sẽ giống như VBA ạ.
VSTO cho phép kết nối với AutoCAD qua COM tương tự VBA anh Hướng ạ!

Sau hơn 10 năm thì với Autocad thì VSTA, với Office là VSTO.
Khi hệ điều hành phát triển thì framework không phải quá quan trọng nữa. Nhưng nói gì thì nói, VBA vẫn thuận lợi, dễ sử dụng hơn VB.NET.
Người dùng muốn sử dụng VSTO hay VSTA thì phải học VB.NET trước :)
 
Cài Framework 3.5 tốn chừng > 60 MB, trong khi đó các chương trình của mình chỉ khoảng 2 MB. Xem qua VSTO thích thật nhưng không hiểu khi nào mới hỗ trợ trong AutoCad như VBA?
Ngoài ra tạo liên kết giữa 2 môi trường Excel và AutoCad có thực hiện được bằng VSTO không?

Sau khi hăm hở với VSTO thì nhận ra 1 điều là AutoCAD.NET có nhiều đoạn code củ khoằm mà khó có thể kết nối từ Excel :(
 
Các a cho e hỏi đưa dữ liệu từ bảng Excel vào mảng C#, và đẩy dữ liệu từ mảng C# ra Sheet trong VSTO sao cho nhanh ạ
E cho 2 vòng lặp duyệt thì lâu ạ, nó khá chậm với dữ liệu lớn
 
Các a cho e hỏi đưa dữ liệu từ bảng Excel vào mảng C#, và đẩy dữ liệu từ mảng C# ra Sheet trong VSTO sao cho nhanh ạ
E cho 2 vòng lặp duyệt thì lâu ạ, nó khá chậm với dữ liệu lớn
phổ thông và cùng đường hết cách thì cả dùng Array duyệt 2 dòng For Hoặc bắt buộc phải cho vào 1 Array
còn không thì bỏ đi cho nhanh .... cứ cho 1 đống dữ liệu chạy For Xem ... ra pha cafe xong hóng code
 
phổ thông và cùng đường hết cách thì cả dùng Array duyệt 2 dòng For Hoặc bắt buộc phải cho vào 1 Array
còn không thì bỏ đi cho nhanh .... cứ cho 1 đống dữ liệu chạy For Xem ... ra pha cafe xong hóng code
Đưa dữ liệu từ Sheet vào Array và từ Array ra Sheet với Delphi thì sao a
nó có nhanh hơn VBA k ạ?
e test VSTO với VBA thì VBA nhanh hơn rồi
 
Đưa dữ liệu từ Sheet vào Array và từ Array ra Sheet với Delphi thì sao a
nó có nhanh hơn VBA k ạ?
e test VSTO với VBA thì VBA nhanh hơn rồi
cùng 1 cách viết như nhau chắc chắn Delphi chạy sẽ nhanh hơn nhiều

tôi đã từng thử trên VBA = ADODB CopyFromRecordset và trên Delphi y trang thế
thì kết quả thật kinh ngạc Delphi nhanh hơn rất nhiều

nếu thử thì hãy thử 1048570 x 300 cột là lòi ra hết ... còn tí ti không tính tiền
tại sao tôi nói vậy vì thấy đa số cho vài trăm dòng chạy xong so sánh thì thấy nó gần = nhau :D
 
Các a cho e hỏi đưa dữ liệu từ bảng Excel vào mảng C#, và đẩy dữ liệu từ mảng C# ra Sheet trong VSTO sao cho nhanh ạ
E cho 2 vòng lặp duyệt thì lâu ạ, nó khá chậm với dữ liệu lớn

Tôi cũng muốn tham khảo xem giải pháp nào tốt hơn cho việc đọc file Excel trong C#.
- Vấn đề cần hỏi thêm là bạn đang dùng thư viện nào để đọc file Excel? Bạn dùng COM interop (Microsoft.Office.Interop.Excel) để đọc, hay thư viện ExcelDataReader, ADO.Net...? Nếu dùng COM interop thì khỏi phải bàn về tốc độ rồi vì nó chậm nhất, dùng để xử lý các file chút chút thôi, rồi còn phải giải phóng nó chứ không nó treo Excel.
- Nếu dữ liệu lớn mà đọc hết vô Memory thì máy yếu yếu là mệt mỏi.
 
Tôi cũng muốn tham khảo xem giải pháp nào tốt hơn cho việc đọc file Excel trong C#.
- Vấn đề cần hỏi thêm là bạn đang dùng thư viện nào để đọc file Excel? Bạn dùng COM interop (Microsoft.Office.Interop.Excel) để đọc, hay thư viện ExcelDataReader, ADO.Net...? Nếu dùng COM interop thì khỏi phải bàn về tốc độ rồi vì nó chậm nhất, dùng để xử lý các file chút chút thôi, rồi còn phải giải phóng nó chứ không nó treo Excel.
- Nếu dữ liệu lớn mà đọc hết vô Memory thì máy yếu yếu là mệt mỏi.
a thường dùng cách nào để đưa data từ Sheet vào Array và trả ngược lại?
E dùng cách này và thấy nó chậm khi dữ liệu lớn - interop (Microsoft.Office.Interop.Excel)
hàm để nhận array:

public string[,] GetNewArrays(Excel.Worksheet ws, string Start_cell, string Right_Columns, int LastRow)
{
int row_top = ws.Range[Start_cell].Row;
int row_below = ws.Range[Right_Columns + LastRow].Row;

int col_left = ws.Range[Start_cell].Column;
int col_right = ws.Range[Right_Columns + LastRow].Column;

int row_arr = row_below - row_top + 1;
int col_arr = col_right - col_left + 1;

string[,] array_getvalue = new string[row_arr, col_arr];



for (long i = 0; i < row_arr; i++)
{
for (long j = 0; j < col_arr; j++)
{
//Dua sheet vao mang
if (ws.Cells[row_top + i, col_left + j].Value2 == null)
{
array_getvalue[i, j] = "";
continue;
}

array_getvalue[i, j] = ws.Cells[row_top + i, col_left + j].Value.ToString();
}
}

return array_getvalue;
}

Gọi hàm để sử dụng,
string[,] data_test1 = Globals.ThisAddIn.GetNewArrays(Sh1, "A1", "B",lastRow_B);
for (int i = 0; i < lastRow_B; i++)
{
for (int j = 0; j < 2; j++)
{
Sh1.Cells[i+1,j + 6].Value = data_test1[i,j];
}
}
//-------------------------------------------------------------------------------

E đang tìm cách khác hiệu quả và nhanh hơn, mn cho e tham khảo ý kiến
 
tôi đã từng thử trên VBA = ADODB CopyFromRecordset và trên Delphi y trang thế
thì kết quả thật kinh ngạc Delphi nhanh hơn rất nhiều
Làm sao so sánh kiểu này được bác??
Vậy phải đổi lại là dùng ngôn ngữ lập trình nào để đọc file Excel dữ liệu lớn nhanh như: Delphi, C++, C#, Python.... chứ sao đi so với VBA.
 
code C# tôi không biết nhưng đọc khá nhiều khi tìm tài liệu Delphi nó toàn cho C# :D
nhưng tôi thấy Sh1.Cells[i+1, ... là rất chậm đấy ... hên thì tôi đoán đúng ...
Bài đã được tự động gộp:

Làm sao so sánh kiểu này được bác??
Vậy phải đổi lại là dùng ngôn ngữ lập trình nào để đọc file Excel dữ liệu lớn nhanh như: Delphi, C++, C#, Python.... chứ sao đi so với VBA.
tại bài 31 hỏi thì tôi mới nói nếu cùng cách viết như nhau thì Delphi sẽ nhanh hơn
 
file sau cho tín đồ VBNet + C# nè ... nó cùng luồng với nhau xem qua là biết thôi

đọc File Excel To...

( File sau tôi Copy từ Internet ... )
 

File đính kèm

E cảm ơn a đã chia sẻ ạ
E cũng đang tìm hiểu về XLW C++, khả năng bảo mật tốt và tốc độ nhanh
thì bài trước nói rồi C# tôi ko biết gì cả nhưng khi tìm tài liệu Delphi nó toàn ra C# ... ghét quá tôi đọc luôn ... đọc diết thì hình dung ra nó nói gì
nhiều thứ tôi lấy ý tưởng từ đó cho vào Delphi thấy chạy ok đấy

chốt lại nguyên lý như nhau cả thôi chỉ khác Tools viết nó và cấu trúc code

VD: cái hình sau khoãng 3 năm trước tôi mò tài liệu viết trên VB6 mất khoãng 2 tuần chi đó
xong tôi mất vài tháng cho vào Delphi không xong ...

bỏ diết mấy na9m nay mò lại cho vào Delphi tạm Show ra cái đã .... còn sau đó như thế nào tính sau

1672381715712.png
 
thì bài trước nói rồi C# tôi ko biết gì cả nhưng khi tìm tài liệu Delphi nó toàn ra C# ... ghét quá tôi đọc luôn ... đọc diết thì hình dung ra nó nói gì
nhiều thứ tôi lấy ý tưởng từ đó cho vào Delphi thấy chạy ok đấy

chốt lại nguyên lý như nhau cả thôi chỉ khác Tools viết nó và cấu trúc code
E cảm ơn a, nghỉ tết e vọc nó mới được
 
cách đây vài ngày tôi có hỏi tây mà thấy họ IM RE .... thế mà hôm nay nó Show ra

1672381912096.png
 
cách đây vài ngày tôi có hỏi tây mà thấy họ IM RE .... thế mà hôm nay nó Show ra

View attachment 285249
E thấy delphi ít công ty tuyển dụng, mình làm bằng C++, C# mở rộng hướng phát triển sau này luôn a ạ
 
E thấy delphi ít công ty tuyển dụng, mình làm bằng C++, C# mở rộng hướng phát triển sau này luôn a ạ

Mọi người trên những diễn đàn thế này là làm IT để phục vụ công việc chuyên môn là chính, nhất là các diễn đàn về ứng dụng trong bộ Office, ngoài ra thì tự học để khám phá hiểu biết, xa hơn tự làm cái gì để bán chẳng hạn. Còn kiếm tiền chuyên nghiệp bằng code thì mới phải đi lựa chọn ngôn ngữ mà nhà tuyển dụng hay cần, đôi khi cái ngôn ngữ đang thịnh hành (kiểu so sánh trên Google search) chưa chắc mạnh bằng ngôn ngữ ít thịnh hành.
 

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

Back
Top Bottom