Làm thể nào để tạo được cửa sổ dạng Tool Window trong Excel?

Liên hệ QC

bivily

Thành viên hoạt động
Tham gia
11/10/07
Bài viết
110
Được thích
26
Chào cả nhà,

Em thấy chương trình A-Excel có các cửa sổ dạng Tool Window nằm bên trái (chổ Command Tree (CTRL+1) í) rất tiện lợi trong quản lý khi các bảng tính lớn và có nhiều thông tin. Cái hay của cái cửa sổ này là nó không nằm đè lên vùng bảng tính của Excel. Em rất muốn biết cách để tạo được cửa sổ này cho ứng dụng của mình đang viết. Các anh chị cho em hỏi, liệu có thể làm được cái cửa số này bằng VB6 hay VBA của Excel không? Và cách làm như thế nào?
 

File đính kèm

  • Tool window A-Excel.JPG
    Tool window A-Excel.JPG
    44 KB · Đọc: 118
Lần chỉnh sửa cuối:
Một ngày trôi qua rồi! Cũng đã hơn 30 lượt người xem rồi. Vậy mà không thấy 1 lượt phản hồi nào?
 
Lần chỉnh sửa cuối:
Upvote 0
Thế sao bạn không hỏi trực tiếp Nguyễn Duy Tuân?

Dạ! Em cũng đã nghĩ tới việc viết email hỏi thầy Nguyễn Duy Tuân thấy cái này hay quá! Lại muốn diễn đàn GPE thêm sôi động nên em chưa có viết mail. Hơn nữa, em nghĩ cái này chắc khó mà làm được với VB6.0
 
Upvote 0
Một ngày trôi qua rồi! Cũng đã hơn 30 lượt người xem rồi. Vậy mà không thấy 1 lượt phản hồi nào?

Thế bạn muốn phản hồi thế nào?
Có những vấn đề khó và những vấn đề dễ. Ngay cả vấn đề dễ nhiều khi nó đòi hỏi nhiều thời gian nên có thể những người biết nhưng không muốn tham gia.
Chỉ trên cơ sở hình vẽ thì khó mà đoán đó là gì, các chức năng như thế nào, hoạt động ra sao. Đoán thì chưa chắc đã đúng mà để chắc chắn thì: phải tải A_Tools về --> cài đặt --> tìm hiểu xem cái đó là gì, hoạt động thế nào. Rồi biết được thì giải thích, hướng dẫn cho người hỏi. Mà đâu có thể hướng dẫn trong vài dòng được. Vì thế vấn đề có thể mất nhiều thời gian, người không cần thì hiếm ai bỏ công ra giúp người khác.
Nói cho cùng thì bạn có thể tạo cửa sổ bình thường. Mà tạo trong ngôn ngữ lập trình đàng hoàng, tạo cửa sổ của Windows chứ không phải UserForm thì tiện hơn nhiều. Trên Form có thể đặt Combobox, ListBox ... Cái list ở dưới trông có vẻ như ListBox. Với lập trình API thì có thể tự "vẽ" (OwnerDraw) - và ListBox nên có thể cho mỗi dòng có độ cao khác nhau, phông chữ khác, mầu, vẽ icon (bitmapa), item có thể có nhiều dòng ... Vấn đề chỉ là tạo ListBox với style là LBS_OWNERDRAW*** và xử lý thông điệp WM_MEASUREITEM và WM_DRAWITEM để tự vẽ.
Combobox, ListView, TreeView cũng có thể tự vẽ.
Tôi không nói là "cái ấy" dùng ListBox vì nhìn hình thì không thể biết rõ được. Nhưng nếu bạn muốn tạo ListBox rồi tự vẽ thì giải thích của tôi ở trên có đủ không? Chắc chắn là không đủ. Phải giải thích cặn kẽ hơn, có khi phải viết ví dụ. Mất thời gian lắm bạn ạ.
 
Upvote 0
Thế bạn muốn phản hồi thế nào?
Có những vấn đề khó và những vấn đề dễ. Ngay cả vấn đề dễ nhiều khi nó đòi hỏi nhiều thời gian nên có thể những người biết nhưng không muốn tham gia.
Chỉ trên cơ sở hình vẽ thì khó mà đoán đó là gì, các chức năng như thế nào, hoạt động ra sao. Đoán thì chưa chắc đã đúng mà để chắc chắn thì: phải tải A_Tools về --> cài đặt --> tìm hiểu xem cái đó là gì, hoạt động thế nào. Rồi biết được thì giải thích, hướng dẫn cho người hỏi. Mà đâu có thể hướng dẫn trong vài dòng được. Vì thế vấn đề có thể mất nhiều thời gian, người không cần thì hiếm ai bỏ công ra giúp người khác.
Nói cho cùng thì bạn có thể tạo cửa sổ bình thường. Mà tạo trong ngôn ngữ lập trình đàng hoàng, tạo cửa sổ của Windows chứ không phải UserForm thì tiện hơn nhiều. Trên Form có thể đặt Combobox, ListBox ... Cái list ở dưới trông có vẻ như ListBox. Với lập trình API thì có thể tự "vẽ" (OwnerDraw) - và ListBox nên có thể cho mỗi dòng có độ cao khác nhau, phông chữ khác, mầu, vẽ icon (bitmapa), item có thể có nhiều dòng ... Vấn đề chỉ là tạo ListBox với style là LBS_OWNERDRAW*** và xử lý thông điệp WM_MEASUREITEM và WM_DRAWITEM để tự vẽ.
Combobox, ListView, TreeView cũng có thể tự vẽ.
Tôi không nói là "cái ấy" dùng ListBox vì nhìn hình thì không thể biết rõ được. Nhưng nếu bạn muốn tạo ListBox rồi tự vẽ thì giải thích của tôi ở trên có đủ không? Chắc chắn là không đủ. Phải giải thích cặn kẽ hơn, có khi phải viết ví dụ. Mất thời gian lắm bạn ạ.

