Chia sẻ ControlForOffice - Bộ công cụ điều khiển Office/Excel (1 người xem)

Liên hệ QC

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

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,845
Được thích
10,338
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.
(Tác giả đã dừng phát triển ControlForOffice.ocx mà thay thế bằng sản phẩm với tên gọi khác là BSAC với nhiều controls, hỗ trợ cả 32-bit, 64-bit. Xem và tải BSAC.ocx )
 
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

Lần chỉnh sửa cuối:
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
Không ổn rồi TuanVNUNI ơi bạn hãy nhìn mấy hình này
 

File đính kèm

  • LoiHamChuyenSoThanhChu.JPG
    LoiHamChuyenSoThanhChu.JPG
    11.5 KB · Đọc: 114
  • LoiHamChuyenSoThanhChu1.JPG
    LoiHamChuyenSoThanhChu1.JPG
    34.5 KB · Đọc: 80
  • ChuyenDoiMa.jpg
    ChuyenDoiMa.jpg
    45.4 KB · Đọc: 81
Upvote 0
hoa35ktxd đã viết:
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).

Kiến thức là không giới hạn. Còn rất nhiều người chưa biết, cũng có rất nhiều người đã biết, biết ở mức độ nào? Có nhiều cái ngày xưa tôi làm ra, tôi rất tự hào tưởng nó là đỉnh cao (với chính tôi), nhưng đến bây giờ nhìn lại mấy cái đó chỉ ở mức abc. Vấn đề quan trọng tôi đưa ra ở đây là, thành quả của mình cung cấp cho những người chưa biết và miễn phí.

Vậy, bạn cho tôi hỏi Apploc.msi có Timer không? Listview, Treeview, Grid có unicode không? Ngày xưa thì tôi không biết, bây giờ muốn download từ microsoft.com thì HĐH Windows của người dùng phải là bản "hợp pháp".

Quả thực nếu Apploc.msi unicode hết và hoàn thiện thì các PM của các công ty PM ở VN không phải làm cái trò giả lập unicode bằng cách chữa lại các font tahoma hay phải dùng VK Sans Serif của Vietkey...trừ khi PM đó chuyển dùng .Net.

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).

Đã mất thời gian nghiên cứu làm cái này thì giả lập làm gì, trừ khi mình không thể làm được. Tôi làm không giả lập chút nào! Người dùng có thể tự thay đổi theo ý mình, nếu muốn thì restore về ngôn ngữ chuẩn. Bạn xem kỹ hơn nhé!

Mã:
Sub TestRestoreButtonText()
Dim x As VbMsgBoxResult

'Can phai co neu chay SetButtonText mang tinh tam thoi
    
    SaveButtons 'Luu trang thai cua button

    SetButtonText ID_YES, "TiÕng &ViÖt"
    SetButtonText ID_NO, "&English"
    SetButtonText ID_CANCEL, "&Kh«ng lµm"
    
    x = MsgBox("B¹n muèn kh«i phôc nót bÊm vÒ d¹ng nµo?", _
                vbYesNoCancel + vbQuestion, _
                "Thay ®æi tªn nót button trong MsgBox")

    If x = vbYes Then
        RestoreButtonText False 'Viet Nam
    ElseIf x = vbNo Then
        RestoreButtonText True 'VB/VBA
    Else 'Cancel
        
        RestoreButtons 'Khoi phuc lai cac button
        
    End If
End Sub

Còn đối với cái file "ControlForOffice.xls" vẫn còn lỗi.
Lỗi ở đâu bạn nhỉ? Đó là file để test thôi mà.

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.

Đúng vậy, cái này bạn nói đúng tôi sẽ sửa ngay. Thực sự hàm này tôi chưa check kỹ. Hàm này làm đúng có rất nhiều khâu phải kiểm tra:
- Kiểm tra mặc định trong Control Panel\Regional Options.
- Kiểm tra mặc định trong môi trường Excel.
- Kiểm tra loại giá trị của tham số đưa vào. Bình thường thì ai cũng đưa vào tiền là một con số, nhưng ai đó lại đưa vào giá trị là dạng Text/String là toi.

ControlForOffice tôi vẫn luôn sửa chữa và tăng ứng dụng trong nó. Vì vậy, version 1.2 chưa phải là phiên bản cuối cùng.

Rất cảm ơn bạn hoa35ktxd đã test và có ý kiến đóng góp ý xây dựng. Năm mới chúc bạn vui vẻ và thành công!
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn lời chúc của bạn.
Đầu xuân tôi chúc bạn mạnh khỏe, toại nguyện trong cuộc sống và tiếp tục có những đóng góp chung đáng kể vì sự tiến bộ chung của tất cả chúng ta.

Về vấn apploc.msi tôi đã nói là chưa thử hết tuy nhiên với listview, treeview, grid thì đều hỗ trợ UNC 1528, tất nhiên là không có timer vì đó là một control riêng. Còn về vấn đề Download thì free mà, tôi đang dùng win có bản quyền nên không biết thế nào, chưa đem cài cái này sang máy khác, tôi chỉ viết để tôi dùng thôi vì chỉ có tôi mới dùng được cái của tôi làm, người khác sờ vào chịu ngay. À, thằng này không hỗ trợ được 100% các control đâu và hơi phiền là nó chỉ hỗ trợ UNC 1528 tuy nhiên nó lại trị được một số thằng cứng đầu như frame, textbox, titlebar, menu, taskbar.
Nói vậy thôi, tùy mức độ và nhu cầu của người dùng để lựa chọn công cụ, tôi thì ngại viết lắm và nhất là dùng các control tự xây dựng, rất dễ bị xung đột.
Dù sao tôi cũng ủng hộ tâm huyết của bạn, chúng ta cùng tranh luận để có được những sản phẩm chất lượng cao phải không bạn.
 
