Add-Ins Tạo Menu RibbonTiếng Việt Có Dấu Cho Office

Liên hệ QC
Ý bạn là muốn xài tab và button ko thôi chứ gì ....

Nếu vậy mình thiết kế riêng cho 1 cái ....hay tải file ver2 bài 1 hay 69 mà xài....chỉ gõ vào [B2:B100] là xong

Còn file đó là của huuthang mình chỉ mượn quậy một tẹo thôi .....--=0
file đó em quậy nhiều tẹo rồi bác Mạnh à. bác cho em hỏi thêm thế này
Mã:
Option Explicit
Public MYRIBBON As IRibbonUI
[B]Sub onLoad(RIBBON As IRibbonUI)[/B]
[B]   Set MYRIBBON = RIBBON[/B]
[B]End Sub

[/B]
[B]Sub getVisible(control As IRibbonControl, ByRef VISIBLE)[/B]
[B]   VISIBLE = True[/B]
[B]End Sub

[/B]
[B]Sub getEnabled(control As IRibbonControl, ByRef ENABLED)[/B]
[B]    ENABLED = True[/B]
[B]End Sub

[/B]
[B]Public Sub onChange(control As IRibbonControl, Text As String)[/B]
[B]   MsgBox control.ID & ": " & Text[/B]
[B]End Sub[/B]
cái đống màu đen đó dùng thế nào bác. và truyền tham số lúc tạo ribbon thế nào?
sẵn cho em hỏi. như file của hữu thắng thì kh tạo xong, lúc mở file nó cứ đòi chạy code onLoad thì code đó thế nào mới chạy được bác.
 
file đó em quậy nhiều tẹo rồi bác Mạnh à. bác cho em hỏi thêm thế này
Mã:
Option Explicit
Public MYRIBBON As IRibbonUI
[B]Sub onLoad(RIBBON As IRibbonUI)[/B]
[B]   Set MYRIBBON = RIBBON[/B]
[B]End Sub

[/B]
[B]Sub getVisible(control As IRibbonControl, ByRef VISIBLE)[/B]
[B]   VISIBLE = True[/B]
[B]End Sub

[/B]
[B]Sub getEnabled(control As IRibbonControl, ByRef ENABLED)[/B]
[B]    ENABLED = True[/B]
[B]End Sub

