[Add-Ins] User Form VBA As TaskPane - For Ms Office : Excel - Word - Access - PowerPoint - Outlook

Liên hệ QC

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,421
Được thích
4,033
Giới tính
Nam
1/ Khai Hoang và mở đường chủ đề sau ( Chi tiết và quá trình thực hiện ... )

2/ Ứng dụng đã hoàn thiện và trưng bày

3/ Trưng bày và giới thiệu chủ đề này

*** Hổ trợ Nhúng User Form VBA vào TaskPane bao gồm Ms Office : Excel - Word - Access - PowerPoint - Outlook
*** Hổ trợ kéo thả và di chuyển User Form trong giao diện Excel

4/ Giao diện TaskPane phẳng như sau

1674047172478.png


5/ Giao diện kéo lên trên nền Excel
1674091032811.png

7/ User Form VBA chính là nơi Bạn thể hiện Tài Năng Or Khả Năng của chính Bạn ...
Còn TaskPane chỉ là Tools hổ trợ Bạn thể hiện tài năng của chính Mình

8/ Code đơn giản hóa như sau ... chỉ cần Viết 1 Hàm phụ xong truyền các tham số vào sử dụng cho nhiều Form khác
Vì Tôi làm biếng Viết nên làm vậy ... còn ai không thích thì tùy chỉnh viết thật nhiều Sub vào cho màu mè :p


Mã:
Rem ==========
Rem References VBAProject ....VBTaskPane.ocx
Dim CTP As New VBTaskPane.cTaskPane
Dim CP As Object
Dim ufmExample As UserForm3
Rem ==========
Public Sub ShowHideTaskPane(ByVal UserForm As Object, ByVal ShowHide As Boolean)
    On Error Resume Next
    Rem Xu ly loi khi chua Show ma Hide truoc Or bam linh tinh
    Rem ==========
    If Not UserForm Is Nothing Then
        If ShowHide Then
            UserForm.Show vbModeless
            Set CP = CTP.Add("My Caption User Form VBA")                ''Add Caption
            Rem ========== Tuy chinh TaskPane
            CP.DockPosition = msoBarLeft                                ''ben trai
            Rem CP.DockPosition = msoBarRight                           ''ben phai
            Rem CP.DockPosition = msoCTPDockPositionRight               ''Taskpane ben phai
            Rem CP.DockPosition = msoCTPDockPositionLeft                ''Taskpane ben Trai
            Rem ==========
            Rem CP.Height = 1000        ''thay doi tham so cuoi 1000 = ??
            CP.Width = 250              ''thay doi tham so cuoi 250  = ??
            Rem ==========
            CP.DockPositionRestrict = msoCTPDockPositionRestrictNoChange    ''Khong cho di chuyen thay doi keo Tha
            Rem ==========
            CP.Visible = True
        Else
            CP.Visible = False
        End If
     End If
End Sub
Rem ==========
Sub ShowHideTaskPane_Show()
    Set ufmExample = New UserForm3
    Call ShowHideTaskPane(ufmExample, True)
End Sub
Rem ==========
Sub ShowHideTaskPane_Hide()
    Set ufmExample = New UserForm3
    Call ShowHideTaskPane(ufmExample, False)
End Sub
Rem ==========

9/ Dự án chuẩn đã chuyển vào kho lưu trữ trên github.com để chia sẽ cho Cộng đồng quốc tế ai thích thì dùng
Link sau

File Úp phía dưới và trên kho lưu trữ github.com là như nhau ai thích tải cái nào cũng thế
************************************************************************

Là Bản Demos cho Free và không giới hạn sử dụng

Như thường lệ là đọc kỹ hướng dẫn sử dụng trước khi dùng

1/ Bạn phải có quyền Admin trên PC đó

2/ Tùy theo ai đó sử dụng Office 32 bit thì dùng file VBTaskPane32.ocx còn 64 thì dùng File VBTaskPane64.ocx

3/ dê chuột vào file *.ocx xong kéo File *.ocx thả vào file *.VBS xong chọn Yes

4/ Nếu sau khi đăng ký mà thay đổi Folder lưu file *.ocx thì thực hiện lại

5/ Hổ trợ Sử dụng cho Ms Office : Excel - Word - Access - PowerPoint - Outlook
 

File đính kèm

  • VBTaskPane.rar
    1.3 MB · Đọc: 79