Upvote 0
Cái này rất hay, nhưng không hiểu sao toàn bị lỗi thoát khỏi Excel.

Tuân có thể sửa lại không?
 
Upvote 0
ControlForOffice.ocx em đã dùng chính thức cho các ứng dụng của mình rồi. Chạy rất Ok!
Có lẽ trong file ví dụ có vấn đề gì đó? Em sẽ kiểm tra lại.

Anh và các bạn có thể download bản sửa đổi. Phiên bản đang nang cấp thành 1.3 - Ứng dụng CSDL. Vì chưa đưa các ví dụ vào nên em chưa chính thức công bố.
Phiên bản sửa đổi em cho thêm phần khôi phục giao diện unicode chuẩn của Windows mà một số ứng dụng nào đó đã chỉnh "sai".

DOWNLOAD


Lưu ý: Mọi người nên dùng hàm MsgBoxW thay cho hàm MsgBox.
Lý do, vì để MsgBox có giao diện tiếng Việt thì trước đó phải chạy hàm StartHookMsgBox và kết thúc phải dùng hàm StopHookMsgBox để đóng lại. Trong file ví dụ gửi kèm, tôi đã khai báo để cho chạy tự động khi mở file và đóng file trong module MD_Open_Close
Mã:
Sub Auto_Open()
   StartHookMsgBox GetHwndXLS(), strTCVN3 'Hook Msgbox - Cho phep hien thi MsgBox theo phong Unicode.

'Không nên chạy StartHookMsgBox trong thủ tục này.
  
End Sub

Sub Auto_Close()
   StopHookMsgBox 'Bỏ đi, nếu StartHookMsgBox không chạy.
End Sub
 
Upvote 0
Cái này hình như không thể hiện được tiếng Việt trong InputBox phải không Tuân ơi?
 
Upvote 0
Anh Tuân ơi, trong VBE có thể gõ theo Unicode mà ra vẫn là TV không anh ??

Em gõ theo VNI hoặc TCVN thì OK, nhưng Unicode lại chưa được.hay em làm sai ??
 
Upvote 0
Mr Okebab đã viết:
Anh Tuân ơi, trong VBE có thể gõ theo Unicode mà ra vẫn là TV không anh ??

Em gõ theo VNI hoặc TCVN thì OK, nhưng Unicode lại chưa được.hay em làm sai ??

Trong VBE không hiện được chuỗi Unicode, tất cả các dòng VB version<7 đều như thế cả. Nếu hiện được thì người ta có thể xây dựng một ứng dụng bằng VB hoàn toàn bằng Unicode một cách dễ dàng.
 
Upvote 0
TuanVNUNI đã viết:
Trong VBE không hiện được chuỗi Unicode, tất cả các dòng VB version<7 đều như thế cả. Nếu hiện được thì người ta có thể xây dựng một ứng dụng bằng VB hoàn toàn bằng Unicode một cách dễ dàng.

Ngay trên các diễn đàn ở VN cũng có đầy món viết Fully Unicode Support bằng VB đó thôi.

Ngoài ra còn có câu: Giờ chỉ sợ thiếu tiền, có tiền rồi mua quách bộ CyperActiveX gì đó (đỡ phải lằng nhằng viết lách cho mệt). Khi đó thì đúng là 200% Unicode Support luôn.
 
Upvote 0
smbsolutions đã viết:
Ngay trên các diễn đàn ở VN cũng có đầy món viết Fully Unicode Support bằng VB đó thôi.
Anh có thể cho địa chỉ để tham khảo không? Em nghĩ không đơn giản, cho dù thể hiện được Unicode trong VBE, khi lưu file, nó lại không lưu chuỗi Unicode.

smbsolutions đã viết:
Ngoài ra còn có câu: Giờ chỉ sợ thiếu tiền, có tiền rồi mua quách bộ CyperActiveX gì đó (đỡ phải lằng nhằng viết lách cho mệt). Khi đó thì đúng là 200% Unicode Support luôn.
Nếu mua thì chỉ dùng cho ứng dụng lớn, các ứng dụng nho nhỏ mà mua chắc lúc đó giá của ứng dụng tăng lên đáng kể vì chi phí tăng -->Khó cạnh tranh về giá.
 
Upvote 0
TuanVNUNI đã viết:
Anh có thể cho địa chỉ để tham khảo không? Em nghĩ không đơn giản, cho dù thể hiện được Unicode trong VBE, khi lưu file, nó lại không lưu chuỗi Unicode.
Tuân có vẻ ít tham khảo quá nhỉ. Bên Bảo minh hay trung tâm SDC gì đó trong Đà nẵng có cái HRM, cái SalesBX gì đó cũng là ứng dụng Unicode đó thôi. Ngay trên cái caulacbovb có cái vbapi lib gì đó cũng là unicode đó thôi, v.v...

Tôi ko thể tìm ví dụ được mặc dù chỉ mất vài phút để google. Hiện đang cong đít lên để mai đi làm cho khách hàng đây. Thứ tư họ khai trương rồi.

