Add-Ins Tạo Menu RibbonTiếng Việt Có Dấu Cho Office (1 người xem)

Liên hệ QC

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

Mạnh mượn File của huuthang_bd quậy một Tẹo ...Bạn test thử xem sao nha ....+-+-+-+

Nó sẻ tự động tạo Ribbon Theo Version Office của Bạn khỏi phải chọn nha Office Version

Nó chèn code vào File Ribbon luôn đó
File của bác @Hữu Thắng hay quá, tiếc là tác giả không viết code vào VBA.
Nếu tác giả nghiên cứu viết code vào VBA thì dùng luôn của bác @Hữu Thắng cho tiện, :-)
 
File của bác @Hữu Thắng hay quá, tiếc là tác giả không viết code vào VBA.
Nếu tác giả nghiên cứu viết code vào VBA thì dùng luôn của bác @Hữu Thắng cho tiện, :-)
Muốn vậy mình sửa file của bác Hữu thắng để thêm code vào VBA luôn.
 
Nói thật với bác em cũng lười lắm ạ. Code em viết có khi ngày mai xem lại còn không hiểu nữa là code người khác viết. :-)
Tôi thấy file của bác Hữu Thắng gần như hoàn thiện, chỉ cần thêm code theo ý muốn thôi, nhưng khả năng của tôi có giới hạn, nên chịu thua vậy. Thôi thì hóng cái của thaipv và Kieumanh để học hỏi thêm vậy.
 
File của bác @Hữu Thắng hay quá, tiếc là tác giả không viết code vào VBA.
Nếu tác giả nghiên cứu viết code vào VBA thì dùng luôn của bác @Hữu Thắng cho tiện, :-)
giờ ta làm vậy xem ý Bạn sao

Code XML Bạn đang làm đó cố giắng hoàn thiện ...

phần còn lại tạo Ribbon cho mọi lại file Mình viết ...để chia sẻ bớt suy nghĩ với Bạn ... ý Bạn sao không lẻ ta bỏ cuộc

mà viết code tạo XML Mình tịt toàn Tập ...
 
giờ ta làm vậy xem ý Bạn sao

Code XML Bạn đang làm đó cố giắng hoàn thiện ...

phần còn lại tạo Ribbon cho mọi lại file Mình viết ...để chia sẻ bớt suy nghĩ với Bạn ... ý Bạn sao không lẻ ta bỏ cuộc

mà viết code tạo XML Mình tịt toàn Tập ...
Cứ từ từ làm thôi, bỏ thế nào được... Code mình viết cũng chia sẻ mà, các bạn khác cũng có thể tiếp tục chứ. Mình cũng viết nữa. Khi nào hoàn thiện thì bỏ.
 
Mạnh đố Bạn nào biết tại sao phần Mềm IDBE RibbonCreator 2010

không sử dụng Hàm chuyển đổi tiếng việt có dấu RibbonTV , Notepad++ hay XML Notepad 2007

