Chia sẻ ControlForOffice - Bộ công cụ điều khiển Office/Excel

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Gửi tặng các bạn bộ công cụ ControlForOffice.

MsgBox.jpg


MsgBoxW.jpg


MsgBoxTimer.jpg


MsgBoxTimerProgress.jpg


MsgBoxTimerProgressCallback.jpg


ChooseLan.jpg


Rename.jpg


CFO2.0.jpg


IPBTimer.jpg


IPBCallBFN.jpg



Download
. Phiên bản 2.0.4, cập nhật ngày 25/07/08.
 
Lần chỉnh sửa cuối:
àh bác TUANVNUNI ơi, hôm nay mình vào trong trang chủ của bác mình không thấy bài viết hướng dẫn về msgbox unicode nữa. Hồi trước mình có download về, nhưng nay mình làm mất rồi, bác có thể share lại cho mình cái module đó được không ạh?
+ Vấn đề nữa là khi sử dụng chương trình XLS2EXE thì cái skin của bác không bỏ được những đoạn bác đã cắt. Nó hiện đầy đủ luôn, bác có thể cho mình biết tại sao đựoc không ạh, và cách khắc phục như thế nào?
Xin chân thành cám ơn!!!
 
Lần chỉnh sửa cuối:
Upvote 0
àh bác TUANVNUNI ơi, hôm nay mình vào trong trang chủ của bác mình không thấy bài viết hướng dẫn về msgbox unicode nữa. Hồi trước mình có download về, nhưng nay mình làm mất rồi, bác có thể share lại cho mình cái module đó được không ạh?
+ Vấn đề nữa là khi sử dụng chương trình XLS2EXE thì cái skin của bác không bỏ được những đoạn bác đã cắt. Nó hiện đầy đủ luôn, bác có thể cho mình biết tại sao đựoc không ạh, và cách khắc phục như thế nào?
Xin chân thành cám ơn!!!

Về hàm MsgBoxUni bạn đọc tại đây
http://www.bluesofts.net/Baiviet/Laptrinh/VB_VBA/MsgBoxUnicode.htm

Việc sử dụng XLS2EXE tôi không thấy hay ho gì nên không test trên nó (vào menu File->Save As thịlai ra file.xls thôi mà).
 
Upvote 0
Bác TuanVNUNI có viết các ControlForOffice để ứng dụng cho VBA trong Word 2003 không? Nếu có thì post lên diễn đàn cho anh em tham khảo với. Cám ơn!
 
Upvote 0
Upvote 0
em có dùng MsgBoxUni của anh nhưng chữ ã nó không hiểu ví dụ như em gõ chữ "cộng hoà xã hội" thì các chữ khác thì thể hiện bình thường nhưng chỉ có chữ ã là nó không hiểu.(em thử đem qua máy khác thì có máy nó thể hiện được chữ ã có máy không thể hiện được).
Anh có thể đoán là bị gì không anh ?
 
Upvote 0
em có dùng MsgBoxUni của anh nhưng chữ ã nó không hiểu ví dụ như em gõ chữ "cộng hoà xã hội" thì các chữ khác thì thể hiện bình thường nhưng chỉ có chữ ã là nó không hiểu.(em thử đem qua máy khác thì có máy nó thể hiện được chữ ã có máy không thể hiện được).
Anh có thể đoán là bị gì không anh ?

Rất có thể máy bạn đã cài ít nhất một PM Việt Nam nào đó và nó đã làm hỏng các font chuẩn của hệ thống như Tahoma, Verdana,...

Những PM của người Việt làm trước đây (có tên tuổi hẳn hoi) trên môi trường (VS) Foxpro, VB6 thường họ không làm được unicode nên đã làm ra (có thể sửa từ font chuẩn của Windows) file font Tahoma (chỉ hỗ trợ kiểu font ABC/TCVN3) và copy đè vào font chuẩn của Windows (hỗ trợ unicode). Cách làm PM như thế thì làm được một việc thì phá nhiều việc khác trên máy tính của người dùng :=\+.

Giải pháp, bạn hãy vào Control Panel->(Appearance and Themes) ->Display-> Appearance->Advanced chỉnh lại font:
+ nếu hiện tại không phải Tahoma thì hãy thay bằng Tahoma
+ nếu hiện tại lại Tahoma thì thay bằng font khác như Verdana hoặc Times New Roman.