Cần gì PM lớn lao gì đâu, chỉ cần Tuân bán 2 cái A-Excel là đủ tiền mua cả bộ unicode control đó rồi. Nhiều khi cứ tưởng là đắt chứ thực ra là do ta ko quen mua sắm phần mềm mà thôi. Bên tớ hiện cũng mua 1 số thứ phục vụ cho "thượng đế" của mình rồi. Mua 1 lần mà thượng đế sài mãi chứ có phải đắt đỏ gì cho cam đâu.
 
Lần chỉnh sửa cuối:
Upvote 0
Hi, tôi download rồi nhưng không biết làm sao để sử được cho soạn tiếng việt trrong VBA.
Xin chỉ giúp!
 
Upvote 0
xin lỗi tác giả, quả thật tôi đã download file, làm theo hướng dẫn như kô được bác có thể hướng dẫn cụ thể cho em, hoặc làm 1 file excel nhỏ, chỉ hướng dẫn hiển thị tiếng việt trên msgbox được kô? trong file có quá nhiều code, kô biết cái nào là của cái nào, xin chân thành cám ơn

ack, bó tay các bác. hướng dẫn cũng không đến nơi đến chốn, chỉ quăng cho con cá, đi kiếm cái cần câu đuối luôn.
Nếu bạn nào muốn hiển thị được msgbox tiếng việt unicode thì hãy làm như sau:
1.copy file controlforoffice.ocx vào windows\system32
2.copy lại toàn bộ đoạn mã module CFO_API vào file các bạn cần làm
3.Cái quan trọng tiếp theo là phải vào tool\reference chọn browse tìm đến file ControlForOffice.ocx
Làm xong 3 bước trên là thoải mái unicode msgboxW không cần phải khai báo starthookmsgbox nữa khi open và close file.
Nhưng không biết tại sao nhiều khi không hiện nội dung trong msgbox chỉ hiện mỗi cái button, bấm liên tục 7,8 lần thì lại hiện nội dung bình thường.Bó tay.com
Cám ơn TuanVNUNI đã cho ra tool hữu ích này.
 
Upvote 0
ControlForOffice v2.0, ngày 10/07/08

Xin giới thiệu tới các thành viên ControlForOffice v2.0, ngày 10/07/08.

CFO2.0.jpg


Những thêm mới và sửa đổi chính:

+ Thêm công cụ BSTaskPane: cho phép lập trình với Task Pane một cách dễ dàng. Người dùng lập trình trên UserForm sau đó nhúng vào Task Pane chỉ bằng 2 dòng lệnh! BSTaskPane lập trình được từ OfficeXP trở lên, với Office 2007 là tốt nhất.
Với Office 2007 cho phép hiển thị nhiều Task Pane cùng một lúc, còn với Office XP,2003 chỉ hiển thị được một.

+ Thêm InputBox: cho phép hiển thị InputBox với Unicode, nhập password, thay đổi màu chữ và nền.

+ Sửa font chữ trên MsgBoxW, chữ trên các nút lệnh thành chữ đậm (Bold)
+ Sửa sự ổn định tuyệt đối của MsgBoxW
+ Sửa các hàm đổi số thành chữ giống như với AccHelper.xll.
+ Sửa thanh Progress tương thích với Office 2007 (phiên bản cũ lỗi).
+ Sửa các hàm kết nối+truy vấn database.

Tác giả rất mong sự góp ý của các thành viên để bộ công cụ ControlForOffice ngày càng hoàn thiện.

Các bạn có thể download tại đường dẫn ở trang đầu.
 
Upvote 0
Sử dụng Form của VB6 với Task Pane

Xin giới thiệu với các bạn cách thức sử dụng Form của VB6 với Task Pane trong VBA.

TaskPaneWithVB6Form.jpg


Ví dụ kèm theo:
 

File đính kèm

Upvote 0
Bác vui lòng sửa lại link download nhé. Bác để www.www như thế thì làm sao mọi người download đc.Thanks
và còn bị lỗi 2 nút đồng ý và không nó bị đen thui như thế này thì là sao hả bác???

loi3xc3.jpg


CÒn nữa, khi click vào Progress của thanh trạng thái thì báo lỗi run- time error 2147417848 automation error
Tôi đang use office 2003
 
Lần chỉnh sửa cuối:
Upvote 0
Bác vui lòng sửa lại link download nhé. Bác để www.www như thế thì làm sao mọi người download đc.Thanks
và còn bị lỗi 2 nút đồng ý và không nó bị đen thui như thế này thì là sao hả bác???

Cảm ơn bạn. Lỗi trên tôi đã sửa trong phiên bản 2.0.1.

ControlForOffice
v2.0.1, ngày 15/07/08

Sửa đổi phiên bản mới:
Sửa lỗi khi chạy hàm MsgBoxTimer, với cấu trúc MsgTimerStruct, nếu khai báo giá trị cho biến thành phần .DisableButton_IDs thì các hàm MsgBox sau sẽ bị ảnh hưởng của DisableButton_IDs (lỗi như bạn adult thông báo trên).

CÒn nữa, khi click vào Progress của thanh trạng thái thì báo lỗi run- time error 2147417848 automation error
Tôi đang use office 2003

Với các phiên bản Office 2000,2002 (XP),2003,2007 và WINDOWS XP thì tôi đã test không có lỗi nhưng với WINDOWS VISTA thì tôi chưa có điều kiện để test, bạn kiểm tra lại xem có lỗi đó không? Nếu vẫn bị thì có thể do ảnh hưởng của HĐH WINDOWS VISTA. Rất tiếc máy tôi không cài được Vista nên không debug được lỗi này.

