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:
hii! Phần này rất hấp dẫn nhưng có một điều không chạy được trên office 2007 thì tiếc quá.....
 
Upvote 0
ngothehoahanoi đã viết:
hii! Phần này rất hấp dẫn nhưng có một điều không chạy được trên office 2007 thì tiếc quá.....

Các bạn yên tâm, không chạy trên Office2007 chỉ là chuyện nhỏ, tôi đang sửa chỉ trong thời gian ngắn là có bản mới.
Phiên bản sau, thanh chạy (Progress) không chỉ trên thanh Status mà còn ở trên Form hay bất kỳ đâu.
 
Lần chỉnh sửa cuối:
Upvote 0
Dùng như thế nào vậy A Tuân ơi ?
 
Upvote 0
ControlForOffice v1.1

Phiên Bản nâng cấp v1.1.
- Chạy trên mọi môi trường của Office.
- Thêm nhiều tính năng cho Progress (chạy trên form, traybar, formula bar....)

levanduyet đã viết:
Tuấn có thể nói cụ thể được không?
ControlForOffice - Là bộ công cụ em thiết kế để chạy trong A-Excel rất hữu dụng. Các ứng dụng xây dựng trên nền Office cũng rất cần kiểu như vậy. Nếu các bạn thấy ControlForOffice có thể dùng cho ứng dụng của mình thì có thể sử dụng mà không cần phải mua hay xin phép tác giả (free).

Em đưa ControlForOffice lên đây cũng là để thêm một sản phẩm cho Giaiphapexcel.
 
Lần chỉnh sửa cuối:
Upvote 0
Em hỏi có gì không phải mong bác bỏ quá cho
Em thấy mấy cái quan trọng để ở trong .DLL cả rồi còn trong module chỉ có vài thủ tục để điều khiểm.
Trong các Progress thì em đã từng làm được 2 cái là chạy trên form và trên thanh status, (2 cái này không cần động đến API)
Em rất cảm ơn bác đã chia sẻ cho mọi người một ví dụ rất hay, nhưng theo em để áp dụng nó trong các file của mình hiệu quả thì tiến trình của thanh progress phải khớp với quá trình thực hiện công việc mà nó thể hiện. Trong file của bác chỉ có thủ tuc "CommandButton2_Click()" là điều chỉnh được thời gian của thanh progress còn lại thì không.
Có lẽ còn tốt hơn nếu bác chia sẻ cho anh em cả mấy cái kia, ý em là mấy cái hàm API đấy.

Mong bác đừng giận em.
 
Upvote 0
ruadangyeu đã viết:
Em hỏi có gì không phải mong bác bỏ quá cho
Em thấy mấy cái quan trọng để ở trong .DLL cả rồi còn trong module chỉ có vài thủ tục để điều khiểm.
Trong các Progress thì em đã từng làm được 2 cái là chạy trên form và trên thanh status, (2 cái này không cần động đến API)
Em rất cảm ơn bác đã chia sẻ cho mọi người một ví dụ rất hay, nhưng theo em để áp dụng nó trong các file của mình hiệu quả thì tiến trình của thanh progress phải khớp với quá trình thực hiện công việc mà nó thể hiện. Trong file của bác chỉ có thủ tuc "CommandButton2_Click()" là điều chỉnh được thời gian của thanh progress còn lại thì không.
Có lẽ còn tốt hơn nếu bác chia sẻ cho anh em cả mấy cái kia, ý em là mấy cái hàm API đấy.

Mong bác đừng giận em.

Lên mấy sites sourcecode của nước ngoài (hình như mọi người đã list ra đâu đó cả đống sites trên diễn đàn này rồi đấy), Search cái gì cũng có! Chỉ khác là biết lấy cái gì (hiểu nghĩa của nó bằng tiếng Anh để mà search) áp dụng vào thực tế mà thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
ruadangyeu đã viết:
...để áp dụng nó trong các file của mình hiệu quả thì tiến trình của thanh progress phải khớp với quá trình thực hiện công việc mà nó thể hiện.

Điều đó thì đương nhiên rồi bạn ạ.