Lần chỉnh sửa cuối:
Các tham số tùy chỉnh TaskPane có cái dùng cho Excel thì chạy tốt qua Access thì báo lỗi ... Vì vậy đề nghị ai đó sử dụng tìm tài liệu xem tham số cho nó chi tiết như thế nào thay vào thôi

VD code sau tôi thử vài tham số sử dụng tốt

Mã:
Public Sub ShowHideTaskPane(ByVal UserForm As Object, ByVal ShowHide As Boolean)
    On Error Resume Next
    Rem Xu ly loi khi chua Show ma Hide truoc Or bam linh tinh
    Rem ==========
    If Not UserForm Is Nothing Then
        If ShowHide Then
            UserForm.Show vbModeless
            Set CP = CTP.Add("My Caption User Form VBA")                ''Add Caption
            Rem ========== Tuy chinh TaskPane
            CP.DockPosition = msoBarLeft                                ''ben trai
            Rem CP.DockPosition = msoBarRight                           ''ben phai
            Rem CP.DockPosition = msoCTPDockPositionRight               ''Taskpane ben phai
            Rem CP.DockPosition = msoCTPDockPositionLeft                ''Taskpane ben Trai
            Rem ==========
            Rem CP.Height = 1000        ''thay doi tham so cuoi 1000 = ??
            CP.Width = 250              ''thay doi tham so cuoi 250  = ??
            Rem ==========
            CP.DockPositionRestrict = msoCTPDockPositionRestrictNoChange    ''Khong cho di chuyen thay doi keo Tha
            Rem ==========
            CP.Visible = True
        Else
            CP.Visible = False
        End If
     End If
End Sub


Mới úp lại File bài số 1 Fix lại chút Resize TaskPane

Nếu ai đó thiết kế Form VBA thì viết thêm code Resize Control trên Form theo TaskPane vào nữa

Cơ bản tạm ổn ... qua tết Rảnh tôi xem xét viết thêm cái hàm tùy chọn nhúng Zalo +++ ... là hết trò chơi ta lại chuyển trò khác chơi vậy :D:p

Thay vì chơi Game = Vô tích sự ==> Thì ta chơi Code thôi xong cho Free làm từ thiện cho các học trò nghèo khó khăn chi phí mua dùng và cho Cộng đồng yêu thích nó
 
Lần chỉnh sửa cuối:
Năm cũ sắp qua ... và năm mới đang trở lại

Tôi mượn cái Lịch của HTN một chút vì Tôi thích các gam màu trên đó trẻ trung và năng động như một cành đào ngũ sắc đang chào đón mùa Xuân

để trưng bày tô thắm thêm cái vẽ đẹp và tiện ích vốn có trong không khí mùa xuân đang trở lại ...


1674191091480.png

Mùa xuân đang trở lại .... Chúc Năm Mới Hạnh phúc đến với mọi nhà
 

File đính kèm

  • CALENDAR.rar
    376.1 KB · Đọc: 39
Lần chỉnh sửa cuối:
Chủ đề này chỉ hổ trợ những phát sinh có liên quan ... Ngoài phạm vi đó ai có mong muốn gì vui lòng lặp thớt mới hỏi
Nếu Tôi biết sẽ trợ giúp trong chừng mực có thể ...

Ứng dụng đã hoàn thiện và trưng bày 3

 
How to write VBE with Delphi
1/ Cơ bản thì nó là như thế khi bạn viết trên bất cứ ngôn ngữ lập trình nào sử dụng các thư viện của Ms thì nó là như nhau chỉ khác nhau cách khai báo và sử dụng nó

2/ để viết được TaskPane thì VB6 cũng viết tốt có điều nó đã bị bỏ từ lâu còn Tôi vẫn sử dụng nó vì nhiều lý do

3/ Từ những cái cơ bản đó bạn hãy thử viết nó trên Delphi xem tình hình sao !?

4/ Ngày hôm qua Tôi mới thử hỏi ChatGPT xem sao thì hình như nó toàn gợi ý viết trên Delphi7 và nhiều thứ lộn xộn và không sử dụng được

điều đó chứng minh 1 điều tới thời điểm hiện tại nó chưa biết

5/ Tài liệu TaskPane tràn ngập Google và chỉ dẫn của Ms ... Bạn hãy thử sức mình xem sao

6/ để viết được TaskPane trên Delphi .... Tìm tài liệu Google sẽ không có và những người tự viết được nó rất ít

7/ Hầu hết là sử dụng AddIns Add-in Express™ để viết TaskPane

