Các bước để tạo một Add-Ins hoàn chỉnh.

Liên hệ QC
Bài #17 làm kiểu office2003 đó nha ... chạy từ 2003 to 2019 đó
View attachment 239246


Bài 1 #1 làm XML đó nha .. chạy từ Office 2010 to 2019
View attachment 239247

Vẫn câu nói cũ ... Trên GPE có hết rồi he :p:p
Cái này mới nghiên cứu thấy trong C# dùng Exceldna vẫn làm được Menu cho Excel 2003 kết hợp luôn Ribbon cho 2007 - 2019 luôn.
 
Cái này mới nghiên cứu thấy trong C# dùng Exceldna vẫn làm được Menu cho Excel 2003 kết hợp luôn Ribbon cho 2007 - 2019 luôn.
Thực ra để làm được thì viết trên Tools nào cũng làm được cả

1/ VD: trên VB6 mạnh viết cho 2003 hay 2010 to 2019 chạy ok
2/ Trên Delphi cũng thế Mạnh cũng viết cho 2003 hay 2010 to 2019 chạy OK ( nếu ai hỏi mục này vào thớt Delphi có code đó xem kỹ trong đó nó có cái If 2003 thì chạy 2003 else chạy khác )
3/ ngay đến viết Ribbon hay CustomTaskPane thì trên VB6 hay Delphi dư sức viết vậy tại sao ta lại Phải nhờ tới cái Add-in Express™ để viết nó
....
....
Vấn đề cuối cùng cho 1 người nghiên cứu và viết code là tại sao phải dùng bổ trợ của bên thứ 3 để viết nó mà ko tự viết ngay trên Tools mình đang sử dụng

VD1: xài chính VB6 xong viết luôn TaskPane.OCX hay menu Ribbon cho Excel
VD2: xài chính Delphi viết như mục 1
VD3: xài VS viết như mục 1,2...
...
Trên VB6 Mạnh viết như mục 1 ok
Trên Delphi mạnh tự tay viết Ribbon menu OK mà ko phải xài cái bổ trợ của bên thứ 3 như Add-in Express™

Cấu trúc Custom menu cho dù viết trên Tools gì đi nữa thì cũng phải tuân thủ theo tiêu chí của Bill
VD trên VBA
Mã:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon startFromScratch="false">
    <tabs>
      <!-- chi tiet noi dung lenh tao Ribbon-->
      <tab id="NetworkTCPIP" label="NetworkDatabase">
        <group id="GROU1" label="Get Database">
          <button id="GetDatabase" onAction="onActionBUT" size="large" imageMso="ImportMoreMenu" label="Show Form Database" screentip="Tùy Chọn Lấy Dữ Liệu" supertip="Access Và Excel"/>
        </group>
        <group id="GROU3" label="Server MS">
          <button id="SQLServer" onAction="onActionBUT" size="large" imageMso="ViewsAdpDiagramSqlView" label="Server Databases" screentip="Lấy Dữ Liệu Từ Server Ms" supertip="SQL Server"/>
        </group>
        <group id="GROU2" label="Network - TCPIP">
          <button id="Server" onAction="onActionBUT" size="large" imageMso="RemoveDuplicates" label="Server" screentip="NetworkTCPIP - Server" supertip="Lấy Dữ Liệu Phương Thức TCPIP"/>
          <separator id="SEPA1"/>
          <button id="Client" onAction="onActionBUT" size="large" imageMso="MeetingsWorkspace" label="Client" screentip="NetworkTCPIP - Client" supertip="Lấy Dữ Liệu Phương Thức TCPIP"/>
        </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>