Cái nội dung bên trong cái Form tạm thời không cần bàn đến. Mình đang muốn biết cách tạo ra cái form kiểu ToolWindow form. Cái hay của cái Form dạng này là có có thể tự động nằm sát biên của chương trình Excel và đẩy cái bảng tính sang phải hoặc xuống dưới rất hay.
 

File đính kèm

  • 1.JPG
    1.JPG
    66.2 KB · Đọc: 21
  • 2.JPG
    2.JPG
    46.7 KB · Đọc: 19
  • 3.JPG
    3.JPG
    46.7 KB · Đọc: 23
Upvote 0
Theo tìm hiểu của em tối nay thì cái nổi bồng bềnh này không phải là 1 form như trong VB, VBA mà là một CommandBars của Excel. Nhưng em mò mẫm thì chỉ tạo được Command bar dính liền trong 1 group trong Ribbon thôi. Chưa biết cách tạo như thế này.
 
Upvote 0
Cái mà em hỏi ở trên y như là cái Toolbar Calculator em đính kèm ở dưới. Với cái Toolbar Calculator này nó chỉ chạy như em mong muốn với Excel 2003, còn với Excel 2007 - 2013 thì nó gom lên hết trên Ribbon thành một mớ lộn xôn. Vậy mà A-Excel làm được. Có ai biết cách phải thêm dòng lệnh nào để Toolbar Calculator có thể chạy được với Excel 2007 - 2013 không?
 

File đính kèm

  • calculator toolbar.xla
    57.5 KB · Đọc: 33
  • toolbarcalc.gif
    toolbarcalc.gif
    18.3 KB · Đọc: 17
  • 2010.JPG
    2010.JPG
    17.3 KB · Đọc: 10
Upvote 0
bạn vào đây mà xem một công cụ ControlForOfficecủa anh tuấn đã lập trình để hỗ trợ;

http://www.giaiphapexcel.com/forum/...lForOffice-Bộ-công-cụ-điều-khiển-Office-Excel

Mình đã đọc hết cả 9 trang nhưng không biết phải sử dụng phần Task Panel như thế nào cả. Phải vào bluesofts.net tìm kiếm thì mới thấy. Anh Tuân đã viết sẳn hay quá! Nhưng cái BSAC - Bluesofts ActiveX Controls cần phải đăng ký chứ không phải Free. Mình sẽ liên hệ với anh Tuân. Cám ơn cả nhà!
 
Lần chỉnh sửa cuối:
Upvote 0
Để tạo được TaskPane người ta phải dùng ngôn ngữ lập trình khác mới tạo được. Chỉ riêng VBA thuần tuý không làm được bạn à. Tôi đã tạo 2 ActiveX Controls để tạo TaskPane trong VBA là:
1. ControlForOffice - Bộ công cụ miễn phí hoà toàn. Đường dẫn tại đây:
http://www.giaiphapexcel.com/forum/...lForOffice-Bộ-công-cụ-điều-khiển-Office-Excel

2. BSAC - Bluesofts ActiveX Controls là bộ ActiveX Controls đầy đủ của BLUESOFTS, ngoài việc tạo TaskPane còn rất nhiều control khác như TreeView, ListView, Tooltip, MsgBox, InputBox,... hỗ trợ Unicode để lập trình giao diện trong VBA.
Đường dẫn download:
http://www.giaiphapexcel.com/forum/...trols-Công-cụ-lập-trình-VBA-VB6-chuyên-nghiệp!
BSTaskPane1.1.JPG
Nếu nhà phát triển lập trình ứng dụng để phân phối nhiều người thì phải đăng ký bản quyền với BLUESOFTS khi đó các máy phân phối sẽ không hiện thông báo đăng ký bản quyền nữa. Nếu bạn chỉ quan tâm tới tạo Task Pane thì dùng ControlForOffice miễn phí hoàn toàn. Bạn download trang đầu tiên nhé.

Đây là video ví dụ tạo Task Pane trong VB6 và chạy trong Excel:
http://www.bluesofts.net/Products/BSAC/Demos/VB6_BSTaskPane/VB6_BSTaskPane.html
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ! Em cám ơn anh Tuân rất nhiều!
 
Upvote 0
Web KT
Back
Top Bottom