Các bạn có thể download tại trang đầu.
 
Lần chỉnh sửa cuối:
Upvote 0
Các lỗi trên đã được khắc phục. Bác TuanVNUNI vui lòng cho mình hỏi, nếu muốn thay cái hình sử dụng login form của bác thì có cần phải chỉnh sửa gì trong file msg.skn không? Mình chỉ cần đổi hình là được đúng không?
Cám ơn sự đóng góp nhiệt tình của TUANVNUNI giành cho diễn đàn.
 
Upvote 0
ControlForOffice v2.0.2, ngày 18/07/08

Các lỗi trên đã được khắc phục. Bác TuanVNUNI vui lòng cho mình hỏi, nếu muốn thay cái hình sử dụng login form của bác thì có cần phải chỉnh sửa gì trong file msg.skn không? Mình chỉ cần đổi hình là được đúng không?
Cám ơn sự đóng góp nhiệt tình của TUANVNUNI giành cho diễn đàn.

Để tạo Skin cho form, bạn làmtheo hướng dẫn sau:
+ Tạo ảnh. Tô màu nền cho ảnh, chỉ tô một màu, bắt đầu từ toạ độ X=0, Y=0. Tô những vùng mà bạn muốn cắt bỏ
+ Dùng chương trình tạo file *.skn. Nội dung của file này thực chất chứa các điểm cần cần cắt bỏ khỏi form. Chương trình này download từ www.bluesofts.net
Lưu ý, số điểm cắt càng nhiều thì tốc độ tạo skin càng chậm, bạn cần có thêm thủ thuật để cắt nhanh (giới hạn điểm cắt).
+ Copy file *.skn vào cùng thư mục với file chương trình.
+ Tạo UserForm, trong màn hình "Property", chọn Picture và xác định file ảnh đã thiết kế
+ Trong sự kiện "UserForm_Initialize" của UserForm, soạn lệnh như sau:

Mã:
	Private Sub UserForm_Initialize()
	     SetWinSkin GetHwnd(Me.Caption), ActiveWorkbook.Path & "\file.skn"
	End Sub

ControlForOffice
v2.0.2, ngày 18/07/08

Thêm mới và sửa đổi trong phiên bản mới:
+ Thêm: Cho phép hiện màu nền (BackColor) và màu chữ (ForeColor) cho MsgBox(W).
+ Sửa : Căn lại vị trí và kích cỡ của các nút lệnh (command button) trên MsgBox(W) cho phù hợp hơn. Phiên bản cũ chiều cao của các nút lệnh lớn hơn 1 điểm, khoản cách từ thanh Progress đến nút lệnh quá gần.

MsgBoxCallBFN.jpg


+ Thêm : Hàm InputBox cho phép chạy Timer (cho phép đếm gian gian).
+ Thêm : Hàm InputBox cho phép triệu gọi một hàm khác bên ngoài trong khi chạy (Callback Function).
+ Thêm : Hàm InputBox cho phép vô hiệu (disable) một vài nút lệnh.

IPBTimer.jpg


IPBCallBFN.jpg


Với phiên bản mới này, một số các hàm sau đã được nâng cấp và sửa đổi cấu trúc
Mã:
[INDENT]StartHookMsgBox
MsgBoxW
MsgBoxTimer
CallbackTimerProc 

Type TInputStruct[/INDENT]

Các bạn có thể download tại trang đầu.
 
Lần chỉnh sửa cuối:
Upvote 0
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Mã:
[INDENT]StartHookMsgBox
MsgBoxW
MsgBoxTimer
CallbackTimerProc 

Type TInputStruct[/INDENT]

àh, các hàm trên đã được cải tiến như thế nào vậy TuanVNUNI, mình thấy hàm MsgboxW đâu khác gì so với cái cũ đâu.
Thanks

Mã:
Declare Sub StartHookMsgBox Lib "ControlForOffice.ocx" (Optional ByVal hwnd As Long = 0, _
                                                        Optional ByVal StrInputType As StrInput = strTCVN3, _
                                                        Optional ByVal UseButtonTextVBA As Boolean = False, _
                                                        Optional ByVal FORECOLOR As Long = 0, _
                                                        Optional ByVal BackColor As Long = 0, _
                                                        Optional ByVal hFontMSG As Long = 0)

Declare Function MsgBoxW Lib "ControlForOffice.ocx" (ByVal Msg As Variant, _
                                                    Optional ByVal uType As VbMsgBoxStyle = vbOKOnly, _
                                                    Optional ByVal Caption As Variant = vbNullString, _
                                                    Optional ByVal StrInputType As StrInput = strTCVN3, _
                                                    Optional ByVal FORECOLOR As Long = 0, _
                                                    Optional ByVal BackColor As Long = 0, _
                                                    Optional ByVal hFontMSG As Long = 0) As VbMsgBoxResult

Declare Function MsgBoxTimer Lib "ControlForOffice.ocx" (ByRef TIMERSTRUCT As MsgTimerStruct, _
                                                        ByVal Msg As Variant, _
                                                        Optional ByVal uType As VbMsgBoxStyle = vbOKOnly, _
                                                        Optional ByVal Caption As Variant = vbNullString, _
                                                        Optional ByVal StrInputType As StrInput = strTCVN3, _
                                                        Optional ByVal FORECOLOR As Long = 0, _
                                                        Optional ByVal BackColor As Long = 0, _
                                                        Optional ByVal hFontMSG As Long = 0) As VbMsgBoxResult