VD trên VB6
Mã:
NDung1 = "<customUI xmlns=""http://schemas.microsoft.com/office/2006/01/customui"">"& _
          "<ribbon>"& _
          "<tabs>"& _
          "<tab id=""NetworkTCPIP"" label=""NetworkDatabase"">"& _
          "<group id=""GROU1"" label=""Get Database"">"& _
          "<button id=""GetDatabase"" onAction=""onActionBUT"" size=""large"" imageMso=""ImportMoreMenu"" label=""Show Form Database"" screentip=""T&#249;y Ch&#7885;n L&#7845;y D&#7919; Li&#7879;u"" supertip=""Access V&#224; Excel""/>"& _
          "</group>"& _
          "<group id=""GROU3"" label=""Server MS"">"& _
          "<button id=""SQLServer"" onAction=""onActionBUT"" size=""large"" imageMso=""ViewsAdpDiagramSqlView"" label=""Server Databases&#8203;"" screentip=""L&#7845;y D&#7919; Li&#7879;u T&#7915; Server Ms"" supertip=""SQL Server""/>"& _
          "</group>"& _
          "<group id=""GROU2"" label=""Network - TCPIP"">"& _
          "<button id=""Server"" onAction=""onActionBUT"" size=""large"" imageMso=""RemoveDuplicates"" label=""Server"" screentip=""NetworkTCPIP - Server"" supertip=""L&#7845;y D&#7919; Li&#7879;u Ph&#432;&#417;ng Th&#7913;c TCPIP""/>"& _
          "<separator id=""SEPA1""/>"& _
          "<button id=""Client"" onAction=""onActionBUT"" size=""large"" imageMso=""MeetingsWorkspace"" label=""Client"" screentip=""NetworkTCPIP - Client"" supertip=""L&#7845;y D&#7919; Li&#7879;u Ph&#432;&#417;ng Th&#7913;c TCPIP""/>"& _
          "</group>"& _
          "</tab>"& _
          "</tabs>"& _
          "</ribbon>"& _
          "</customUI>"
sRibbonXML =  NDung1

VD trên Delphi
Mã:
result := '<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">'#13#10 +
'<ribbon startFromScratch="false">'#13#10 +
'    <tabs>'#13#10 +
'      <tab id="NetworkTCPIP" label="NetworkDatabase">'#13#10 +
'        <group id="GROU1" label="Get Database">'#13#10 +
'          <button id="GetDatabase" onAction="onActionBUT" size="large" imageMso="ImportMoreMenu" label="Show Form Database" screentip="T&#249;y Ch&#7885;n L&#7845;y D&#7919; Li&#7879;u" supertip="Access V&#224; Excel"/>'#13#10 +
'        </group>'#13#10 +
'        <group id="GROU3" label="Server MS">'#13#10 +
'          <button id="SQLServer" onAction="onActionBUT" size="large" imageMso="ViewsAdpDiagramSqlView" label="Server Databases&#8203;" screentip="L&#7845;y D&#7919; Li&#7879;u T&#7915; Server Ms" supertip="SQL Server"/>'#13#10 +
'        </group>'#13#10 +
'        <group id="GROU2" label="Network - TCPIP">'#13#10 +
'          <button id="Server" onAction="onActionBUT" size="large" imageMso="RemoveDuplicates" label="Server" screentip="NetworkTCPIP - Server" supertip="L&#7845;y D&#7919; Li&#7879;u Ph&#432;&#417;ng Th&#7913;c TCPIP"/>'#13#10 +
'          <separator id="SEPA1"/>'#13#10 +
'          <button id="Client" onAction="onActionBUT" size="large" imageMso="MeetingsWorkspace" label="Client" screentip="NetworkTCPIP - Client" supertip="L&#7845;y D&#7919; Li&#7879;u Ph&#432;&#417;ng Th&#7913;c TCPIP"/>'#13#10 +
'        </group>'#13#10 +
'      </tab>'#13#10 +
'    </tabs>'#13#10 +
'  </ribbon>'#13#10 +
'</customUI>';

trên GPE này có nhiều code rất hay VD như dòng sau VD trên Delphi và VB6
Mã:
supertip="L&#7845;y D&#7919; Li&#7879;u Ph&#432;&#417;ng Th&#7913;c TCPIP"/>'#13#10