ControlForOffice mình viết hoàn toàn bằng các hàm Windows API chuẩn theo unicode nên nếu không hiện đũng chữ chỉ là do máy của người dùng bị lỗi font unicode mà thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi đã sử dụng thử chủ đề ControlForOffice của bạn Tuân thấy một giải pháp tiếng Việt về Unicode rất hay. Bạn Tuân thực sự là 1 Đại cao thủ và rất có tâm huyết trong giải pháp này và quý hơn là bạn đã công bố mã nguồn, cách thực hiện…
Nhưng theo ý kiến cá nhân tôi cách thực hiện từng bước còn thủ công:
+ Chạy file Install.bat để đăng ký các đối tượng trong "ControlForOffice" cho WINDOWS.
+ Khi tạo một file Excel mới, trong môi trường VBA, cần nhúng 2 thư viện và 2 modules.
Import File…
- Import module "CFO_API.bas". Vào menu File->Import file…tìm và chọn file CFO_API.bas.
- Import module "WIN_API.bas". Vào menu File->Import file…tìm và chọn file WIN_API.bas.
Cho tôi hỏi có phương pháp nào để tạo thành file Setup mà các bước thực hiện thủ công như trên người sử dụng không cần phải thực hiện thủ công hay không? Vì không phải người sử dụng nào cũng nắm vững để thực hiện được (và cũng đỡ mất thời gian, chuyên nghiệp hơn…).
Nếu có thì sử dụng phần mềm nào, phương pháp thực hiện?
Cám ơn rất nhiều! Chúc bạn Tuân một năm mới “An khang, thịnh vượng, thắng lợi và hạnh phúc” và tiếp tục đóng góp cho sự phát triển tin học ứng dụng.
 
Upvote 0
Tôi đã sử dụng thử chủ đề ControlForOffice của bạn Tuân thấy một giải pháp tiếng Việt về Unicode rất hay. Bạn Tuân thực sự là 1 Đại cao thủ và rất có tâm huyết trong giải pháp này và quý hơn là bạn đã công bố mã nguồn, cách thực hiện…
Nhưng theo ý kiến cá nhân tôi cách thực hiện từng bước còn thủ công:
+ Chạy file Install.bat để đăng ký các đối tượng trong "ControlForOffice" cho WINDOWS.
+ Khi tạo một file Excel mới, trong môi trường VBA, cần nhúng 2 thư viện và 2 modules.
Import File…
- Import module "CFO_API.bas". Vào menu File->Import file…tìm và chọn file CFO_API.bas.
- Import module "WIN_API.bas". Vào menu File->Import file…tìm và chọn file WIN_API.bas.
Cho tôi hỏi có phương pháp nào để tạo thành file Setup mà các bước thực hiện thủ công như trên người sử dụng không cần phải thực hiện thủ công hay không? Vì không phải người sử dụng nào cũng nắm vững để thực hiện được (và cũng đỡ mất thời gian, chuyên nghiệp hơn…).
Nếu có thì sử dụng phần mềm nào, phương pháp thực hiện?
Cám ơn rất nhiều! Chúc bạn Tuân một năm mới “An khang, thịnh vượng, thắng lợi và hạnh phúc” và tiếp tục đóng góp cho sự phát triển tin học ứng dụng.

Việc chạy file Install.bat là để đăng ký các lớp đối tượng với Windows, đây là yêu cầu bắt buộc của Windows trong lập trình đối tượng COM. Khi tạo bộ cài đặt thì có chế độ đăng ký thư viện DLL, OCX (COM Register) nên không cần Install.bat.

Việc nhúng các thành phần vào ứng dụng cũng vậy, không chỉ với ControlForOffice mà với bất kỳ ActiveX DLL, OCX nào cũng đều cần được nhúng thì sẽ thuận tiện cho lập trình hơn (có thể không nhưng sẽ khó khăn trong lập trình). Ví dụ như bạn lập trình ADO bạn sẽ phải làm như vậy.

Việc import các file CFO_API.bas, WIN_API.bas cũng là một cách nhanh nhất để nhận các khai báo chuẩn các hàm trong ControlForOffice mà tác giả cung cấp. Bất kỳ ai lập trình có sử dụng các hàm Windows API thì đều phải đưa các khai báo vào Module (làm thủ công: nhận khai báo từ file ngoài->copy->paste to module).

Theo cách thức lập trình trước đây (Win32), dù muốn thế nào thì tất cả mọi người lập trình với đối tượng bên ngoài đều phải làm như trên. Có một công nghệ mới mà Microsoft đã cải tiếng, lập trình đơn giản hơn, đó là .NET, chúng ta không cần phải đăng ký các đối tượng COM với Windows nữa, việc sử dụng các hàm API cần thiết lắm mới dùng đến và việc khai báo vẫn phải làm "thủ công", những việc thủ công của người dùng được giảm bớt nhiều.

Cũng có thể có một công cụ nào đó làm việc đăng ký & import nhanh gọn hơn, nhưng tôi chưa tìm hiểu kỹ, vì thấy những việc "thủ công" như trên là đương nhiên người lập trình cần hiểu và làm như vậy.