Bạn để ý 3 tham số cuối của các hàm, cho phép thay đổi màu chữ và màu nền và font chữ của hộp thoại.
 
Upvote 0
hix, bác TuanVNUNI ơi mình vào trang chủ của bác nhưng mình tìm kô thấy phần mềm cắt ảnh theo pixel như bác giới thiệu ạh. Bác vui lòng cho em cái link nhé.Và phần BSTaskPane PictureViewer không chạy được. Nó chỉ nháy màn hình 1 cái rồi không có phản ứng gì nữa.
Xin cám ơn.
 
Lần chỉnh sửa cuối:
Upvote 0
ControlForOffice v2.0.3, ngày 22/07/08

Xin gửi tới các bạn phiên bản mới

ControlForOffice
v2.0.3, ngày 22/07/08

Thêm mới và sửa đổi trong phiên bản mới:

+ Thêm : Hàm InputBox & MsgBox chạy với cấu trúc tính TimerStruct, khi chạy hàm "callback function" cho phép thay đổi văn bản (Text) của hộp thoại, các thong báo và nút lệnh
+ Thêm : Hàm InputBox & MsgBox cho phép chạy Timer liên tục nếu khai báo TimerDuration = -1 (biến này nếu>0 thì sẽ giới hạn về thời gian).
+ Thêm : Hàm StartHookMsgBoxEx, MsgBoxEx với kiểu dữ liệu BSMsgBoxParams hỗ trợ cho người dùng giải pháp tổng thể với MsgBox.
+ Thêm: Hàm MsgBox cho phép người dùng thay đổi ảnh (icon) của hộp thoại.
+ Sửa :một vài lỗi liên quan tới đối tượng BSTaskPanes.ActiveTaskPane, BSTaskPane, cho phép nhận vùng Client của Task Pane thông qua thuộc tính BSTaskPane.Client (phiên bản cũ lỗi với Office 2003 và các phiên bản thấp hơn).
+ Thêm : Bổ sung hướng dẫn chi tiết về việc sử dụng ControlForOffice cho ứng dụng của người dùng, thêm nhiều ví dụ cụ thể cùng mã nguồn. Hỗ trợ việc xem ví dụ và đọc code nhanh.
+ Sửa sửa lỗi xung đột với PM bộ gõ Unikey.

MsgBoxEx.jpg


ChangeText.jpg


Với phiên bản mới này, thêm một số các hàm:
Mã:
[INDENT]
Type BSMsgBoxParams
    hIcon                  As Variant 'HICON or Icon Name or Path file (*.ico) 'v2.0.3
[COLOR="SeaGreen"]        '.hIcon = ExtractIcon(GetHInstance, Application.Path & "\Excel.exe", 0)
        '.hIcon = ExtractIcon(GetHInstance, GetSysDir() & "\shell32.dll", 5)
        '.hIcon = ThisWorkbook.Path & "\ICON\Favorites.ico"[/COLOR]
    BACKCOLOR             As Long
    FORECOLOR             As Long
    hFontMsg              As Long
    InputType             As StrInput
    TimerStruct           As MsgTimerStruct
End Type

Declare Sub StartHookMsgBoxEx Lib "ControlForOffice.ocx" (ByRef MsgParams As BSMsgBoxParams)
Declare Function MsgBoxEx Lib "ControlForOffice.ocx" (ByVal Msg As Variant, Optional ByVal uType As VbMsgBoxStyle = vbOKOnly, Optional ByVal Caption As Variant = vbNullString) As VbMsgBoxResult

[COLOR="SeaGreen"]'Cho phép thay đổi ảnh của MsgBox trong khi chạy hàm callback function.[/COLOR]
Declare Function ChangeMsgIcon Lib "ControlForOffice.ocx" (ByVal Icon As Variant, ByVal HwndMsg As Long) As Long

[COLOR="SeaGreen"]'Cho phép thay đổi nội dung thông báo, nút lệnh, tiêu đề của MsgBox & InputBox trong khi chạy hàm callback function.[/COLOR]
Declare Function SetCtrlTextW Lib "ControlForOffice.ocx" (ByVal hDlg As Long, ByVal nIDDlgItem As Long, ByVal lpString As String) As Boolean

[/INDENT]

Các bạn có thể download tại trang đầu.
 
Lần chỉnh sửa cuối:
Upvote 0
àh, bác TUANVNUNI ơi, bác có ví dụ nào để ứng dụng cái progressbar trên form mà thời gian chạy của bar ứng với thời gian code chạy không? Xin vui lòng giúp đỡ.Và controforOffice của bác có hỗ trợ callback time trên form không ạh? Nếu được thì làm 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, bác có ví dụ nào để ứng dụng cái progressbar trên form mà thời gian chạy của bar ứng với thời gian code chạy không? Xin vui lòng giúp đỡ.Và controforOffice của bác có hỗ trợ callback time trên form không ạh? Nếu được thì làm như thế nào?
Xin chân thành cám ơn.


Tôi gửi bạn file ví dụ, hy vọng bạn sẽ sử dụng tốt ControlForOffice.
 

File đính kèm