Trong ví dụ tôi dùng hàm Sleep để tạo thời gian ngưng để các bạn nhìn thấy tiến trình. Trong ứng dụng không được dùng hàm Sleep.

Ví dụ bạn phải tính toán (gán) giá trị từ dòng 1 đến dòng 2000 như ví dụ sau:
Mã:
Sub TinhVung()
Dim oPr As New CLS_Prog
oPr.Create
oPr.Max = 2000

'Tạo mầu
oPr.Barcolor = RGB(255, 140, 10) 'Mau hong
oPr.BackColor = RGB(210, 255, 0) 'Mau nen vang

'Tạo biến vùng (đối tượng) và gán một vùng A1:A2000 
Dim oVung As Range
Set oVung = Application.Range("A1:A2000")

'Gán từ A1->A2000 giá trị từ 1->2000
For i = 1 To oPr.Max
  oPr.Position = i
  oVung.Cells(i, 1).Value = i 
Next i

Set oVung = Nothing
oPr.Destroy
Set oPr = Nothing
End Sub

ruadangyeu đã viết:
Trong file của bác chỉ có thủ tuc "CommandButton2_Click()" là điều chỉnh được thời gian của thanh progress còn lại thì không.

Bạn chưa xem kỹ thủ tục "TestProgress" trong "Module1".

ruadangyeu đã viết:
Có lẽ còn tốt hơn nếu bác chia sẻ cho anh em cả mấy cái kia, ý em là mấy cái hàm API đấy.
Nếu bạn biết lập trình ứng dụng các hàm API thì các hàm sau cung cấp cho bạn truy cập tới các Control khác của WINDOWS.
Mã:
Declare Function GetHwndShellTraybar Lib "ControlForOffice.dll" () As Long
Declare Function GetHwndTrayIcon Lib "ControlForOffice.dll" () As Long
Declare Function GetHwndTraybar Lib "ControlForOffice.dll" () As Long
Declare Function GetHwndTrayClock Lib "ControlForOffice.dll" () As Long

Bạn tham khảo thêm các địa chỉ sau để có được mã nguồn. Đây là các thiết kế cũng hay nhưng không phải dùng hàm API.

http://j-walk.com/ss/excel/tips/tip34.htm
http://www.enhanceddatasystems.com/ED/Pages/ExcelProgressBar.htm
http://www.cpearson.com/excel/Progress.htm
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh tuan nhé, em hâm mộ anh từ lâu hôm nay mới có dịp trò chuyện.
Mong được học hỏi bác nhiều hơn
Em được biết bác là một đại cao thủ excel nói riêng và tin học nói chung. Em đang có chuẩn bị một web elearning cho các bạn học trực tuyến excel, vba, access... miễn phí(dùng moodle ấy mà). Bác có thể cho em xin một số câu hỏi bà đáp án để em tạo các đề trắc nghiệm trong excel được không. Em sẽ ghi rõ nguồn và bản quyền của bác.
Một lần nữa xin cảm ơn bác.
 
Upvote 0
ruadangyeu đã viết:
Cảm ơn anh tuan nhé, em hâm mộ anh từ lâu hôm nay mới có dịp trò chuyện.
Mong được học hỏi bác nhiều hơn
Em được biết bác là một đại cao thủ excel nói riêng và tin học nói chung. Em đang có chuẩn bị một web elearning cho các bạn học trực tuyến excel, vba, access... miễn phí(dùng moodle ấy mà). Bác có thể cho em xin một số câu hỏi bà đáp án để em tạo các đề trắc nghiệm trong excel được không. Em sẽ ghi rõ nguồn và bản quyền của bác.
Một lần nữa xin cảm ơn bác.

Cảm ơn bạn đã khen. Ý lập web elearning của bạn hay đấy! Bạn cứ làm đi có gì hai web sẽ giúp đỡ nhau.
 
Upvote 0
Cảm ơn bác đã quan tâm!
Em cũng đang cố gắng làm hi vọng trong thời gian tới có thể cống hiến cho mọi người cái gì đó, chứ từ trước tới nay toàn nhờ mọi người giúp ngại quá!
 
Upvote 0
ControlForOffice1.2 - Việt hóa 100% giao diện MsgBox, thêm control

Main.jpg