Hãy nỗ lực và cố giắng ... Những điều tốt đẹp sẽ đến với Bạn

Chúc may mắn
 
Lần chỉnh sửa cuối:
I succeeded
delphi office vbe toolwindow
Thế lâu nay Bạn viết hoàn thiện chưa ... Úp file lên đây Tôi dùng thử xem sao

Khả năng test code và dùng thử của Tôi rất tốt đấy nếu phát sinh lỗi gì Tôi báo lại cho mà điều chỉnh lại code

Nếu chưa Viết xong thì nhờ ChatGPT hổ trợ xem tình hình sao.. lâu lâu tôi vẫn hỏi nó liên quan tới Cái Taskpane trên Delphi

nhưng tới giờ nó vẫn chưa biết viết nếu khi nào nó biết viết thì tôi sẽ cho Free mã nguồn code của Tôi úp lên đây xem như 1 cách tham khảo thêm vậy

Nguyên lý của nó theo chuẩn chung của Ms đặt ra chỉ khác nhau Tools lập trình và cách khai báo trên Tools đó như thế nào thôi

hãy cố giắng bằng chính khả năng của Mình thử xem sao ... khoãng 10 dòng code trên Delphi thôi

Chúc May Mắn
 
Chào bạn! Chẳng hiểu sao mình dùng office 2021 khi resize taskpanel thì bì giật màn hình nháy ghê gớm, thử vào sự kiện userform resize đặt sự kiện screenupdate về false cũng vẫn vậy?
 
Chào bạn! Chẳng hiểu sao mình dùng office 2021 khi resize taskpanel thì bì giật màn hình nháy ghê gớm, thử vào sự kiện userform resize đặt sự kiện screenupdate về false cũng vẫn vậy?
Tôi mới thử tải lại file bài số 1 thử Windows10_x64 và Offfice2021_x64 Chạy bình thường ?!

Khi bạn sử dụng các Control khác trên Form thì tự định nghĩa nó co và giãn theo Form ... khúc này do người dùng tự xử Tôi không tham gia

1698583187854.png

1698583366851.png

1/ Ai muốn kéo thả 4 góc màn hình thì loại bỏ dòng sau

Mã:
Rem CP.DockPositionRestrict = msoCTPDockPositionRestrictNoChange    ''Khong cho di chuyen thay doi keo Tha

2/ Các tham số tùy chỉnh theo tiêu chuẩn của Ms tìm tài liệu của Ms mà sử dụng

3/ Tôi chỉ nhúng cái Form VBA vào Taskpane và xuất các sự kiện tùy chỉnh do người dùng tùy biến theo tiêu chuẩn của Ms còn không can thiệp bất cứ cái gì khác
 
Lần chỉnh sửa cuối:
Mình vẫn thấy vây mà, không thấy gì thay đổi
 
Mình vẫn thấy vây mà, không thấy gì thay đổi
chỉ là khi kéo ra nó co và giãn cái User Form VBA theo cái Control của Taskpane chút thôi có gì đâu mà ghê với chả gớm

đừng kéo ra kéo vào nữa xem nó có giật hay không ... hãy truyền các tham số cố định cho nó và chỉ kéo ra khi cần thiết thì nó cũng chỉ chớp tí lúc kéo thôi ... không quan trọng lắm và tôi cũng không cần thiết cải tiến viết lại nữa
 
Lần chỉnh sửa cuối:
Tôi mới xem lại cải tiến hàm một chút nhưng tôi cũng không úp lại file lên đây vì xét thấy không có gì bứt phá cả mà chỉ là thủ thuật nhỏ khi nhúng Uer Form VBA vào Taskpane thôi

Cách cũ sử dụng
Mã:
UserForm.Show 0 ''//[vbModeless = 0 ]
Khi sử dụng cách trên thì khi chạy mã thấy màn hình chớp 1 cái thì cái Taskpane nó Show ra

Cách mới
Loại bỏ dòng trên thì khi sử dụng chỉ còn như sau:

Mã:
 Set CT = CTP.AddUserFormToTaskPane(UserForm, "My Caption User Form VBA 2023")


với cách trên khi chạy mã sẻ không thấy màn hình chớp 1 cái xong Show Taskpane lên
nói chung không có gì bứt phá cả mà chỉ là thủ thuật nhỏ che dấu cái chớp đi thôi nên cũng ko cần thiết úp lại file ''''''''''''''''''
 
Web KT
Back
Top Bottom