Tại sao Mạnh làm vậy ... vì trên Delphi 7 nó không hổ trợ Unicode còn Delphi 10 thì có lại ko cần nữa hay ta tạo Custom ngoài trong File *.txt thì lại rất cần nó vì trên file txt viết tiếng Việt có dấu nó hay lỗi ( code viết ra cấu trúc như vậy đã có trên GPE cụ thể Anh @batman1 viết là 1 sub Mạnh Copy lại viết thành 1 hàm ... code đó tìm Google mờ mắt luôn vậy trên GPE gần như có hết tại sao ko gắp ra dùng thôi ??)
...
Vậy nhìn vào 3 VD trên ta sẻ thấy cái gì chung nhất và khác nhau cái gì từ đó ta có cái nhìn bao quát nhất mà viết code
Cuối cùng mạnh khuyên còn nghe hay ko thì tùy Nến cố giắng tự viết trên Tools mình xài viết code và hạn chế xài đồ của bên thứ 3 cho chính tools đó
 
Lần chỉnh sửa cuối:
Lang thang trên Google Copy được file sau của tây Nó tạo Menu Ribbon đấy ( Úp chung vào đây cho nó gọn )
Cái hay của File này là nó chèn Ảnh ngoài vào menu Ribbon chạy tốt không báo lỗi lần đầu mình mở nó lên ... ai đam mê mò đi nha
Sẻ có Bạn hỏi tải về ko có xài được vv và mây mây ... câu trả lời là tại Bạn chưa biết xài thế thôi ... đam mê thì phải mò nó thì nó mới lòi ra cái hay mà tìm kiếm và viết code -0-0-0-Mạnh tải về nó cũng ko có hướng dẫn chi hết đó !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!????????????????????
 

File đính kèm

  • RibbonWizard2.rar
    90.6 KB · Đọc: 55
@giaiphap bác có thể cho em xin lại file .iss được không, em tải file Addin.rar về trong đó chỉ có file chm và file xlam thôi
 
@giaiphap bác có thể cho em xin lại file .iss được không, em tải file Addin.rar về trong đó chỉ có file chm và file xlam thôi
Bạn tải ở bài viết #10
 
@giaiphap cảm ơn bác nhiều, em tải được file đó rồi
 
6. Tạo file cài đặt cho Add-Ins

Chúng ta sẽ tiếp tục với bài viết cuối cùng là tạo file cài đạt cho Add-Ins.
Trước hết hãy tải file Add-Ins.rar (Đường link phía dưới) về và giải nén tệp tin vào ổ đĩa C trong máy tính. Khi giải nén xong thì sẽ được thư mục Add-Ins trong đĩa C gồm 3 tệp tin: Excel_Add_Ins.xlam, help.chm và tệp tin Setup Add-Ins.iss (Đây là file tạo Setup của Inno setup).
View attachment 237962

Nháy đúp chuột vào tệp tin Setup Add-Ins.iss, phần mềm Inno Setup sẽ mở tệp tin này lên.
View attachment 237963
Trên giao diện này ta có thể điều chỉnh các mục sau cho phù hợp.
AppName: Tên ứng dụng cài đặt.
AppVersion: Phiên bản ứng dụng.
AppVerName: Tên ứng dụng kèm phiên bản của ứng dụng.
DefaultDirName: Thư mục mặc định khi cài ứng dụng. Chổ {autopf}\ để nguyên, chỉ được phép sửa chổ ToolsExcel thôi nhé.
VersionInfoVersion: Mục này có thể không quan tâm.
DefaultGroupName: Tên nhóm mặc định khi tạo trong Program file.
OutputDir: Đường dẫn đến thư mục lưu file khi tạo xong file Setup.
OutputBaseFilename: Tên file setup khi tao ra.
Những phần còn lại cứ để mặc định. Nếu muốn tìm hiểu thêm về các lệnh trong Inno setup có thể tham khảo ở link sau: http://caulacbovb.com/forum/viewtopic.php?t=775
Trên giao diện Inno setup nhấn tổ hợp phím Ctrl + F9 hoặc vào Menu Build và chọn Compile.
View attachment 237964
Đợi cho Inno Setup Build xong và sẽ thông báo hoàn thành như hình dưới.
View attachment 237965
Ta vào thư mục C:\Add-Ins sẽ thấy xuất hiện file ToolsExcel_Setup.exe, đây chính là file cài đặt Add-Ins của mình.
View attachment 237966
Khi muốn chia sẻ Add-Ins này cứ việc copy file ToolsExcel_Setup.exe cho người dùng để họ cài vào máy là xong.
Để kiểm tra thành quả hãy nháy đúp chuột vào tệp tin ToolsExcel_Setup.exe và cài đặt thử. Khi cài xong và mở Excel lên để kiểm tra, có thể mở file mới và test thử hàm VND, BoDau và các lệnh trong đó có hoạt động không.
OK, vậy là tôi đã hướng dẫn xong các bước để tạo một Add-Ins hoàn chỉnh để có thể chia sẻ Add-Ins mới mọi người. Nếu trong quá trình thực hiện có chổ nào chưa được hoặc có những góp ý gì có thể nêu ở đây, tôi sẽ trả lời trong khả năng và hiểu biết của mình.
Chào bác, em có một file addin của Powerpont, sau khi mày mò để tạo file exe bằng inno setup thì powerpoint nó không tự nhận addin. Đọc được bài này của bác em vui gần chết mà đến đoạn hướng dẫn bác có làm thành file mất nên em không hiểu cách để tạo ra nó bằng từng bước trên phần mềm inno setup. Mong bác hướng dẫn cách làm! Cảm ơn bác rất rất nhiều
 