Upvote 0
Bác TUANVNUNI ơi, khi sử dụng file controlForOffice của bác bị lỗi không hiển thị được bảng màu trong VBA.Bác xem lại giúp nhé, hồi trước cứ tưởng máy mình bị lỗi nhưng hôm nay mới ghost lại máy, trước khi xài control for office thì kô sao, nhưng now xài file .dll của bác thị bị hiện tượng trên.Mở 1 file mới cũng bị hiện tượng trên (đã restart lại máy luôn).Máy mình xài WINXP rồi nhé
Thanks
Xem hình góc trái, bảng Pallete

loi1jp4.jpg
 
Lần chỉnh sửa cuối:
Upvote 0
Lỗi trên không phải do ControlForOffice! Là do bạn đã thêm file EXCEL.exe.manifest vào trong đường dẫn "C:\Program Files\Microsoft Office\OFFICE11" để dùng Theme XP trong Excel 2003 (11).

Vậy nếu bạn không muốn dùng Theme XP thì bạn hãy xóa file EXCEL.exe.manifest trong đường dẫn "C:\Program Files\Microsoft Office\OFFICE11" đi.

Trước tới giờ, khi lập trình tôi hay dùng màu ở tab System nên cũng quên không nhắc người dùng với vấn đề của EXCEL.exe.manifest.
 
Upvote 0
Ok, đành tạm thời không bỏ file manifest vào thôi. Khi nào không cần đến các pallete nữa thì cho vào lại. Thanks bác nhé. Nếu được thì bác có thể làm cho người dùng vừa xài đc theme XP mà lại xài đc Pallete luôn thì hay quá, vỉ màu trong system có vẻ hơi đơn điệu!
 
Upvote 0
hix, bác ơi giúp em với, không biết em làm gì sau khi ghost lại máy thì vào file progressAnhTimer của bác khi click vào đọc số thì nó cứ hiện bảng ActiveX component can't create object.Dù mình đã chọn trong tools\reference\micrsoft ActiveX Data Objects 2.8 Library.
Thanks
 
Upvote 0
hix, bác ơi giúp em với, không biết em làm gì sau khi ghost lại máy thì vào file progressAnhTimer của bác khi click vào đọc số thì nó cứ hiện bảng ActiveX component can't create object.Dù mình đã chọn trong tools\reference\micrsoft ActiveX Data Objects 2.8 Library.
Thanks

Bạn phải chạy file "Install.bat" lần đầu tiên để đăng ký các đối tượng cho WINDOWS.
 
Upvote 0
Thanks bác. Àh, cho phép mình hỏi liệu bác có ý định triển khai tạo menu bằng tiếng việt trên form tích hợp vào controlForOffice không ạh? Nếu có thì sẽ tuyệt vời hơn.
 
Upvote 0
Thanks bác. Àh, cho phép mình hỏi liệu bác có ý định triển khai tạo menu bằng tiếng việt trên form tích hợp vào controlForOffice không ạh? Nếu có thì sẽ tuyệt vời hơn.

Vụ menu trên Userform này mình thấy cũng khó và phải mất nhiều thời gian, cuối năm nếu tôi thu xếp được thời gian thì có thể sẽ bắt tay vào làm.
 
Lần chỉnh sửa cuối:
Upvote 0
Tuân ơi, hình như dạo này các ứng dụng trên bộ Office của anh nó lại có vấn đề về gõ tiếng Việt.

Em thử vào chức năng Find & Replace (Ctrl + H) và gõ chữ Hương xem nó có thành "Hưươơng" không nhé (hầu hết bị ở các Dialog box và hình như 1 số nơi khác anh quên mất rồi).

Anh nghi vụ này liên quan tới A-Excel hay OfficeControl gì đó của em lắm.
 
Upvote 0
Tuân ơi, hình như dạo này các ứng dụng trên bộ Office của anh nó lại có vấn đề về gõ tiếng Việt.

Em thử vào chức năng Find & Replace (Ctrl + H) và gõ chữ Hương xem nó có thành "Hưươơng" không nhé (hầu hết bị ở các Dialog box và hình như 1 số nơi khác anh quên mất rồi).

Anh nghi vụ này liên quan tới A-Excel hay OfficeControl gì đó của em lắm.

Em đã kiểm tra lại và thấy đúng bị vậy với Excel: Dialog có EditBox ; UserForm.TextBox (FM20.DLL). Tất cả lỗi này chỉ xảy ra với PM bộ gõ UniKey +-+-+-+, với VietKey thì không sao. Rất có thể UniKey sử dụng

Mã:
SetWindowsHookExW(WH_GETMESSAGE, GetMessageProc, 0, GetCurrentThreadID);
Những lệnh xử lý trong hàm GetMessageProc có lẽ không được toàn vẹn?

Em đã sửa được các lỗi trên rồi. Em đang đóng gói lại A-Excel, A-Tools vì chúng đều dùng ControlForOffice. Trong ngày hôm nay em sẽ gửi phiên bản mới.
 
Upvote 0
ControlForOffice v2.0.4 - Ngày 25/07/08

Xin gửi tới các bạn phiên bản mới

ControlForOffice
v2.0.4, ngày 25/07/08

Thêm mới và sửa đổi trong phiên bản mới:
+ Sửa : Cho phép chạy Task Pane với sự kiện OnVisible với Excel XP, 2003 (phiên bản 2007 chạy đủ hết).

+ Sửa : lỗi không tương thích với phần mềm bộ gõ Unikey khi gõ chuỗi Unicode có dấu trong Excel: Dialog có EditBox; MSForms.TextBox; MSForms.ComboBox; ...các control trong thư viện FM20.DLL.
 