[/B]
[COLOR=#ff0000][B]Public Sub onChange(control As IRibbonControl, Text As String)[/B]
[B]   MsgBox control.ID & ": " & Text[/B]
[B]End Sub[/B][/COLOR]
cái đống màu đen đó dùng thế nào bác. và truyền tham số lúc tạo ribbon thế nào?
sẵn cho em hỏi. như file của hữu thắng thì kh tạo xong, lúc mở file nó cứ đòi chạy code onLoad thì code đó thế nào mới chạy được bác.

Thì bạn chỉ quan tâm tới mấy dòng màu đỏ...bấm vào từng nút trên Ribbon xem nó báo cái ID là cái Gì để biết xong Sửa lại code như sau để keo sub nó chạy
Mã:
Sub onAction(control As IRibbonControl)
    Select Case control.ID
    Case "[SIZE=4][COLOR=#ff0000][B]WL68[/B][/COLOR][/SIZE]": [COLOR=#0000ff][SIZE=4][B]MsgBox[/B][/SIZE][/COLOR] "68"
    Case "WL69": MsgBox "69"
    Case "WL70": MsgBox "70"
    Case "WL71": MsgBox "71"
    Case "WL72": MsgBox "72"
    Case "WL73": MsgBox "73"
    Case "WL74": MsgBox "74"
    Case "WL75": MsgBox "75"
    Case "WL76": MsgBox "76"
    Case "WL77": MsgBox "77"
    Case "WL78": MsgBox "78"
    Case "WL79": MsgBox "79"
    Case "WL80": MsgBox "80"
    Case "WL81": MsgBox "81"
    Case Else: MsgBox "Thu nghiem Khac"
    End Select
End Sub
Chữ To màu đỏ là ID của nút đó ...Chữ To màu sanh là là tên Sub của Bạn
Thiết kế vậy cho nó Bao quát và dễ sử dung đó mà thay vì phải làm mỗi ID
một Sub onAction(control As IRibbonControl) ...nó dài dòng rắc rối thì làm vậy cho gọn đó mà

Trừ trường hợp khác theo ý đồ của người thiết kế ...Nếu hỏi tiếp dòng này nữa thì Mình xin cứu Nha...
**~** ...để cho Bạn từ từ Ngâm cứu nó tìm ra nó mới nhớ lâu...Cơ bản là vậy còn tùy biến thì ở khả năng của Bạn ....
 
Lần chỉnh sửa cuối:
Sao đã mấy hôm rồi mà chưa thấy cái mới của Kieumanh và Thaipv vậy? chẳng lẽ đã bỏ mất chủ đề này rồi sao? chưa xong sao lại bỏ chứ? Khi nào hoàn thiện thì bỏ (Trích Thaipv).
 
Sao đã mấy hôm rồi mà chưa thấy cái mới của Kieumanh và Thaipv vậy? chẳng lẽ đã bỏ mất chủ đề này rồi sao? chưa xong sao lại bỏ chứ? Khi nào hoàn thiện thì bỏ (Trích Thaipv).
Mạnh viết đơn giản thì OK đó ....còn phức tạp thì u cả đầu mà nó cứ lỗi ....chờ thaipv xem sao
chuỗi XML thật sự mình chưa hiểu hết luôn đó ....có biết đơn giản thôi...

Mấy hôm này Viết cái Add-Ins Clear styles hôm úp ở thớt bên kia ....
Nhưng mới xử được có 3 Loại File *.xlsx , *.xlsm, *.xlam

Hôm nay mới bổ sung thêm 2 loại File nữa là 5 Loại File Excel: *.xls; *.xlsx;*.xlsm;*.xlsb;*.xlam

Trong khi chờ thaipv Bạn thử cái này xem sao....

 

File đính kèm

  • ClearStyles Office Excel.rar
    613.2 KB · Đọc: 92
Sao đã mấy hôm rồi mà chưa thấy cái mới của Kieumanh và Thaipv vậy? chẳng lẽ đã bỏ mất chủ đề này rồi sao? chưa xong sao lại bỏ chứ? Khi nào hoàn thiện thì bỏ (Trích Thaipv).
Em làm được 8/14 loại control rồi các bác (up ở bài #81 ý). Còn 6 cái kia thì không làm được với các thiết kế file của mình, phải nghiên cứu theo hướng của bác @HuuThang_BD thôi (vì những control này có các item con, nên phải có dấu hiệu nhận biết kết thúc item cha).

Hiện em đang bận quá, chưa nghiên cứu được, các bác thông cảm nhé, hy vọng tuần sau có thể hoàn thiện.
 
Bác thaipv cho mình hỏi code viết thế nào để có được thư mục image chứ icon trong file excel thế bác.
 
Lần chỉnh sửa cuối:
Bác thaipv cho mình hỏi code viết thế nào để có được thư mục image chứ icon trong file excel thế bác.
Muốn dùng cái gì thì 'ĐĂNG KÝ' cái đó nhé bạn.
Các bước thực hiện như sau :

1. Mở file RibbonUI.xml rồi tìm đến control muốn thay bằng hình tự tạo, đổi chuỗi imageMso="TênHìnhMso" thành image="TênHìnhTựTạo"
2. Thêm 1 thư mục chứa hình tự tạo vào cùng thư mục với file RibbonUI.xml, sau đó chép hình tự tạo vào thư mục này.
3. 'Đăng ký' : Tạo thư mục _rels (trong cùng thư mục với file RibbonUI.xml) rồi tạo file RibbonUI.xml.rels (đây là sổ đăng ký nhé bạn). Bạn trỏ địa chỉ của file hình tự tạo ở bước 2 vào đây (sao cho trùng tên ở bước 1)

Xin xem file RibbonCreator.xlsm ở bài #81 nha bạn.
 
Lần chỉnh sửa cuối:
làm sao mà mấy hôm nay thấy vắng vẻ quá ...--=0
 
Lần chỉnh sửa cuối:
Những kẻ thế là những kẻ như thế nào vậy bạn? Bạn tham gia diễn đàn cũng mấy năm rồi, hay tự hỏi bạn đã đóng góp gì cho diễn đàn.
Không đóng góp thì ít ra cũng thể hiện sự tôn trọng đối với những người chia sẻ. Không biết bạn đã đọc bao nhiêu bài hữu ích mà chỉ cảm ơn có 1 lần???
Bạn có quyền lựa chọn giữa dùng và không dùng, người chia sẻ có quyền chọn cách họ chia sẻ.

Quyền lựa chọn là đúng rui, chia sẻ cũng là quyền, cất ở nhà sân chơi cũng là quyền, người dùng cũng có quyền quên chúng đi. Còn việc tham gia đóng góp chỉ là tương đối có kiến thức 95 mà chỉ chia sẻ 10 còn giấu đi thì sao bằng người có kiến thức 5 thì chia cả 5
 
Quyền lựa chọn là đúng rui, chia sẻ cũng là quyền, cất ở nhà sân chơi cũng là quyền, người dùng cũng có quyền quên chúng đi. Còn việc tham gia đóng góp chỉ là tương đối có kiến thức 95 mà chỉ chia sẻ 10 còn giấu đi thì sao bằng người có kiến thức 5 thì chia cả 5
Nếu đã là quyền của người khác thì họ muốn làm gì làm, đừng ý kiến.
Bạn đã gửi thư cho Microsoft yêu cầu họ cho sử dụng miễn phí hoặc hơn nữa là Open Source chưa???
 
}}}}}
Em up ở bài #81 đó bác. Các bác tải file về test đi.
Bạn cho Mình hỏi ngoài lề một chút
Hôm mình có tạo link tải File Trực tiếp từ Google Drive lâu nay Mình test tải File rất OK sao mấy ngày nay không sử dụng được nữa hay Anh Google phát hiên Mình lợi dụng Google Drive làm Server nên khóa lại
Cấu trúc Link Trực tiếp như sau:

''http://googledrive.com/host/Ten Folder Share Full/Ten Files + Duoi File

Còn File ở bài 81 Bạn tạo Link trực trực bằng cách nào vậy có thể Hướng dẫn mình một chút xem sao ...
Xin cảm ơn
 
Bạn cho Mình hỏi ngoài lề một chút
Hôm mình có tạo link tải File Trực tiếp từ Google Drive lâu nay Mình test tải File rất OK sao mấy ngày nay không sử dụng được nữa hay Anh Google phát hiên Mình lợi dụng Google Drive làm Server nên khóa lại
Cấu trúc Link Trực tiếp như sau:

''http://googledrive.com/host/Ten Folder Share Full/Ten Files + Duoi File

Còn File ở bài 81 Bạn tạo Link trực trực bằng cách nào vậy có thể Hướng dẫn mình một chút xem sao ...
Xin cảm ơn

Bước 1/2 : Share tập tin đã tải lên trên Google Drive (và lấy ID của tập tin này)
Bước 2/2 : Lấy ID của tập tin đã lấy được ở bước 1 gắn vào https://docs.google.com/uc?export=download&id=
 
Vậy cấu trúc Link trực tiếp hoàn chỉnh cụ thể sao mong Bạn chỉ dùm
tại sao lâu nay mình Vẫn xài cấu trúc Link Bài #134 OK sao nay lại Tịt là sao ...--=0+-+-+-+

Ồ, trước nay mình làm việc với file thôi à, chưa thử với folder.
Cấu trúc link trực tiếp với file là https://docs.google.com/uc?export=download&id=