Mà vẫn Viết tiếng Việt có dấu Trên Ribbon ..............
+-+-+-+_)()(-,,,,,,,

đã đến lúc ta sẻ làm vậy ................

Có nghĩa trên sheet Mình viết sao thì trên Ribbon nó sẻ hiển thị như vậy ......
 

Có nghĩa trên sheet Mình viết sao thì trên Ribbon nó sẻ hiển thị như vậy ......
Nếu vậy thì dùng song ngữ để làm gì bác (lần trước tôi có gửi file cho bác là không sử dùng hàm chuyển Get_Chuoi để chuyển chữ mà ghi thẳng chữ unicode vào file XML luôn) tôi thấy dùng một ngôn ngữ là được rồi. Lý do thích tiếng anh thì gõ vào tiếng anh, thích tiếng Việt thì gõ vào tiếng Việt, thích tiếng Pháp thì gõ vào tiếng pháp... Có điều muốn sử dụng 2 ngôn ngữ thì chỉ sử dụng trên giao diện ribbon của file Creator Ribbon thôi, còn khi tạo ra file xlsm, xlsb... thì sẽ theo ngôn ngữ mình gõ trên sheet thôi đúng không (Do gõ thế nào ra thế đó mà).
 
Nếu vậy thì dùng song ngữ để làm gì bác (lần trước tôi có gửi file cho bác là không sử dùng hàm chuyển Get_Chuoi để chuyển chữ mà ghi thẳng chữ unicode vào file XML luôn) tôi thấy dùng một ngôn ngữ là được rồi. Lý do thích tiếng anh thì gõ vào tiếng anh, thích tiếng Việt thì gõ vào tiếng Việt, thích tiếng Pháp thì gõ vào tiếng pháp... Có điều muốn sử dụng 2 ngôn ngữ thì chỉ sử dụng trên giao diện ribbon của file Creator Ribbon thôi, còn khi tạo ra file xlsm, xlsb... thì sẽ theo ngôn ngữ mình gõ trên sheet thôi đúng không (Do gõ thế nào ra thế đó mà).
9 cái 9 xác là vậy ...chỉ cần Anh việt trên Ribbon creator thôi ....còn mình tạo cái gì viết trên Sheet tiếng thái thì nó ra tiếng thái ....vậy là OK nhất
 
Nếu vậy thì dùng song ngữ để làm gì bác (lần trước tôi có gửi file cho bác là không sử dùng hàm chuyển Get_Chuoi để chuyển chữ mà ghi thẳng chữ unicode vào file XML luôn) tôi thấy dùng một ngôn ngữ là được rồi. Lý do thích tiếng anh thì gõ vào tiếng anh, thích tiếng Việt thì gõ vào tiếng Việt, thích tiếng Pháp thì gõ vào tiếng pháp... Có điều muốn sử dụng 2 ngôn ngữ thì chỉ sử dụng trên giao diện ribbon của file Creator Ribbon thôi, còn khi tạo ra file xlsm, xlsb... thì sẽ theo ngôn ngữ mình gõ trên sheet thôi đúng không (Do gõ thế nào ra thế đó mà).
Thay vì khai báo rắc rối rồi file *.xlsb hay *.xlsm lằng nhằng mỳ tôn gì đó thì Mạnh xài Hàm sau ghi vào File .rels cho nó gọn và sử dụng Fso Unicode là xong phim
Mã:
Private Sub AddCustomUIToRels(ByVal sRels As String)
    Dim oXMLDoc  As Object, oXMLElement As Object
    Dim oXMLAttrib As Object, oNamedNodeMap As Object
    Dim oXMLRelsList As Object
    Set oXMLDoc = CreateObject("Msxml2.DOMDocument.3.0")
    oXMLDoc.Load sRels
    Set oXMLElement = oXMLDoc.createNode(1, "Relationship", _
        "http://schemas.openxmlformats.org/package/2006/relationships")
    Set oNamedNodeMap = oXMLElement.Attributes
    Set oXMLAttrib = oXMLDoc.createAttribute("Id")
    oXMLAttrib.NodeValue = GetRels_ID()
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLAttrib = oXMLDoc.createAttribute("Type")
    oXMLAttrib.NodeValue = GetRels_http()
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLAttrib = oXMLDoc.createAttribute("Target")
    oXMLAttrib.NodeValue = "customUI/" & customUI()
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLRelsList = oXMLDoc.SelectNodes("/Relationships")
    oXMLRelsList.Item(0).appendChild oXMLElement
    oXMLDoc.Save sRels
    Set oXMLDoc = Nothing
    Set oXMLAttrib = Nothing
    Set oXMLElement = Nothing
End Sub
 
Thay vì khai báo rắc rối rồi file *.xlsb hay *.xlsm lằng nhằng mỳ tôn gì đó thì Mạnh xài Hàm sau ghi vào File .rels cho nó gọn và sử dụng Fso Unicode là xong phim
Mã:
Private Sub AddCustomUIToRels(ByVal sRels As String)
    Dim oXMLDoc  As Object, oXMLElement As Object
    Dim oXMLAttrib As Object, oNamedNodeMap As Object
    Dim oXMLRelsList As Object
    Set oXMLDoc = CreateObject("Msxml2.DOMDocument.3.0")
    oXMLDoc.Load sRels
    Set oXMLElement = oXMLDoc.createNode(1, "Relationship", _
        "http://schemas.openxmlformats.org/package/2006/relationships")
    Set oNamedNodeMap = oXMLElement.Attributes
    Set oXMLAttrib = oXMLDoc.createAttribute("Id")
    oXMLAttrib.NodeValue = GetRels_ID()
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLAttrib = oXMLDoc.createAttribute("Type")
    oXMLAttrib.NodeValue = GetRels_http()
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLAttrib = oXMLDoc.createAttribute("Target")
    oXMLAttrib.NodeValue = "customUI/" & customUI()
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLRelsList = oXMLDoc.SelectNodes("/Relationships")
    oXMLRelsList.Item(0).appendChild oXMLElement
    oXMLDoc.Save sRels
    Set oXMLDoc = Nothing
    Set oXMLAttrib = Nothing
    Set oXMLElement = Nothing
End Sub
Cái này thì mình mù tịch, không biết là gì luôn. Bác KieuManh có thể giải thích chút được không?
 
Cái này thì mình mù tịch, không biết là gì luôn. Bác KieuManh có thể giải thích chút được không?
Nó tương tự hàm sau ....Mình test 2 cái tốc độ như nhau ...Bạn nhìn code là hiểu mà
Mã:
Private Sub AddrelsFile(ByVal Fso As Object, ByVal Extens As String, ByVal relsFile As String)
    Dim XML As String
    XML = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbNewLine:
    XML = XML & "<Relationships xmlns=""http://schemas.openxmlformats.org/package/2006/relationships"">"
    XML = XML & "<Relationship Id=""rId3"" Type=""http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"" Target=""docProps/app.xml""/>"
    XML = XML & "<Relationship Id=""rId2"" Type=""http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"" Target=""docProps/core.xml""/>"
    XML = XML & "<Relationship Id=""rId1"" Type=""http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"" Target=""xl/workbook." & _
    IIf(UCase(Extens) = "XLSB", "bin""/>", "xml""/>") & GeID_http
    With Fso.CreateTextFile(relsFile, True)
        .Write XML
        .Close
    End With
End Sub
 
Nó tương tự hàm sau ....Mình test 2 cái tốc độ như nhau ...Bạn nhìn code là hiểu mà
Mã:
Private Sub AddrelsFile(ByVal Fso As Object, ByVal Extens As String, ByVal relsFile As String)
    Dim XML As String
    XML = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbNewLine:
    XML = XML & "<Relationships xmlns=""http://schemas.openxmlformats.org/package/2006/relationships"">"
    XML = XML & "<Relationship Id=""rId3"" Type=""http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"" Target=""docProps/app.xml""/>"
    XML = XML & "<Relationship Id=""rId2"" Type=""http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"" Target=""docProps/core.xml""/>"
    XML = XML & "<Relationship Id=""rId1"" Type=""http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"" Target=""xl/workbook." & _
    IIf(UCase(Extens) = "XLSB", "bin""/>", "xml""/>") & GeID_http
    With Fso.CreateTextFile(relsFile, True)
        .Write XML
        .Close
    End With
End Sub
Cái này thì hiểu nè.
 
thì chức năng nó tương tự hàm trên đó ...nhưng cái này phải kiểm tra phần mở rộng của file là *xlsb = bin
còn khác =
xml ........... vậy thôi ....Mạnh viêt Gọn lại và truyên Fso vào thôi không phải set thêm Fso nữa và điều chỉnh một số nữa ....

từ từ rồi khoai cũng nhừ .....
 
chạy code mà chả hiểu làm sao nó ra được Ribbon luôn. muốn tham khảo mà chả hiện Sheets của bác KieuManh ra được nên đành đóng file.
hình như là không chèn đc hình ảnh hay icon bên ngoài vô được hả bác KieuManh.
e thử copy code này vào Ribbon e mà chả thấy nó chạy gì cả

Mã:
[INDENT]Sub onAction(control As IRibbonControl)
    MsgBox control.ID
End Sub[/INDENT]
 
chạy code mà chả hiểu làm sao nó ra được Ribbon luôn. muốn tham khảo mà chả hiện Sheets của bác KieuManh ra được nên đành đóng file.
hình như là không chèn đc hình ảnh hay icon bên ngoài vô được hả bác KieuManh.
e thử copy code này vào Ribbon e mà chả thấy nó chạy gì cả

Mã:
[INDENT]Sub onAction(control As IRibbonControl)
    MsgBox control.ID
End Sub[/INDENT]
Em sử dụng file ở bài nào mà không biết tạo vậy? tôi thấy nó chạy ngon mà.
 
Em sử dụng file ở bài nào mà không biết tạo vậy? tôi thấy nó chạy ngon mà.
file Var_2 tại bài 1 ý thầy
tính coi thêm file của bác huu thang mà nhìn rối mù. nên tắt luôn.
tìm lại cái file giải nén rồi tạo CustomUI rồi nén lại ý. mà đâu mất tiêu.
 
file Var_2 tại bài 1 ý thầy
tính coi thêm file của bác huu thang mà nhìn rối mù. nên tắt luôn.
tìm lại cái file giải nén rồi tạo CustomUI rồi nén lại ý. mà đâu mất tiêu.
Thử File huuthang_bd nè ....Thử nhấn nút Kiều Mạnh xong chon Một File Excel bất kỳ trên Máy nha
Chạy file setup mới xài được Nút Kiều Mạnh
 

File đính kèm

Thử File huuthang_bd nè ....Thử nhấn nút Kiều Mạnh xong chon Một File Excel bất kỳ trên Máy nha
Chạy file setup mới xài được Nút Kiều Mạnh
file cao siêu quá. vẫn chưa biết dùng a à. cho e hỏi thêm làm sao sửa được nội dung cột A? như file thì có button và menu, hiện e không cần menu mà nuốn sửa nó lại thành button hết thì làm thế nào? e thử sửa menu ở dòng 8 thành button thì code báo lỗi.
 
file cao siêu quá. vẫn chưa biết dùng a à. cho e hỏi thêm làm sao sửa được nội dung cột A? như file thì có button và menu, hiện e không cần menu mà nuốn sửa nó lại thành button hết thì làm thế nào? e thử sửa menu ở dòng 8 thành button thì code báo lỗi.
Ý 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
 
Ý 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

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.
 
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)
Nếu bạn chưa hiểu Fso co thể tham khảo thêm Link chữ ký của mình FileSystemObject

Từ từ ta điều chỉnh lại làm sao thân thiện và dễ sử dụng nhất ...

Nếu Hiên đại quá mà khó sử dụng rắc rối và lỗi thì thật sự rất bất tiện
 
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.
đúng rồi đó nó xử Uncode trực tiếp vào File customUI.xml luôn mà như file đơn giản nhất chỉ tạo Tab mình Úp bài 1 đó nó xử Ok mà ....

Còn code Bạn úp đó áp dụng cho File nào vậy Mình mới coi chưa nghiên cứu kỹ