Upvote 0
ủa, sao post bài mà hình như bác TUANVNUNI quên attach file thì phải.Xem lại nhé bác
Thanks
 
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!!!
 
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
Tôi cũng vậy, không dowload được, mong xem lại ! Cám ơn !
 
Upvote 0
Tôi cũng vậy, không dowload được, mong xem lại ! Cám ơn !

Xin lỗi các bạn, thời gian vừa rồi Bluesofts đã thay đổi cấu trúc website nên đã lệch địa chỉ download một số file trên host. Các bạn có thể download lại theo đường dẫn cũ.
 
Upvote 0
xin hỏi các anh chị download bản mới nhất ở địa chỉ nào vậy? híc híc.
 
Upvote 0
Anh Tuân cho em hỏi trong bộ công cụ của anh có hổ trợ Task Panel không anh? Phải sử dụng thế nào hả anh?
 
Upvote 0
Upvote 0
Cách tạo Task Pane trong Excel VBA với ControlForOffice

Nếu các bạn chỉ quan tâm về tạo TaskPane trong Excel thì download ControlForOffice miễn phí ở trang đầu. Đọc file "Readme" và làm theo hướng dẫn các bạn sẽ tạo được Task Pane trong Excel VBA thật đơn giản.

Mã nguồn để tạo Task Pane với ControlForOffice đơn giản như sau:

[GPECODE=vb]
Option Explicit
Dim TPs As BSTaskPanes
Dim TP As BSTaskPane

Private Sub UserForm_Initialize()
If TPs Is Nothing Then
Set TPs = New BSTaskPanes
End If
Set TP = TPs.Add("Ten TaskPane", Me)
TP.Visible = True
End Sub

Private Sub UserForm_Terminate()
If Not TPs Is Nothing Then
TP.Delete
Set TP = Nothing
Set TPs = Nothing
End If
End Sub
[/GPECODE]
 
Upvote 0
Em đánh giá cao bộ công cụ lập trình BSAC - Bluesofts ActiveX Controls. Đặc biệt là cái Task Panel. Mỗi lần chạy chương trình là máy lại đòi LICENCE với Machine Code là 4332-2E5D-5BD8-34A9. Trên bluesofts.net khi thì để trong phần Software/Phần mềm miễn phí khi thì để trong Giải pháp phần mềm (nằm ngoài mục Phần mềm miễn). Vậy nếu muốn đăng ký thì phải đăng ký như thế nào?

(Các máy tính chưa đăng ký license, BSAC sẽ xuất hiện thông bảng thông báo "About" lúc khởi động chương trình. Tất cả các chức năng của các controls vẫn chạy bình thường.)

Cái này nếu với người phát triển phần mềm thì khi cài sang máy tính của người khác liệu máy đó có dòi đăng ký license nữa không?
 
Upvote 0
Em đánh giá cao bộ công cụ lập trình BSAC - Bluesofts ActiveX Controls. Đặc biệt là cái Task Panel. Mỗi lần chạy chương trình là máy lại đòi LICENCE với Machine Code là 4332-2E5D-5BD8-34A9. Trên bluesofts.net khi thì để trong phần Software/Phần mềm miễn phí khi thì để trong Giải pháp phần mềm (nằm ngoài mục Phần mềm miễn). Vậy nếu muốn đăng ký thì phải đăng ký như thế nào?

Cái này nếu với người phát triển phần mềm thì khi cài sang máy tính của người khác liệu máy đó có dòi đăng ký license nữa không?

BSAC - Bluesofts ActiveX Controls là bộ Active Controls đầy đủ của BLUESOFTS để lập trình giao diện. 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é.
 
Upvote 0
BSAC - Bluesofts ActiveX Controls là bộ Active Controls đầy đủ của BLUESOFTS để lập trình giao diện. 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é.

Em cám ơn anh Tuân rất nhiều! Cái em đang thích nhất, tâm đắc nhất mà được anh miễn phí hoàn toàn, sướng không còn gì bằng. Tạm thời em đang trong quá trình xây dựng và thu thập thông tin cho dự án của em. Em không phải dân IT, là dân Xây dựng và chỉ biết có VB6 thôi nên chắc chắn khi triển khai sẽ cần bộ công cụ này. Em sẽ đăng ký bản quyền khi dự án của em thành công và cần phân phối cho nhiều người dùng. Còn trước mắt, em viết cho công việc của mình và cho mình em xài thôi nên tạm thời cứ để vậy cũng được.

Một lần nữa, em cám ơn anh rất nhiều!

Chúc anh có nhiều sức khỏe!
 
Lần chỉnh sửa cuối:
Upvote 0
BSAC - Bluesofts ActiveX Controls là bộ Active Controls đầy đủ của BLUESOFTS để lập trình giao diện. 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é.

Anh Tuân ơi! Em đã download ControlForOffice theo link ở cuối bài #1 về dùng. Khi mở file ví dụ BSTaskPane.xls của anh lên dùng, nếu mình đóng cái TaskPanel bằng cách chọn button Close thì ta có thể mở TaskPanel trở lại bằng cách chọn Showform. Nhưng nếu ta đóng TaskPanel bằng cách chọn dấu x góc trên bên phải TaskPanel hoặc chọn Close ở menu Move/Size/Close thì không thể mở TaskPanel trở lại được? Có cách nào khắc phục vấn đề này không hả anh?
 