Đối với việc phân quyền các bạn chỉnh sửa trong Google Drive. Mình ghi luôn ra đây cho những bạn chưa biết:
Bước 1/5 : Tải tập tin lên Google Drive và click chuột phải vào tập tin đó
Bước 2/5 : Chọn 'Nhận liên kết có thể chia sẻ được' và click tiếp vào 'Cài đặt chia sẻ' (trong cửa số vừa hiện ra)
Bước 3/5 : Click vào mục phân quyền (Mặc định là 'Bất kỳ ai có liên kết đều có thể xem') và chọn 'TẮT - chỉ những người nhất định mới có quyền ...'
Bước 4/5 : Nhập địa chỉ email của những người bạn muốn chia sẻ vào box bên dưới và phân quyền (Có thể sửa / Có thể nhận xét / Có thể xem) cho họ
Bước 5/5 : Cuối cùng, click 'Gửi' (nếu bạn cài đặt nâng cao hơn nữa có thể click 'Nâng cao' trước khi ấn nút này)

Thử nghiệm : Các bạn tải lại File 16 bài #81 sẽ yêu cầu quyền truy cập (bạn nào muốn thử nghiệm có thể email của bạn cho mình qua tin nhắn riêng)
 
To thaipv

Quay lại với bài này Mình mới thử File 17 thấy khó xài quá ...
1/ Nếu như ai đó chưa biết gì về cấu trúc của một Tab Ribbon Như cột A thì làm sao ...

2/ Cột B làm như vậy thì ok

3/ Cột A nên làm theo cách huuthang_bd dùng SelectionChange Add nó vào là hay nhất hay làm theo cách cũ nhất là gõ

1,2,3 ....thì lập tức cột A nó hiểu vv như vậy sẻ rất dễ sư dụng không biết ý Bạn sao...

4/ Tại sao không sử dụng Fso ghi chuỗi Unicode trực tiếp vào File customUI.xml luôn mà phải xài hàm RibbonTV ???!!!!
 
Lần chỉnh sửa cuối:
To thaipv

Quay lại với bài này Mình mới thử File 17 thấy khó xài quá ...
1/ Nếu như ai đó chưa biết gì về cấu trúc của một Tab Ribbon Như cột A thì làm sao ...

2/ Cột B làm như vậy thì ok

3/ Cột A nên làm theo cách huuthang_bd dùng SelectionChange Add nó vào là hay nhất hay làm theo cách cũ nhất là gõ

1,2,3 ....thì lập tức cột A nó hiểu vv như vậy sẻ rất dễ sư dụng không biết ý Bạn sao...

4/ Tại sao không sử dụng Fso ghi chuỗi Unicode trực tiếp vào File cutomUI.xml luôn mà phải xài hàm RibbonTV ???!!!!

Trả lời ý 1&3: Tốt nhất là làm theo cách của Hữu Thắng (đổi lại vị trí cột A và B)(Sửa lại code trong module MyCoder)
Trả lời ý 4: Mình chưa biết Fso, bạn có thể sửa lại mã nguồn theo ý. Hoặc có thể gửi 1 vài đường link cơ bản về Fso để mình nghiên cứu.

(Đính chính : Không đổi vị trí cột A và B cũng được, tương đối giống nhau mà, có điều bẫy lỗi chưa chuẩn nên bạn không thấy, bạn chọn Type ở cột B xong click ô bất kỳ cùng dòng là sẽ thấy)
 
Lần chỉnh sửa cuối:
Trả lời ý 1&3: Tốt nhất là làm theo cách của Hữu Thắng (đổi lại vị trí cột A và B)(Sửa lại code trong module MyCoder)
Trả lời ý 4: Mình chưa biết Fso, bạn có thể sửa lại mã nguồn theo ý. Hoặc có thể gửi 1 vài đường link cơ bản về Fso để mình nghiên cứu.