MsgBox.jpg


MsgBoxW.jpg


MsgBoxTimer.jpg


MsgBoxTimerProgress.jpg


MsgBoxTimerProgressCallback.jpg


ChooseLan.jpg


Rename.jpg


Chúc mừng năm mới!
 
Lần chỉnh sửa cuối:
Upvote 0
Timer
Timer.jpg


Trackbar
Trackbar.jpg


Validation
Validation.jpg


Convert chuỗi

ConvertStr.jpg


Chúc mừng năm mới!

Download
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi chẳng hiểu cái Control của bạn có tác dụng gì nhưng khi mở file ControlForOffice.xls báo lỗi lung tung. Hình như Control này sẽ báo lỗi nếu như trên máy không cài TCVN3. Chẳng lẽ để sử dụng được control này thì lại phải cài thêm TCVN3 nữa à?
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
hoa35ktxd đã viết:
Tôi chẳng hiểu cái Control của bạn có tác dụng gì nhưng khi mở file ControlForOffice.xls báo lỗi lung tung. Hình như Control này sẽ báo lỗi nếu như trên máy không cài TCVN3. Chẳng lẽ để sử dụng được control này thì lại phải cài thêm TCVN3 nữa à? Tuyệt hay.

Sao bạn chưa chạy được lại bảo "Tuyệt hay"? Đây là box "Lập trình trên Excel", nếu bạn chưa biết thì đừng xem làm gì còn nếu biết và quan tâm thì bình tĩnh làm theo hướng dẫn của tôi.
Tôi cung cấp công cụ cho TCVN3, VNI ->Unicode...
Bạn cần chạy một lần duy nhất trên máy của mình file Setup Control.bat. Vì đây là Box "Lập trình trên Excel" nên đương nhiên mọi người hiểu phải đặt "Enable Macros".

Có rất nhiều chuyên gia về VB/VBA phải đau đầu (có thể vô phương) về vấn đề không dùng được font chữ Unicode trên các control. Nhiều người phải bỏ ra khoản tiền không nhỏ để có được License của bộ control có Unicode (như là UnitoolBox,...). VBA cung cấp thiếu các control so với VB, nếu có cũng không có Unicode ngoại trừ FM20.dll (FM20.dll không có ThemeXP, hạn chế về giao diện).

Tôi cung cấp bộ control này để trợ giúp cho các bạn yêu thích VBA cải thiện về giao diện, giảm thời gian về kỹ thuật mà để dành thời gian làm tăng tính chuyên môn cho ứng dụng của mình.

Tương lai bộ control này còn có cả Listview và Treeview có hỗ trợ Unicode.
 
Lần chỉnh sửa cuối:
Upvote 0
Thế này nhé: Cái Control của bạn tôi down về để thử, chạy file Setup Control.bat rồi nhưng khi mở file ControlForOffice.xls lên thì báo lỗi không tìm thấy thư viện strTCVN3, (StrInputType As StrInput = strTCVN3) trên máy của tôi không cài bất kỳ bộ font nào nào, chỉ sử dụng font có sẵn của windows. Vì thế mỗi khi copy tài liệu từ bên ngoài vào tôi thường phải chuyển chúng thành Unicode hết.
Có phải control của bạn chỉ hoạt động khi trên máy đã cài TCVN3? Nếu như thế thì hơi phiền hà.
Ở đây tôi đang quan tâm đến vấn đề chuyển mã tiếng việt giữa các bảng mã khác nhau, còn việc hiển thị tiếng việt Unicode trong VBA thì đơn giản thôi, đã có rất nhiều bài viết về cái này rồi.
Bạn thử kiểm tra lại xem nhé. Thân.
 
Upvote 0
Sửa lỗi ControlForOffice.xls

Xin lỗi tất cả các bạn, file "ControlForOffice.xls" có lỗi. Do trong references có link tới một control "frmcontrol" không được gửi kèm theo, control này là thừa.
Cách khắc phục: các bạn vào menu Run chọn Reset. Sau đó vào menu Tools chọn References. trong danh sách hiện ra, chỗ nào có "MISSING..." thì bỏ tick đi.