Chào bác, em có một file addin của Powerpont, sau khi mày mò để tạo file exe bằng inno setup thì powerpoint nó không tự nhận addin. Đọc được bài này của bác em vui gần chết mà đến đoạn hướng dẫn bác có làm thành file mất nên em không hiểu cách để tạo ra nó bằng từng bước trên phần mềm inno setup. Mong bác hướng dẫn cách làm! Cảm ơn bác rất rất nhiều
Cái này là viết thêm code (Tui chỉ sưu tầm) vào chứ cho nó làm tự động chắc không được. File này chỉ dùng cho Excel còn File PowerPoint thì không được nhé. Vì Excel thì nó tạo Key ở đường dẫn HKEY_CURRENT_USER\Software\Microsoft\Office\<Tùy phiên bản Office>\Excel\Options với giá trị Open là đường dẫn đến file Add-Ins excel, còn Powerpoint thì không được do PowerPoint quản lý Add-Ins theo cách khác, nó phải tạo Key ở đường dẫn HKEY_CURRENT_USER\Software\Microsoft\Office\<Tùy phiên bản Office>\PowerPoint\AddIns và tạo thêm 2 giá trị AutoLoad và Path. Đó chỉ là gợij ý bạn có thể nghiên cuiwus theo cách này, còn tui thì chưa nghiên cứu nên không thể giúp được bạn.
 
View attachment 237913
Nhấn Ctrl + S để lưu đoạn code lại, nhấn Alt + F11 để trở lại giao diện Excel, bây giờ nhìn trên thanh Ribbon ta đã thấy thẻ Tab có tên Công cụ cho Excel, nháy chuột vào thẻ này ta sẽ thấy 3 nút lệnh như hình dưới.
View attachment 237914
- Thử nháy chuột vào nút lệnh Ẩn sheet xem đã có tác dụng chưa, tương tự nút lệnh Hiển thị sheet ẩn xem có mở UserForm lên không? Riêng nút lệnh Hướng dẫn sử dụng chỉ hiển thị một thông báo (Do chúng ta chưa tạo file Help nên tạm thời để vậy).
- Chúng ta vừa tạo xong 3 nút lệnh trên Ribbon để điều khiển các lệnh trong Add-Ins, tạm thời Add-Ins đã có thể hoạt động nhưng chưa hoàn thiện, bài tiếp theo chúng ta sẽ tiến hành tạo file help cho Add-Ins.
Mình làm theo hướng dẫn của bác thì gặp lỗi này bác xem sửa giúp mình lỗi ở đâu.
1688702109167.png
 

File đính kèm

  • TS_add_in.xlsm
    32 KB · Đọc: 2
Web KT
Back
Top Bottom