(Đính chính : Không đổi vị trí cột A và B cũng được, tương đối giống nhau mà, có điều bẫy lỗi chưa chuẩn nên bạn không thấy, bạn chọn Type ở cột B xong click ô bất kỳ cùng dòng là sẽ thấy)
chọn type ở cột B nếu chọn menu thì mình chưa thấy nó tạo "end menu" ( có thể gà mờ chưa biết sử dụng)
còn fso hình như là vầy nà, copy code thôi nhoa nên khó hiểu chút.
Mã:
Public Sub XulyChenAnhBenNgoai(DuongDan, TenFile)
    ReDim Arr_Image(1 To 1000, 1 To 4)
    Dim Arr()
    Dim Obj1, GetAName
[COLOR=#ff0000][B]    Set Obj1 = CreateObject("Scripting.FileSystemObject")[/B][/COLOR]
    Dim RwC As Long, ColC As Long, i As Long, x As Byte
    Dim Path_Images As String, Path_rels As String
    RwC = Sheet1.UsedRange.Rows.Count
    ColC = Sheet1.UsedRange.Columns.Count
    Arr = Sheet1.Range(Cells(1, 1), Cells(RwC, ColC)).Value
    'lay link hinh anh vao mang
    For i = Row_Type + 2 To RwC
        If Len(Arr(i, Col_Image)) > 0 Then
            x = x + 1
            Arr_Image(x, 1) = Arr(i, Col_Image) 'C:\VanTan\Image1.png
            Arr_Image(x, 2) = Function_NameFiles(Arr_Image(x, 1), 1) 'Image1.png
            Arr_Image(x, 3) = Function_NameFiles(Arr_Image(x, 1), 2) 'Image1
            Arr_Image(x, 4) = Function_NameFiles(Arr_Image(x, 1), 3) 'png
        End If
    Next i
    'Ten 2 duong dan image va _rels
    Path_Images = DuongDan & "\images"
    Path_rels = DuongDan & "\_rels"
    'neu co 2 thu muc do thi xoa di
    If Obj1.FolderExists(Path_Images) Then _
            Obj1.DeleteFolder Path_Images
    Path_rels = DuongDan & "\_rels"
    If Obj1.FolderExists(Path_rels) Then _
            Obj1.DeleteFolder Path_rels
    'Neu khong co hinh anh nao duoc chen ti thoat Sub
    If x = 0 Then Exit Sub
    'Tao thu muc images
    MkDir Path_Images
    'copy hinh anh tu duong dan vao thu muc vua tao
    For i = 1 To x
        FileCopy Arr_Image(i, 1), Path_Images & "\" & Arr_Image(i, 2)
    Next i
    'tao thu muc _rels
    MkDir Path_rels
    'tao file customUI.xml.rels
[COLOR=#ff0000][B]    Const ForReading = 1, ForWriting = 2, ForAppending = 8[/B]
[B]    Set GetAName = Obj1.OpenTextFile(Path_rels & "\" & TenFile & ".rels", ForWriting, True)[/B]
[B]    With GetAName[/B]
[B]        .Write Get_RELS(Arr_Image, x)[/B]
[B]        .Close[/B]
[B]    End With[/B][/COLOR]
End Sub
hình như bác mạnh muốn là công việc ở chỗ in đậm thì phải. nó quất được chuỗi unicode vào file xml luôn ý. chả cần chuyển mã, dịch mã gì cả.
thấy file bác hình như còn chưa có code tạo file _rels chèn ảnh bên ngoài nhỉ. ngta tạo nghịch đủ trò hết bác ak, mấy cái imageMso sẵn có không thỏa mãn hết nhu cầu đâu bác ạ. (mong bác hoàn thành để học hỏi thêm)
chưa text tạo ribbon ra sao. không biết là có chèn cả code theo onAction với onChange theo người dùng không, hay là phải qua sheet VBA copy dán vào. có gì bác update file trang 1 cho người ta dễ tải, chứ ng mới vô đọc đến trang 9 mới có được file cuối cùng hoàn thiện của bác.
 
Web KT
Back
Top Bottom