Tôi cũng đã gửi mã nguồn về tạo Unicode Menu trong Userform (UMU) theo địa chỉ dưới đây bạn tham khảo thêm.
http://www.giaiphapexcel.com/forum/showthread.php?t=16802
Demo.jpg


Cảm ơn bạn đã góp ý về công cụ ControlForOffice, tôi sẽ cố gắng làm cho nó hoàn hảo hơn nữa, mong rằng những người lập trình VBA sẽ làm ra được nhiều những ứng dụng hơn, nhanh hơn, chuyên nguyệp hơn và hiệu quả hơn.

Chúc bạn năm mới nhiều thành công hơn trong sự nghiệp!
 
Lần chỉnh sửa cuối:
Upvote 0
Đúng như bạn Tuan VNUNI nói (những việc "thủ công" như trên là đương nhiên người lập trình cần hiểu và làm như vậy). Với các Công cụ trong ControlForOffice mà bạn Tuan VNUNI cung cấp thì tôi theo hướng dẫn và thực hiện được cả trong VBA for Word. Nhưng ở cấp độ là phần mềm thì người sử dụng không có kiến thức về lập trình sử dụng sẽ rất khó khăn trong bước cài đặt (nếu được thì đối với người sử dụng chỉ thực hiện setup với những bước đơn giản..., nếu phức tạp trong bước cài đặt thì họ sẽ không thực hiện được).
Tôi mới bước đầu nghiên cứu về VBA nên gặp rất nhiều khó khăn khi thực hiện, mặc dù mới tham gia nhưng qua diễn đàn này tôi đã biết được rất nhiều điều hay để học hỏi.
Bạn có tài liệu (hoặc địa chỉ) về lập trình tạo các file.dll trong VB6 thì giới thiệu lên diễn đàn để mọi người và tôi được học hỏi (tiếng Anh càng tốt). Còn lập trình để có file.ocx như bạn thì phải nghiên cứu tài liệu nào? Tôi hoàn toàn chưa có khái niệm về vấn đề này.
Cám ơn bạn rất nhiều? Hôm nay là ngày cuối cùng của năm cũ rồi, chúc bạn năm mới "An khang, thịnh vượng, thành công trong công việc" và tiếp tục có nhiều bài viết hay trong diễn đàn.
Chào thân ái!
 
Upvote 0
Để lập trình ra DLL, OCX thì có nhiều ngôn ngữ để tạo được ra nó. Dễ nhất là bạn dùng VB6 (VBA là dùng ngôn ngữ VB). Để tạo DLL, OCX bạn hãy đọc kỹ phần lập trình với class module.

Tôi gửi bạn sách lập trình VB6.
http://bookilook.com/search.aspx?se...rn+Visual+Basic+6.0++Nice+Manual+.pdf&lang=vi

Bạn có thể xem qua bài đoạn video tôi làm một DLL đơn giản ở đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=11840
 
Upvote 0
Chào anh em thấy anh làm bộ control rất hay và thiết thực nhưng không biết khi nào anh cho ra thêm phiên bản mới chằng hạn như đưa thêm các control khác vào ví dụ như listview... .

Cám ơn anh đã chia sẻ kiến thức cho mọi người
 
Upvote 0
Chào anh em thấy anh làm bộ control rất hay và thiết thực nhưng không biết khi nào anh cho ra thêm phiên bản mới chằng hạn như đưa thêm các control khác vào ví dụ như listview... .

Cám ơn anh đã chia sẻ kiến thức cho mọi người

Hiện tại mình đã có bản nâng cấp 2.0.6 có thêm Unicode Treeview đã chạy tốt trong VB6 nhưng với VBA mình đang cần sửa thêm. Phiên bản 2.0.6 sẽ có thêm 2 controls Treeview và Listview đều hỗ trợ Unicode.
 
Upvote 0
giúp đỡ

Bạn cho hỏi taskpane có chạy được trong office 2003 không ? vì mình chạy toàn bị lổi
run-time error '429' : activex componet can't create object tại dòng
Set MyTaskPanes = New BSTaskPanes
 
Upvote 0
Bạn cho hỏi taskpane có chạy được trong office 2003 không ? vì mình chạy toàn bị lổi
run-time error '429' : activex componet can't create object tại dòng
Set MyTaskPanes = New BSTaskPanes

Hiện tại ControlForOffice.ocx chạy tốt với Windows XP, với Vista mình chưa có điều kiện test kỹ. Trước khi chạy bạn hãy chạy file "Install.bat" để cài đặt.
 
Upvote 0
Hiện tại ControlForOffice.ocx chạy tốt với Windows XP, với Vista mình chưa có điều kiện test kỹ. Trước khi chạy bạn hãy chạy file "Install.bat" để cài đặt.

Đã chạy file "Install.bat", nhưng trên cả hai máy khác nhau đều bị báo lổi giống nhau. Mình rất cần chức năng taskpane cho ứng dụng nhỏ của mình.