Upvote 0
Anh Tuân ơi! Em đã download ControlForOffice theo link ở cuối bài #1 về dùng. Khi mở file ví dụ BSTaskPane.xls của anh lên dùng, nếu mình đóng cái TaskPanel bằng cách chọn button Close thì ta có thể mở TaskPanel trở lại bằng cách chọn Showform. Nhưng nếu ta đóng TaskPanel bằng cách chọn dấu x góc trên bên phải TaskPanel hoặc chọn Close ở menu Move/Size/Close thì không thể mở TaskPanel trở lại được? Có cách nào khắc phục vấn đề này không hả anh?

Giữ điều khiển Taskpane bởi biến TP. Để mở lại bạn gọi lệnh TP.Visible = True
 
Upvote 0
Cám ơn anh rất nhiều! Em đã dùng giải pháp Unload frmTaskPanel rồi sau đó load lại từ đầu. Cách này của anh "Chính chủ" nên hay và tiện lợi quá. Em đang áp dụng cái TaskPanel này cho chương trình của em. Các đồng nghiệp đang khen quá trời khi sử dụng TaskPanel này cho một số điều khiển và hiển thị thông tin. Chừng nào chương trình chạy tương đối 1 chút em sẽ share lên diễn đàn ngay. Khi đó anh coi giúp em về cái chương trình và việc ứng dụng cái Active Control của anh trong chương trình của em nhé!

Chúc anh cùng cả nhà GPE cuối tuần vui vẽ, hạnh phúc!
 
Upvote 0
Để điều khiển taskpane từ ngoài form, bạn nên khai báo biến public trong một module như la
Public TPs As BSTaskpanes 'quản lý danh sách các taskpane
Public TP As BSTaskpane 'quản lý một taskpane cụ the nào đó khi tạo bởi lệnh
Set TP = TPs.Add()

Sau này muốn xử lý Taskpane bằng cách sử dụng các thuộc tính của TP.
Việc unload là phá huỷ taskpane và sau đó phải tạo lại sẽ ảnh hưởng tới tốc độ ứng dụng của bạn và mấ trạng thái đang làm việc trên form.
 
Upvote 0
Cám ơn anh vì đã chia sẽ và hướng dẫn tận tình. Giải pháp trên của em chỉ là giảp pháp tình thế. Em đã chỉnh lại Code theo hướng dẫn của anh rồi.
 
Upvote 0
Xin anh em cho hỏi chút, mình tải về làm như hướng dẫn nhưng bị báo Run-time error '429' - ActiveX component can't create object, mình thử ở 2 máy tính (win 7, Office 2010) đều bị vậy, chắc là do mình đặt chế độ hoặc là vì gì đấy mình chưa hiểu mà không sử dụng được.

Mong các bác hướng dẫn...
 
Upvote 0
Xin anh em cho hỏi chút, mình tải về làm như hướng dẫn nhưng bị báo Run-time error '429' - ActiveX component can't create object, mình thử ở 2 máy tính (win 7, Office 2010) đều bị vậy, chắc là do mình đặt chế độ hoặc là vì gì đấy mình chưa hiểu mà không sử dụng được.

Mong các bác hướng dẫn...


Vấn đề ở đây không phải là đặt chế độ, Mình đã cài lại Office 2007 >> chạy được. Nhưng một số máy thì vẫn không chạy được và vẫn báo lỗi ActiveX component can't create object Debug >> lỗi ở UserForm1.Show False.

Chắc trong File DLL có hàm gì đấy không phù hợp với Win7 hoặc Office 2010 hoặc cả 2....

Em rất kết cái TaskPane nhưng chưa có cách nào để làm hoàn chỉnh...
 
Upvote 0
Vấn đề ở đây không phải là đặt chế độ, Mình đã cài lại Office 2007 >> chạy được. Nhưng một số máy thì vẫn không chạy được và vẫn báo lỗi ActiveX component can't create object Debug >> lỗi ở UserForm1.Show False.

Chắc trong File DLL có hàm gì đấy không phù hợp với Win7 hoặc Office 2010 hoặc cả 2....

Em rất kết cái TaskPane nhưng chưa có cách nào để làm hoàn chỉnh...

Bạn kiểm tra như sau:
1. Phải là Office 32-bit
2. Tập tin ControlForOffice.ocx phải nằm trong thư mục System32
3. Đảm bào ControlForOffice.ocx đã được đăng ký bởi Regsvr32
 
Upvote 0
Bạn kiểm tra như sau:
1. Phải là Office 32-bit
2. Tập tin ControlForOffice.ocx phải nằm trong thư mục System32
3. Đảm bào ControlForOffice.ocx đã được đăng ký bởi Regsvr32

Cảm ơn anh Tuân đã trả lời em sớm:
Em đang dùng:
- Win7 32bit
- Office 2010 (2007 cài lại) 32bit
- Copy file ControlForOffice.ocx vào Folder Windows\System32\
- Chạy file Install để đăng ký bởi Regsvr32

Kết quả vẫn vậy. Em thật sự không hiểu! trên xách tay khi cài lại Office2007 thì chạy được, trên Máy bàn Win7 và Office 2010 không chạy được, cài lại Office2007 cũng không chạy được.

Máy tính của em cài ổ D:\ là ổ chứa win Không biết có đúng lỗi nằm ở đây không nữa. Có bác nào dùng
ControlForOffice trên Office2010 rồi xin hướng dẫn em chút.


Cảm ơn anh Tuân và cảm ơn mọi người.
 
Upvote 0

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

Back
Top Bottom