Nếu Ghi vào file .res không thì mạnh tách ra sử dụng như sau
Mã:
Private Sub AddrelsFile(ByVal Fso As Object, ByVal Extension As String, ByVal relsFile As String)
    Dim XML As String
    XML = "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbNewLine:
    XML = XML & "<Relationships xmlns=""http://schemas.openxmlformats.org/package/2006/relationships"">"
    XML = XML & "<Relationship Id=""rId3"" Type=""http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties"" Target=""docProps/app.xml""/>"
    XML = XML & "<Relationship Id=""rId2"" Type=""http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties"" Target=""docProps/core.xml""/>"
    XML = XML & "<Relationship Id=""rId1"" Type=""http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"" Target=""xl/workbook." & _
    IIf(UCase(Extension) = "XLSB", "bin""/>", "xml""/>") & Get_IDrels
    With Fso.CreateTextFile(relsFile, True) 
        .Write XML
        .Close
    End With
End Sub

Hay sử dụng Hàm sau nó tương tự như vậy
Mã:
Private Sub AddCustomUIToRels(ByVal sRels As String)
    Dim oXMLDoc  As Object, oXMLElement As Object
    Dim oXMLAttrib As Object, oNamedNodeMap As Object
    Dim oXMLRelsList As Object
    Set oXMLDoc = CreateObject("Msxml2.DOMDocument.3.0")
    oXMLDoc.Load sRels
    Set oXMLElement = oXMLDoc.createNode(1, "Relationship", _
        "http://schemas.openxmlformats.org/package/2006/relationships")
    Set oNamedNodeMap = oXMLElement.Attributes
    Set oXMLAttrib = oXMLDoc.createAttribute("Id")
    If AppVersion < 12 Then
        oXMLAttrib.NodeValue = "cuID"      ''// Office 2007
    Else
        oXMLAttrib.NodeValue = "cuID14"    ''// Office 2010 Va Office 2016
    End If
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLAttrib = oXMLDoc.createAttribute("Type")
    If AppVersion < 12 Then     ''// For Office2007
        oXMLAttrib.NodeValue = "http://schemas.microsoft.com/office/2006/relationships/ui/extensibility"
    Else                        ''// For Office 2010 Va Office 2016
        oXMLAttrib.NodeValue = "http://schemas.microsoft.com/office/2007/relationships/ui/extensibility"
    End If
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLAttrib = oXMLDoc.createAttribute("Target")
    If AppVersion < 12 Then
        oXMLAttrib.NodeValue = "customUI/customUI.xml"          ''// Office 2007
    Else
        oXMLAttrib.NodeValue = "customUI/customUI14.xml"        ''// Office 2010  Va Office 2016
    End If
    oNamedNodeMap.setNamedItem oXMLAttrib
    Set oXMLRelsList = oXMLDoc.SelectNodes("/Relationships")
    oXMLRelsList.Item(0).appendChild oXMLElement
    oXMLDoc.Save sRels
    Set oXMLDoc = Nothing
    Set oXMLAttrib = Nothing
    Set oXMLElement = Nothing
End Sub
 
Lần chỉnh sửa cuối:
đã inbox cho bác, toàn lụm lọc rồi chỉnh sửa lại không à. chả có cái gì của mình cả.
Mình mới thử lần 1 lỗi dòng sau: Vì máy Bạn Win64 Máy mình Win32 cái này đơn giản ta làm cái If là xong

Rem MyFile = "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
MyFile = "C:\Program Files\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"


sửa lỗi Lần 1 chạy lại lỗi dòng sau ....Coi code nhức đầu quá

FileCopy Arr_Image(i, 1), Path_Images & "" & Arr_Image(i, 2)
 
Mình mới thử lần 1 lỗi dòng sau: Vì máy Bạn Win64 Máy mình Win32 cái này đơn giản ta làm cái If là xong

Rem MyFile = "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
MyFile = "C:\Program Files\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"


sửa lỗi Lần 1 chạy lại lỗi dòng sau ....Coi code nhức đầu quá

FileCopy Arr_Image(i, 1), Path_Images & "" & Arr_Image(i, 2)
lỗi dòng đó là do đường link đến file ảnh sai ấy bác mạnh ạ. dòng 40 41 ở cột G có 2 link file ảnh.bác nhấn đúp vào ô tương ứng rồi chọn icon trong máy bác thôi là xong. nhỏ hơn 500x500 pixel nhe bác
 
lỗi dòng đó là do đường link đến file ảnh sai ấy bác mạnh ạ. dòng 40 41 ở cột G có 2 link file ảnh.bác nhấn đúp vào ô tương ứng rồi chọn icon trong máy bác thôi là xong. nhỏ hơn 500x500 pixel nhe bác
Ok thấy Rồi ...Nhưng mới thử File đã có customUI14.xml (2010) nó chen code vao được nhưng Ribbon ko tạo được
 
lạ nhỉ. e chọn 2010 nó vẫn ra mà ta
Bạn Thêm 2 dòng sau vào Hàm ExportLanguage

xử lý lỗi Khi Folder đã tồn tại ... mà tại sao Xài Fso thì chơi Fso luôn đi còn Xài hàm MkDir của VB6 làm chi vậy Hàm đó nếu Folder là Tiếng Việt có dấu là Tèo đó VD: D:\Kiều Mạnh\lan

Language = DefPath & "\lan" '' ====>> Folder luu Ngon ngu
MkDir DefPath & "\lan"

Sửa dòng trên như sau

If Not Obj1.FolderExists(Language) Then Obj1.CreateFolder (Language)

Nhờ Bạn gửi cho một ít Ảnh
500x500 pixel ....để quậy một chút ... Mình ko có
 
Lần chỉnh sửa cuối:
Bạn Thêm 2 dòng sau vào Hàm ExportLanguage

xử lý lỗi Khi Folder đã tồn tại ... mà tại sao Xài Fso thì chơi Fso luôn đi còn Xài hàm MkDir của VB6 làm chi vậy Hàm đó nếu Folder là Tiếng Việt có dấu là Tèo đó VD: D:\Kiều Mạnh\lan

Language = DefPath & "\lan" '' ====>> Folder luu Ngon ngu
MkDir DefPath & "\lan"

Sửa dòng trên như sau

If Not Obj1.FolderExists(Language) Then Obj1.CreateFolder (Language)

Nhờ Bạn gửi cho một ít Ảnh
500x500 pixel ....để quậy một chút ... Mình ko có
fso e không biết nhiều, chỉ biết có 1 vài thứ à. với lại gõ lệnh nó không hiện gợi ý tiếp theo nên chả biết nó có cái gì và chức năng ra sao nữa.
chủ yếu sử dụng code có sẵn của phan ngoc lan. để nào rảnh rồi mổ sẻ file của phan ngoc lan làm 1 file hỗ trợ viết code.
còn lúc tạo ribbon 2010 thì chắc là sửa lại tại
Mã:
Public Function Get_XML(ByRef GTri As Boolean) As String
    Dim a As Long, b As Long, c As Long, s As String, Arrs, Arrd(1 To 10000)