Bạn có thể hướng dẫn giúp mình cách tạo một activex có thể tạo TaskPane được không. Hoặc có thể chỉ gợi ý cách làm cho mình cũng được để mình tìm cách làm cũng được.

Cám ơn bạn đã trả lời vấn đề mình quan tâm.
 
Upvote 0
Task Pane

Đã chạy file "Install.bat", nhưng trên cả hai máy khác nhau đều bị báo lổi giống nhau. Mình rất cần chức năng taskpane cho ứng dụng nhỏ của mình.

Bạn có thể hướng dẫn giúp mình cách tạo một activex có thể tạo TaskPane được không. Hoặc có thể chỉ gợi ý cách làm cho mình cũng được để mình tìm cách làm cũng được.

Cám ơn bạn đã trả lời vấn đề mình quan tâm.

Để khắc phục lỗi trên máy tính của bạn, có thể làm như sau:
+ Tìm tất cả các file ControlForOffice.ocx trên máy tính của mình và xoá đi.
+ Dùng chương trình CCleaner hay một chương trình nào khác để xoá dữ liệu rác trong Registry của Windows.
+ Vào trang www.bluesofts.net download bản ControlForOffice.zip về, giải nén, copy file ControlForOffice.ocx vào C:\Windows\System32\ rồi chạy Install.bat.

Để tạo Task Pane trong Excel
Từ Office 2003 trở về trước Microsoft không cho người dùng tạo Task Pane.
Từ Office 2007 đã cho phép tạo, nhưng không thể làm trong VBA. Để tạo bạn phải dùng các ngôn ngữ lập trình khác như VB6, Delphi, .NET,... mà không phải lập trình bình thường, đó là phương pháp tạo COM Add-In nhưng phải biết thực thi Interface để nhận được đối tượng có thể tạo Task Pane. Thực sự việc này không dễ dàng!
Cho dù bạn đã tạo được một Task Pane trong Excel XP, 2003, 2007 thì một việc khó gấp trăm lần là phải tạo được các controls trên nó như là TextBox, ListBox, ComboBox,...hay gắn cả Userform/Handle Window lên nó - cách của ControlForOffice.

Giải pháp dễ nhất để tạo Task Pane
Dùng ngôn ngữ .NET (VB.NET, C#) cùng với bộ VSTO. Chỉ tạo được trên Office 2003 từ SP1 và Office 2007.

Đây là một giải pháp làm trên .NET
mms://wm.microsoft.com/ms/uk/msdn/nuggets/CustomTaskPanesAndActionsPane_Moth.wmv

Giải pháp của ControlForOffice với Task Pane
+ Cho phép tạo Task Pane từ Excel XP, 2003, 2007 với bất kể phiên bản nào của nó.
+ Cho phép lập trình Task Pane trong VBA và trong các ngôn ngữ lập trình khác.
Từ Excel 2003 về trước, Task Pane trong ControlForOffice không phải của Office mà tác giả phải viết một control riêng, lợi dụng giao diện Task Pane đã có của Office để cấy vào.
Từ Excel 2007, Task Pane trong ControlForOffice, chỉ nền của nó là của Office
Mô hình thiết kế TaskPane:
Office 2007 TaskPane -> bluesoft.TaskPane -> Userform/Handle Window

Nếu không dung .NET, để tạo được TaskPane bạn phải thực sự có kinh nghiệm về lập trình Windows API, về các thành phần giao diện của Office.

Những gì có thể chia sẻ với một nhà phát triển ứng dụng trên Office mình đã nói trên, bạn có thể tự tìm cho mình một giải pháp thích hợp.
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn Anh Nguyễn Duy Tuân, em tên Tuấn đã làm xong hàm Msgbox tiếng việt 100% thanksssssssss kể cả nút OK = Đóng, Yes = Có, No = Không. hihihi
 
Upvote 0
To Anh TuanVNUNI
Em đã cài đặt ControlForOffice cho file mới như anh hướng đẫn. Nhưng không hiểu tại sao lúc đóng file đó đều có báo lỗi (File ví dụ kèm theo của anh thì không bị như vậy). Nhờ anh kiểm tra hộ em xem lỗi là gì. Cám ơn anh rất nhiều !
 

File đính kèm

  • VBA.JPG
    VBA.JPG
    152 KB · Đọc: 71
  • Error.JPG
    Error.JPG
    104 KB · Đọc: 39
Lần chỉnh sửa cuối:
Upvote 0
Sao Tôi bấm vào Download dẫn đến trang chủ của bluesofts.net mà không thể Download được. Mong Anh Nguyễn Duy Tuân Up lại giùm. Xin cảm ơn Anh rất nhiều./.
 
Upvote 0
Web KT
Back
Top Bottom