Thành thực cảm ơn bạn hoa35ktxd đã phát hiện ra lỗi nghiêm trọng trên. Nhưng
hoa35ktxd đã viết:
...còn việc hiển thị tiếng việt Unicode trong VBA thì đơn giản thôi, đã có rất nhiều bài viết về cái này rồi.
Thực sự không đơn giản đâu. Bạn chỉ cần làm cho tôi một việc là:
Mã:
MsgBox "VBA có tiếng Việt"
khi chạy cho ra bàn hình font tiếng Việt đúng như vậy.

Các bạn còn quan tâm, xin mời download lại file tôi đã sửa lỗi.
 

File đính kèm

  • Control For Office.zip
    290.3 KB · Đọc: 5,190
Lần chỉnh sửa cuối:
Upvote 0
TuanVNUNI đã viết:
Tương lai bộ control này còn có cả Listview và Treeview có hỗ trợ Unicode.
Khi nào có Listview, TreeView thì báo với nha!

Lê Văn Duyệt
 
Upvote 0
TuanVNUNI đã viết:
Thực sự không đơn giản đâu. Bạn chỉ cần làm cho tôi một việc là:
Mã:
MsgBox "VBA có tiếng Việt"
khi chạy cho ra bàn hình font tiếng Việt đúng như vậy.
Vấn đề này nói khó đối với ai chưa biết, và không khó đối với ai đã biết rồi, ngoài việc dùng hàm API MessageBox ra thì tôi dùng Apploc.msi (1.32MB) do Microsoft cung cấp miễn phí nhằm khắc phục nhược điểm của VB, rất dễ sử dụng, cứ cài đặt bổ sung xong là có thể dùng luôn, hỗ trợ Vietnamese Locale CP 1528, dùng được cả trong VB6, không cần phải loay hoay với Unicode nữa, hỗ trợ rất nhiều control chuẩn của VBA và VB6 (Tôi chưa thử hết).
Tuy nhiên bạn đừng bắt tôi phải chuyển các button của Msgbox thành tiếng việt nhé vì tôi không biết làm cái đó đâu ngoại trừ giả lập thôi (Nếu không lầm thì bạn cũng giả lập).

Còn đối với cái file "ControlForOffice.xls" vẫn còn lỗi.
Hàm chuyển số thành chữ không làm việc được, báo lỗi : #VALUE! khi người sử dụng thiết lập kiểu số theo dạng của Việt Nam (dấu thập phân là dấu "," dấu phân cách là dấu ".". Ngoài ra bạn cần có chế độ kiểm tra tính hợp lệ của dữ liệu của hàm USD, VND..., nếu đúng mới chạy, nếu không thì thoát. Ở đây nếu thiết lập theo chuẩn của VN thì khi sửa số liệu trong ô B19 lập tức lỗi và Excel sẽ thoát. Và bạn không nên để mặc định cho chương trình gán chữ "Đồng'' vào đằng sau kết quả. Hãy để việc đó cho người dùng vì có trường hợp đơn vị cần đếm không phải là đồng, Khi đó người sử dụng sẽ làm như sau (=''(Bằng chữ: '' & VND(B19) & ''Đồng''), như thế sẽ linh hoạt hơn.
Nói chung hàm chuyển số thành chữ của bạn cần chỉnh sửa, Ví dụ: 256,45 cho ra kết quả: Hai trăm năm sáu, lẻ bốn lăm Đồng là không đúng nguyên tắc kế toán, kết quả phải là ''Hai trăm năm sáu đồng, lẻ bốn lăm xu'' hoặc ''Hai trăm năm sáu đồng, bốn hào rưỡi'' hoặc ''Hai trăm năm sáu phảy, bốn lăm đồng''.
Và cách đọc của bạn cũng chưa chuẩn: 25 phải đọc là ''Hai mươi lăm'' chứ không được đọc là ''Hai lăm''
Tôi chưa test hết cái Control của bạn nhưng mới sơ sơ đã thấy có vấn đề. Vài ý kiến nhỏ, bạn hãy tham khảo để chỉnh sửa cho hoàn thiện, và thuận tiện với nhiều người sử dụng hơn.
Thân.
 
Upvote 0
Web KT
Back
Top Bottom