[COLOR=#ff0000]    If Sheet1.Range("B1").Value = "2007" Then CustUI = [/COLOR][B][COLOR=#0000ff]"2006/01"[/COLOR][/B][COLOR=#ff0000] Else CusUI = [/COLOR][B][COLOR=#0000ff]"2009/07"[/COLOR][/B][COLOR=#ff0000][/COLOR]
[COLOR=#ff0000]    Arrd(1) = Replace("<customUI xmlns=""http://schemas.microsoft.com/office/[/COLOR][COLOR=#0000ff][B]CusUI[/B][/COLOR][COLOR=#ff0000]/customui""" & IIf(Len(Sheet1.Cells(2, 2).Value) > 0, " onLoad=""" & Sheet1.Cells(2, 2).Value & """", "") & ">", "CusUI", CusUI)[/COLOR]
chắc là do chỗ đó đối với file customUI với customUI14
còn chèn ảnh bên ngoài nó báo lỗi lúc mở lên thì chịu. e dùng thử chương trình khác tạo ribbon nó cũng báo tương tự vậy.
còn ảnh đây bác. tha hồ chọn
 
fso e không biết nhiều, chỉ biết có 1 vài thứ à. với lại gõ lệnh nó không hiện gợi ý tiếp theo nên chả biết nó có cái gì và chức năng ra sao nữa.
chủ yếu sử dụng code có sẵn của phan ngoc lan. để nào rảnh rồi mổ sẻ file của phan ngoc lan làm 1 file hỗ trợ viết code.
còn lúc tạo ribbon 2010 thì chắc là sửa lại tại
Mã:
Public Function Get_XML(ByRef GTri As Boolean) As String
    Dim a As Long, b As Long, c As Long, s As String, Arrs, Arrd(1 To 10000)
[COLOR=#ff0000]    If Sheet1.Range("B1").Value = "2007" Then CustUI = [/COLOR][B][COLOR=#0000ff]"2006/01"[/COLOR][/B][COLOR=#ff0000] Else CusUI = [/COLOR][B][COLOR=#0000ff]"2009/07"[/COLOR][/B]
[COLOR=#ff0000]    Arrd(1) = Replace("<customUI xmlns=""http://schemas.microsoft.com/office/[/COLOR][COLOR=#0000ff][B]CusUI[/B][/COLOR][COLOR=#ff0000]/customui""" & IIf(Len(Sheet1.Cells(2, 2).Value) > 0, " onLoad=""" & Sheet1.Cells(2, 2).Value & """", "") & ">", "CusUI", CusUI)[/COLOR]
chắc là do chỗ đó đối với file customUI với customUI14
còn chèn ảnh bên ngoài nó báo lỗi lúc mở lên thì chịu. e dùng thử chương trình khác tạo ribbon nó cũng báo tương tự vậy.
còn ảnh đây bác. tha hồ chọn

dòng màu đỏ đã tìm ra nguyên nhân lỗi Format khi mở File lên là do File [Content_Types].xml nó chưa load được sự thay đổi khi chèn Ảnh ngoài vào ..

Test Như Sau:
1/ Tạo 1 file xong mở lên thấy lỗi Save As File đó sang tên khác cùng đuôi File xong Close lại

2/ Xong Mở file vừa vừa Save As đó lên xem hết lỗi xong đóng lại ... Xong Mở nó Với WinRaR giải nén File [Content_Types].xml ra xong đóng lại

3/ Mở File lỗi lên với WinRaR kéo File vừa giải nén vào file Lỗi Lưu đè trong Giao diện WinRaR ....OK

4/ Nghiên cứu Code cho File [Content_Types].xml Nó load khi chèn Hình ngoài vào là OK

5/ Bạn mở File [Content_Types].xml lỗi lên Copy ra Word xong Mở File OK lên Copy ra Word so sánh là thấy sự khác biệt của nó ...Từ đó nghiên cứu mà code cho nó load khi chèn Ảnh ngoài vào là Ok
 
dòng màu đỏ đã tìm ra nguyên nhân lỗi Format khi mở File lên là do File [Content_Types].xml nó chưa load được sự thay đổi khi chèn Ảnh ngoài vào ..

Test Như Sau:
1/ Tạo 1 file xong mở lên thấy lỗi Save As File đó sang tên khác cùng đuôi File xong Close lại

2/ Xong Mở file vừa vừa Save As đó lên xem hết lỗi xong đóng lại ... Xong Mở nó Với WinRaR giải nén File [Content_Types].xml ra xong đóng lại

3/ Mở File lỗi lên với WinRaR kéo File vừa giải nén vào file Lỗi Lưu đè trong Giao diện WinRaR ....OK

4/ Nghiên cứu Code cho File [Content_Types].xml Nó load khi chèn Hình ngoài vào là OK

5/ Bạn mở File [Content_Types].xml lỗi lên Copy ra Word xong Mở File OK lên Copy ra Word so sánh là thấy sự khác biệt của nó ...Từ đó nghiên cứu mà code cho nó load khi chèn Ảnh ngoài vào là Ok
xong code cho file [content_Types].xml mà không biết cách nén nó vào bác ạ.
đã thử với
Set Obj1 = CreateObject("Scripting.FileSystemObject")
Set Obj2 = CreateObject("Shell.Application")
copy hay move vào cũng toàn báo lỗi e làm cái đường dẫn là để lôi ra bên ngoài hay di chuyển vào file zip như này <tên file excel> & ".zip\[Content_Types].xml"
còn nội dung file đó thì đây
áp dụng cho file em gửi nhé
Mã:
Public Function Get_Content_Types(ByVal Arr As Variant, ByVal x As Byte)
    '<Default Extension=^png^ ContentType=^image/png^/>
    Dim i As Byte
    Dim DinhDangAnh, NDungKhaiBao As String, NDung_Content_Types As String
    For i = 1 To x 'lay nhung dinh dang anh chen tu ben ngoai
        If Not (DinhDangAnh Like "* " & Arr(i, 4) & " *") Then DinhDangAnh = DinhDangAnh & " " & Arr(i, 4) & " "
    Next i
    'xoa nhung khoang trang du
    DinhDangAnh = Application.WorksheetFunction.Trim(DinhDangAnh)
    'xoa mang
    Set Arr = Nothing
    'lay dinh dang duoi anh vao mang
    Arr = Split(DinhDangAnh, " ")
    For i = LBound(Arr) To UBound(Arr) 'viet code khai bao dinh dang
        NDungKhaiBao = NDungKhaiBao & Replace("<Default Extension=^xxx^ ContentType=^image/xxx^/>", "xxx", Arr(i))
    Next i
    'noi dung xml
    NDung_Content_Types = "<Types xmlns=^http://schemas.openxmlformats.org/package/2006/content-types^>" & vbNewLine & _
            NDungKhaiBao & _
            "<Default Extension=^wmf^ ContentType=^image/x-wmf^/>" & _
            "<Default Extension=^rels^ ContentType=^application/vnd.openxmlformats-package.relationships+xml^/>" & _
            "<Default Extension=^xml^ ContentType=^application/xml^/>" & _
            "<Override PartName=^/xl/workbook.xml^ ContentType=^application/vnd.ms-excel.sheet.macroEnabled.main+xml^/>" & _
            "<Override PartName=^/xl/worksheets/sheet1.xml^ ContentType=^application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml^/>" & _
            "<Override PartName=^/xl/theme/theme1.xml^ ContentType=^application/vnd.openxmlformats-officedocument.theme+xml^/>" & _
            "<Override PartName=^/xl/styles.xml^ ContentType=^application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml^/>" & _
            "<Override PartName=^/docProps/core.xml^ ContentType=^application/vnd.openxmlformats-package.core-properties+xml^/>" & _
            "<Override PartName=^/docProps/app.xml^ ContentType=^application/vnd.openxmlformats-officedocument.extended-properties+xml^/></Types>"
    Get_Content_Types = Replace(NDung_Content_Types, "^", """")
End Function
 
Lần chỉnh sửa cuối:
xong code cho file [content_Types].xml mà không biết cách nén nó vào bác ạ.
đã thử với
Set Obj1 = CreateObject("Scripting.FileSystemObject")
Set Obj2 = CreateObject("Shell.Application")
copy hay move vào cũng toàn báo lỗi e làm cái đường dẫn là để lôi ra bên ngoài hay di chuyển vào file zip như này <tên file excel> & ".zip\[Content_Types].xml"
còn nội dung file đó thì đây
áp dụng cho file em gửi nhé
Mã:
Public Function Get_Content_Types(ByVal Arr As Variant, ByVal x As Byte)
    '<Default Extension=^png^ ContentType=^image/png^/>
    Dim i As Byte
    Dim DinhDangAnh, NDungKhaiBao As String, NDung_Content_Types As String
    For i = 1 To x 'lay nhung dinh dang anh chen tu ben ngoai
        If Not (DinhDangAnh Like "* " & Arr(i, 4) & " *") Then DinhDangAnh = DinhDangAnh & " " & Arr(i, 4) & " "
    Next i
    'xoa nhung khoang trang du
    DinhDangAnh = Application.WorksheetFunction.Trim(DinhDangAnh)
    'xoa mang
    Set Arr = Nothing
    'lay dinh dang duoi anh vao mang
    Arr = Split(DinhDangAnh, " ")
    For i = LBound(Arr) To UBound(Arr) 'viet code khai bao dinh dang
        NDungKhaiBao = NDungKhaiBao & Replace("<Default Extension=^xxx^ ContentType=^image/xxx^/>", "xxx", Arr(i))
    Next i
    'noi dung xml
    NDung_Content_Types = "<Types xmlns=^http://schemas.openxmlformats.org/package/2006/content-types^>" & vbNewLine & _
            NDungKhaiBao & _
            "<Default Extension=^wmf^ ContentType=^image/x-wmf^/>" & _
            "<Default Extension=^rels^ ContentType=^application/vnd.openxmlformats-package.relationships+xml^/>" & _
            "<Default Extension=^xml^ ContentType=^application/xml^/>" & _
            "<Override PartName=^/xl/workbook.xml^ ContentType=^application/vnd.ms-excel.sheet.macroEnabled.main+xml^/>" & _
            "<Override PartName=^/xl/worksheets/sheet1.xml^ ContentType=^application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml^/>" & _
            "<Override PartName=^/xl/theme/theme1.xml^ ContentType=^application/vnd.openxmlformats-officedocument.theme+xml^/>" & _
            "<Override PartName=^/xl/styles.xml^ ContentType=^application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml^/>" & _
            "<Override PartName=^/docProps/core.xml^ ContentType=^application/vnd.openxmlformats-package.core-properties+xml^/>" & _
            "<Override PartName=^/docProps/app.xml^ ContentType=^application/vnd.openxmlformats-officedocument.extended-properties+xml^/></Types>"
    Get_Content_Types = Replace(NDung_Content_Types, "^", """")
End Function
Đây Cắt Ra Cắt vào ....

Mã:
Sub Test_CutRa()
    Dim ZipFile, Path
    Path = ThisWorkbook.Path
    ZipFile = Path & "\YourApp.xlsm.zip"
    With CreateObject("Shell.Application")
        .Namespace(Path).MoveHere .Namespace(ZipFile).items.Item("[Content_Types].xml")
    End With
End Sub


Sub Test_CutVao()
    Dim Path, ZipFile
    Path = ThisWorkbook.Path
    ZipFile = Path & "\YourApp.xlsm.zip"
        
    With CreateObject("Shell.Application")
        .Namespace(ZipFile).MoveHere .Namespace(Path).items.Item("[Content_Types].xml")
    End With
End Sub

Mình đang bận chút tối coi lại Bạn thử xem có gì Báo lại
 
Mình đang bận chút tối coi lại Bạn thử xem có gì Báo lại
có vấn đề rồi bác ạ. khi sửa file [Content_Types].xml thì toàn bộ code đã chèn trước đó sẽ mất.
còn nếu sửa xong rồi mới chèn code ở bước cuối thì khi chèn code thì phải nhấn F8 từ từ mới chèn được vì lúc mở lên nó bị lỗi 400, không là không tạo được ribbon luôn. và chèn code xong rồi thì lúc mở lên có thông báo "thành công" nhưng hình ảnh chèn ở bên ngoài thì không load vào được khai báo ảnh ở [Content_Types].xml cũng mất luôn, chắc phải sống chung với lũ, chơi 1 phát nữa. mở file lên dùng senkey thao tác tự sửa lỗi quá.
 
có vấn đề rồi bác ạ. khi sửa file [Content_Types].xml thì toàn bộ code đã chèn trước đó sẽ mất.
còn nếu sửa xong rồi mới chèn code ở bước cuối thì khi chèn code thì phải nhấn F8 từ từ mới chèn được vì lúc mở lên nó bị lỗi 400, không là không tạo được ribbon luôn. và chèn code xong rồi thì lúc mở lên có thông báo "thành công" nhưng hình ảnh chèn ở bên ngoài thì không load vào được khai báo ảnh ở [Content_Types].xml cũng mất luôn, chắc phải sống chung với lũ, chơi 1 phát nữa. mở file lên dùng senkey thao tác tự sửa lỗi quá.
Hàm Get_Content_Types

không xài được
Test bằng cách tạo File Lỗi xong Xuất File [Content_Types].xml ra chạy hàm đó xong kéo trả lại file thì mở File lên hỏng luôn File

Trình độ Code két của Mình còn hạn chế nên Tách ra nhiều phần Test khi nào kiểm soát ok thì mới ghép lại là phương Án tôt nhất ...

Chứ cứ viết cả một Rừng Code test không biết đâu mà lần cả ....mệt lắm +-+-+-+--=0
 
Nhờ Bạn langtuchungtinh360

Kiểm tra dùm Sub sau xem trên Máy Bạn Win64 có Ok không ...Nó tương tự như Sub CheckKey

Mình không xài Win64 nên không kiểm tra được ....Win32 thì Ok ...nếu Ok trên Win64 nữa thì Tốt
Mã:
''// Check Microsoft Visual Basic for Applications Extensibility 5.3
Public Sub Check_Extensibility()
    On Error Resume Next ''// Neu chay LAN 2 la loi nen Bay loi
    ThisWorkbook.VBProject.References.AddFromGuid _
    GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
End Sub

Tương tự Như code Sau
Mã:
Public Sub CheckKey()
    Dim MyFile As String
    Rem MyFile = "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
    MyFile = "C:\Program Files\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
    AddFromFileDLL (MyFile)
End Sub
 
Nhờ Bạn langtuchungtinh360

Kiểm tra dùm Sub sau xem trên Máy Bạn Win64 có Ok không ...Nó tương tự như Sub CheckKey

Mình không xài Win64 nên không kiểm tra được ....Win32 thì Ok ...nếu Ok trên Win64 nữa thì Tốt
Mã:
''// Check Microsoft Visual Basic for Applications Extensibility 5.3
Public Sub Check_Extensibility()
    On Error Resume Next ''// Neu chay LAN 2 la loi nen Bay loi
    ThisWorkbook.VBProject.References.AddFromGuid _
    GUID:="{0002E157-0000-0000-C000-000000000046}", Major:=5, Minor:=3
End Sub

Tương tự Như code Sau
Mã:
Public Sub CheckKey()
    Dim MyFile As String
    Rem MyFile = "C:\Program Files (x86)\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
    MyFile = "C:\Program Files\Common Files\microsoft shared\VBA\VBA6\VBE6EXT.OLB"
    AddFromFileDLL (MyFile)
End Sub
được bác. check OK
mà sao biết được nó là cái này thế "{0002E157-0000-0000-C000-000000000046}"
xem trong cmd à?
 
được bác. check OK
mà sao biết được nó là cái này thế "{0002E157-0000-0000-C000-000000000046}"
xem trong cmd à?

Bạn Bạn Thích thư Viện Nào thì Check Xong Chạy Code Sau là thấy hết Nó xong lấy cái Mình cần Viết Thành code
Mã:
Sub ListReference()
    Dim i As Long
    Range("A1:F100").ClearContents
    Range("A1:F1").Value = Array("Description", "References Name", _
                "GUID:", "Major:", "Minor:", "Full Path To References")
    For i = 1 To ThisWorkbook.VBProject.References.Count
        With ThisWorkbook.VBProject.References(i)
            Range("A65536").End(xlUp).Offset(1, 0) = .Description
            Range("A65536").End(xlUp).Offset(0, 1) = .Name
            Range("A65536").End(xlUp).Offset(0, 2) = .GUID
            Range("A65536").End(xlUp).Offset(0, 3) = .Major
            Range("A65536").End(xlUp).Offset(0, 4) = .Minor
            Range("A65536").End(xlUp).Offset(0, 5) = .FullPath
        End With
    Next i
End Sub
 
To thaipv

Mấy hôm nay Mạnh đang nghiên cứu đăng Ký File Ảnh do mình thiết kế cho Ribbon bằng code ....Như Bài #151 mà test tới lui các Kiểu xem thế nào mà cứ lỗi Hoài ...

Bạn có kinh nghiệm nhiều về Ribbon Mong Bạn trợ Giúp cách Viết code thế nào đăng ký khi chèn thêm Ảnh Ngoài Vào ribbon khi nó load lần đầu không báo Lỗi

Xin Cảm Ơn
 
Lần chỉnh sửa cuối:
To langtuchungtinh360

Cái vụ chèn Hình ngoài vào Mình mới thử mấy cái phần mềm nước ngoài nó cũng bị lỗi Y trang vậy...khi mở lên đó ...Thôi sống chung vối Lũ vậy....khi nào trình độ code két cao thêm một chút ta coi lại

Code trong File [Content_Types].xlm nó sẻ thay đổi liên tục theo từng File ...Phụ thuộc vào có mấy Sheet và bao nhiêu Hình chèn vào vì vậy Mình nghĩ U cả đầu mà chưa nghĩ ra được cách nó Load ....khó quá Bỏ vây
 
To langtuchungtinh360

Cái vụ chèn Hình ngoài vào Mình mới thử mấy cái phần mềm nước ngoài nó cũng bị lỗi Y trang vậy...khi mở lên đó ...Thôi sống chung vối Lũ vậy....khi nào trình độ code két cao thêm một chút ta coi lại

Code trong File [Content_Types].xlm nó sẻ thay đổi liên tục theo từng File ...Phụ thuộc vào có mấy Sheet và bao nhiêu Hình chèn vào vì vậy Mình nghĩ U cả đầu mà chưa nghĩ ra được cách nó Load ....khó quá Bỏ vây
thì vụ chèn hình trước em có nói rồi, em sử dụng chương trình khác để tạo nó cũng báo lỗi y chang vậy. mà office nó tự động sửa được cũng đỡ.
hnay xung. bung ghost cài office 64 bit để text code thì mất hết trơn hình vẽ làm hồ sơ, ngồi mấy ngày nay mới xong. @@ mất luôn cái addins viết phục vụ công việc **~**
 
thì vụ chèn hình trước em có nói rồi, em sử dụng chương trình khác để tạo nó cũng báo lỗi y chang vậy. mà office nó tự động sửa được cũng đỡ.
hnay xung. bung ghost cài office 64 bit để text code thì mất hết trơn hình vẽ làm hồ sơ, ngồi mấy ngày nay mới xong. @@ mất luôn cái addins viết phục vụ công việc **~**
Đam mê là phải trả giá đó em, cái vụ này anh cũng bị hoài, bảo đảm sẽ có kinh nghiệm nhưng lần sao cẩn thận lắm cũng bị như lần trước. --=0 --=0 --=0
 
thì vụ chèn hình trước em có nói rồi, em sử dụng chương trình khác để tạo nó cũng báo lỗi y chang vậy. mà office nó tự động sửa được cũng đỡ.
hnay xung. bung ghost cài office 64 bit để text code thì mất hết trơn hình vẽ làm hồ sơ, ngồi mấy ngày nay mới xong. @@ mất luôn cái addins viết phục vụ công việc **~**
Lại cũng giống Mình rồi ... cách đây khoãng 10 ngày gì đó viết cho ông kia cái ứng dụng nén File bằng WinRaR khi xuất File Excel ra là nó nén lại để gửi Mail ...Quậy cmd hoài không hiểu sao nó xóa Banh cái ổ D:\ .......
Code két tích lũy ở đó Tiêu hết ....ngồi đơ ra mất 10 phút ghét quậy banh win luôn ...ngày hôm đó Ghost máy 2 lần

Tiếc cái Code két Banh mất 1 mớ ....--=0+-+-+-+
 
Đang hóng thaipv mà thấy vắng vẻ quá ...
Nghe mấy Bạn ở bên kia cầu Sài Gòn nói ...thaipv viết xong rồi thấy hay quá nên cất xài một mình hay sao ý...--=0
 
Đang hóng thaipv mà thấy vắng vẻ quá ...
Nghe mấy Bạn ở bên kia cầu Sài Gòn nói ...thaipv viết xong rồi thấy hay quá nên cất xài một mình hay sao ý...--=0
Mình cũng chưa làm được nhé các bạn. Hiện mình đang nghiên cứu class và hướng chuyển qua viết trên form cho nó trực quan hơn.
 
To thaipv
mấy hôm nay mình kẹt kích sim theo cái công văn phá sản cùa Bộ hạ ....bận quá chưa coi được

hôm nay mới coi bài 165 mình thấy có cái form mà ko biết xài sao ...mong Bạn hướng dẫn dùm

trên máy mình chỉ bấm qua lại mấy tab thôi vậy
 

File đính kèm

  • Capture.jpg
    Capture.jpg
    22.4 KB · Đọc: 157
Lần chỉnh sửa cuối:
To thaipv
mấy hôm nay mình kẹt kích sim theo cái công văn phá sản cùa Bộ hạ ....bận quá chưa coi được

hôm nay mới coi bài 165 mình thấy có cái form mà ko biết xài sao ...mong Bạn hướng dẫn dùm

trên máy mình chỉ bấm qua lại mấy tab thôi vậy

Cái đó chỉ để xem chơi vậy thôi bác à. Các bác xem file này sẽ hiểu : https://docs.google.com/uc?export=download&id=0B_cvZtAVNc-1ckdSOE5OOEZyRms

(Có khoảng ~20 loại control : tab, group, button, menu, ... hiện cứ từ từ làm dần thôi các bác. File trên cũng chưa hoàn thiện với cái đầu tiên, là cái tab nữa)
 
Cái đó chỉ để xem chơi vậy thôi bác à. Các bác xem file này sẽ hiểu : https://docs.google.com/uc?export=download&id=0B_cvZtAVNc-1ckdSOE5OOEZyRms

(Có khoảng ~20 loại control : tab, group, button, menu, ... hiện cứ từ từ làm dần thôi các bác. File trên cũng chưa hoàn thiện với cái đầu tiên, là cái tab nữa)
Mới tải về chuyển qua Sheet XML lỗi dòng này curLevel = curLevel - 1

mà sao ko làm cái menu Cells Insert Control vậy
 
Tao menu được rồi nhưng làm sao mình gán lện vô các menu đó được vậy bạn? Mình k thấy hướng dẫn.
 
Mình chạy bị lỗi này bạn @kieumanh ơi, Mình dùng Office 2013
 

File đính kèm

  • Untitled.jpg
    Untitled.jpg
    33.9 KB · Đọc: 38
Các các cho em hỏi khi chèn một group mặc định (GroupFont chẳng hạn) vào tab mới tạo thì làm thế nào ạ, xin cảm ơn
 
Em đã tạo được 1 tab ribbon theo file của bác kieu manh. Sau khi tạo xong thì tab mới tạo nằm ở phía ngoài cùng bên phải. Làm thế nào để di chuyển tab mới tạo đó sang trái trước tab Home để khi khởi động file excel sẽ hiện thị tab đó luôn. Mong các bác giúp đỡ, xin cảm ơn!
 
Em đã tạo được 1 tab ribbon theo file của bác kieu manh. Sau khi tạo xong thì tab mới tạo nằm ở phía ngoài cùng bên phải. Làm thế nào để di chuyển tab mới tạo đó sang trái trước tab Home để khi khởi động file excel sẽ hiện thị tab đó luôn. Mong các bác giúp đỡ, xin cảm ơn!
lâu ngày quá quên hết tiêu rồi Bạn làm lại từ đầu xem ........... hay Tìm trong Nick @huuthang_bd Or @lang tu chung tinh là thấy thêm cái bạn cần
 
Sau khi chạy file Ribbon TVsetup bây giờ ở file excel nào dùng chuột phải cũng bị như hình là sao bạn @kieu manh ? Quay lại chế độ trước thì làm thế nào?
 

File đính kèm

  • upload_2018-1-25_17-15-49.png
    upload_2018-1-25_17-15-49.png
    136.5 KB · Đọc: 35
Sau khi chạy file Ribbon TVsetup bây giờ ở file excel nào dùng chuột phải cũng bị như hình là sao bạn @kieu manh ? Quay lại chế độ trước thì làm thế nào?
Thử chạy vầy xem sao
mà cái file đó ko liên quan gì tới cái hình bạn úp cả .... coi lại xem oan người ta lắm nhe
PHP:
Sub reset()
Application.CommandBars("Cell").Reset
End Sub
 
Cái đó chỉ để xem chơi vậy thôi bác à. Các bác xem file này sẽ hiểu : https://docs.google.com/uc?export=download&id=0B_cvZtAVNc-1ckdSOE5OOEZyRms

(Có khoảng ~20 loại control : tab, group, button, menu, ... hiện cứ từ từ làm dần thôi các bác. File trên cũng chưa hoàn thiện với cái đầu tiên, là cái tab nữa)

Chào anh, theo file anh gửi em không xuất file để tạo MENU được, nhờ anh hỗ trợ giúp em nhe

Em cám ơn
 

File đính kèm

các anh cho em hỏi, làm sao đóng gói add-in thành file exe như bác thớt ở page 1 với ạ, thanks
 
Có thể dùng Inno setup để tạo file cài đặt Add-Ins cho Office.

bác cho em hỏi tý ạ.
em muốn cài vào đường dẫn sau thì làm thế nào ạ, cái inno setup nó ko chịu, ko biết phải code thế nào cho đúng, thanks ạ

DefaultDirName=c:\users\%username%\AppData\Roaming\Microsoft\AddIns
 
bác cho em hỏi tý ạ.
em muốn cài vào đường dẫn sau thì làm thế nào ạ, cái inno setup nó ko chịu, ko biết phải code thế nào cho đúng, Cảm ơn ạ

DefaultDirName=c:\users\%username%\AppData\Roaming\Microsoft\AddIns
thử coi sao
PHP:
MsgBox Application.UserLibraryPath
 
không được anh ạ, vấn đề là làm sao chỉ ra được đúng đường dẫn trên để vác đi máy nào cũng cài vào đúng folder dấy được.
 
bác cho em hỏi tý ạ.
em muốn cài vào đường dẫn sau thì làm thế nào ạ, cái inno setup nó ko chịu, ko biết phải code thế nào cho đúng, Cảm ơn ạ

DefaultDirName=c:\users\%username%\AppData\Roaming\Microsoft\AddIns
Cái vụ cài theo đường dẫn đó thì mình không rành cho lắm, mà tôi nghĩ tại sao lại phải cài theo đường dẫn đó? Tôi cài theo đường dẫn bất kỳ (Ví dụ: C:\Program Files\GPE chẳng hạn), sau đó đăng ký cái Add-Ins với Windows là xong khỏi phải cài vào đường dẫn AddIns cho mệt vậy. Bạn có thể xem thử cách tôi làm cho file này.
http://www.mediafire.com/file/dy44jeir4i30y5i/VnTools-Setup+Ver+2.exe
Còn file để tạo Setup cho Inno Setup thì bạn tham khảo chổ này.
https://www.xltoolbox.net/blog/2013/12/using-innosetup-to-install-excel-addins.html
https://github.com/bovender/ExcelAddinInstaller
 
Cái vụ cài theo đường dẫn đó thì mình không rành cho lắm, mà tôi nghĩ tại sao lại phải cài theo đường dẫn đó? Tôi cài theo đường dẫn bất kỳ (Ví dụ: C:\Program Files\GPE chẳng hạn), sau đó đăng ký cái Add-Ins với Windows là xong khỏi phải cài vào đường dẫn AddIns cho mệt vậy. Bạn có thể xem thử cách tôi làm cho file này.
http://www.mediafire.com/file/dy44jeir4i30y5i/VnTools-Setup+Ver+2.exe
Còn file để tạo Setup cho Inno Setup thì bạn tham khảo chổ này.
https://www.xltoolbox.net/blog/2013/12/using-innosetup-to-install-excel-addins.html
https://github.com/bovender/ExcelAddinInstaller

em cám ơn ạ, full hd luôn, e nghiên cứu dần
 
post cho ai
bác cho em hỏi tý ạ.
em muốn cài vào đường dẫn sau thì làm thế nào ạ, cái inno setup nó ko chịu, ko biết phải code thế nào cho đúng, Cảm ơn ạ

DefaultDirName=c:\users\%username%\AppData\Roaming\Microsoft\AddIns

Em cám ơn bác "giaiphap" nhé

post cho ai cần ạ:
DefaultDirName={userappdata}\Microsoft\AddIns\

đăng ký cái Add-Ins với Windows, dùng đoạn *bat sau:

@echo off
setlocal enabledelayedexpansion
set AddinList[1]="c:\users\%username%\AppData\Roaming\Microsoft\AddIns\Add-In1.xlam"
set Quiet=0
set LastIndex=10
set Key=HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options
for /f "tokens=1* delims==" %%a in ('set AddinList[') do (
if %Quiet%==0 echo Processing '%%b'
set Value=
set Data=%%b
set Data=!Data:"=\"!
for /l %%i in (0, 1, %LastIndex%) do (
if "!Value!"=="" (
if %%i==0 (set TestValue=OPEN) else (set TestValue=OPEN%%i)
if %Quiet%==0 echo Checking !TestValue! ...
reg.exe query "%Key%" /v "!TestValue!" >NUL 2>&1
if errorlevel 1 (
if %Quiet%==0 echo ... free.
set Value=!TestValue!
) else (
if %Quiet%==0 echo ... already used.
)
)
)
if "!Value!"=="" (
echo Unable to find an empty index in the range of 0..%LastIndex%
goto :eof
) else (
reg.exe add "%Key%" /v "!Value!" /t REG_SZ /d "!Data!" /f >NUL
if errorlevel 1 (
echo ERROR: Could not create value '!Value!' with data '!Data!' at '%Key%'
) else (
if %Quiet%==0 echo Value successfully added.
)
)
)
 
post cho ai


Em cám ơn bác "giaiphap" nhé

post cho ai cần ạ:
DefaultDirName={userappdata}\Microsoft\AddIns\

đăng ký cái Add-Ins với Windows, dùng đoạn *bat sau:

@echo off
setlocal enabledelayedexpansion
set AddinList[1]="c:\users\%username%\AppData\Roaming\Microsoft\AddIns\Add-In1.xlam"
set Quiet=0
set LastIndex=10
set Key=HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options
for /f "tokens=1* delims==" %%a in ('set AddinList[') do (
if %Quiet%==0 echo Processing '%%b'
set Value=
set Data=%%b
set Data=!Data:"=\"!
for /l %%i in (0, 1, %LastIndex%) do (
if "!Value!"=="" (
if %%i==0 (set TestValue=OPEN) else (set TestValue=OPEN%%i)
if %Quiet%==0 echo Checking !TestValue! ...
reg.exe query "%Key%" /v "!TestValue!" >NUL 2>&1
if errorlevel 1 (
if %Quiet%==0 echo ... free.
set Value=!TestValue!
) else (
if %Quiet%==0 echo ... already used.
)
)
)
if "!Value!"=="" (
echo Unable to find an empty index in the range of 0..%LastIndex%
goto :eof
) else (
reg.exe add "%Key%" /v "!Value!" /t REG_SZ /d "!Data!" /f >NUL
if errorlevel 1 (
echo ERROR: Could not create value '!Value!' with data '!Data!' at '%Key%'
) else (
if %Quiet%==0 echo Value successfully added.
)
)
)
xài đơn giản như sau đi ... nhìn code thấy kinh
Mã:
Public Sub CheckAddins()
    Dim MyFile As String, Regkey As String, Ver As String
    Ver = Application.Version
    MyFile = """Tools Excel.xlam"""
    Regkey = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Ver & "\Excel\Options\OPEN"
    WriteRegKey Regkey, MyFile
End Sub
 
xài đơn giản như sau đi ... nhìn code thấy kinh
Mã:
Public Sub CheckAddins()
    Dim MyFile As String, Regkey As String, Ver As String
    Ver = Application.Version
    MyFile = """Tools Excel.xlam"""
    Regkey = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Ver & "\Excel\Options\OPEN"
    WriteRegKey Regkey, MyFile
End Sub

đọc rất dễ hiểu nhưng đoạn vb này copy vô đâu để chạy vậy bác, cho vô vba excel ạ, e nghĩ không ổn
 
copy File Add-in.xlam vô nơi sau xong chạy code đó trên Excel
Mã:
MsgBox Application.UserLibraryPath
Lưu ý thay đổi tên file *.xlam cho đúng

thế copy đoạn code của bác vô vba, sau đó mở excel mới thực thi được cái code.
Nhưng mà em nghĩ, mục đính mình đang cần kích hoạt cái add-in mà không cần phải mở excel lên mà bác.
 
thế copy đoạn code của bác vô vba, sau đó mở excel mới thực thi được cái code.
Nhưng mà em nghĩ, mục đính mình đang cần kích hoạt cái add-in mà không cần phải mở excel lên mà bác.
vậy thì tự làm lấy trên VB6 như mình viết bài 1 đó hay theo @giaiphap mà làm vậy đi ... loanh quanh chi cho mệt
 
bác @giaiphap ơi, cho em hỏi tý, sao cái file cài đặt của bác lúc khởi chạy, cái phần mềm diệt virus nó ko hỏi. Còn file em tạo, lúc khởi chạy cái phần mềm diệt virus nó cứ báo là malware. Bác làm thế nào vậy ạ, thanks bác
em upgrate cái inno setup lên phiên bản mới nhất coi sao
 
bác @giaiphap ơi, cho em hỏi tý, sao cái file cài đặt của bác lúc khởi chạy, cái phần mềm diệt virus nó ko hỏi. Còn file em tạo, lúc khởi chạy cái phần mềm diệt virus nó cứ báo là malware. Bác làm thế nào vậy ạ, Cảm ơn bác
em upgrate cái inno setup lên phiên bản mới nhất coi sao
Tôi đâu biết cái file setup bạn tạo ra có cái quáy gì đâu mà trả lời, có khi các file bạn đưa vào Setup nó có con virus to tướng thì sao. Bạn đưa nguyên cái mâm dữ liệu bạn tạo ra file setup kể cả file inno setup (File *.iss) lên đây mình xem thử cho. Mà nên tạo chủ đề mới chứ cái này của bác @kieu manh vô đây hỏi nhiều vấn đề không liên quan tôi e là không phù hợp.
 
Mấy ngày nay Mình ngồi nghiên Cứu cách tạo Menu RibbonTiếng việt có dấu cho Office ...

Đọc và nghiên cứu rất nhiều tài liệu và Code trên GPE + Internet ....

Mạnh Copy Tổng hợp lại nghiên cứu và Viết thành 1 Add-Ins tạo Menu Ribbon Tiếng viết có dấu

Sử dụng đơn giản nhanh và không phải Cài đặt vào máy Mọi cái Tích hợp vào Excel hết cứ vậy là xài ...

1/ Xét thấy cũng tạm được Úp lên đây cho Bạn nào có nhu cầu thì tải về mà xài trong đó kèm theo Tools XYZ ...

Mạnh copy Code từ trên Internet về làm...

2/ Quá trình sử dụng nếu có gì không ổn thì báo lại mình điều chỉnh code

3/ Mình đặt Pass UnviewProject cho File Add-Ins nếu Bạn nào Mở được thì cứ mở Banh ta lông ra mà coi ...

Nếu không mở được tại đây báo cho Mình biết ... Mình sẻ úp File Excel không Pass lên cho Mà điều chỉnh...

4/ Mã nguồn Mạnh Copy Từ Internet và viết thêm một số ...Vì vậy nếu có ai đó cho Rằng Copy Code thì cũng đúng 60% ...vậy đi nha ...xúc tích ngắn gọn vậy cho nhanh....+-+-+-+

5/ Mình để 2 File trong Một Folder ...chạy File ToolsExcel_Setup.exe nó sẻ giải nén File EncryptVBA.dll vào System32 và Copy File Tools Excel.xlam vào Folder Add-Ins ....

6/ Nếu Máy Từ Win7 trở lên chạy File ToolsExcel_Setup.exe Mà UAC đang ON thì Chọn Yes

7/ Nếu không thích xài nữa tìm 2 file đó Delete nó đi ...Xong phim

8/ File RibbonTV Creator Ver2.rar xem chi tiết tại Bài #69 Link Sau

http://www.giaiphapexcel.com/forum/showthread.php?118088-Add-Ins-Tạo-Menu-RibbonTiếng-Việt-Có-Dấu-Cho-Office/page7

Chúc Vui vẻ và Tạo ra cho Mình một Ribbon Tiếng Việt Tuyệt đẹp Hữu ích ...
Và chia sẻ cho Mọi Người cùng xài Nha .............--=0|||||--=--

Kiều Mạnh

Em có tạo thử 1 nút, nhờ anh hỗ trợ code có thể ẩn hiện "Tab RIBBON Hệ Thống" cho nút bấm như file đính kèm
Em cám ơn
 

File đính kèm

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

Back
Top Bottom