Tìm tool hoặc code vba để cài addin excel

Liên hệ QC

YêuCN

Thành viên thường trực
Tham gia
17/7/19
Bài viết
360
Được thích
123
Cho mình hỏi có tool hoặc code vba nào có thể:
-Cài hoặc gỡ một lúc 1 hoặc nhiều addin trong excel không ?
Ghi chú:
-Cài các file addin trong cùng thư mục.
-Các addin đuôi xla,xlam,xll
 
Bạn nói hơi khó hiểu, bạn hỏi về đường dẫn vào folder addins trên các máy có user khác nhau à?
Giả sử bạn có hichic.xlam. Khi bạn Export all customizations thì Excel sẽ tạo ra tập tin Excel customizations.exportedUI, mà trong "lõi" có rất nhiều đoạn kiểu
C:_Users_<tên tài khoản trên máy hiên hành, vd. XYZ>_AppData_Roaming_Microsoft_AddIns_hichic.xlam.

Tập tin là do Excel soạn, các đường dẫn tới XLAM trong tập tin là do Excel chèn vào. Tác giả không tự tạo tập tin và cũng không tự ghi đường dẫn. Khi mang sang máy khác mà Import tập tin Excel customizations.exportedUI thì vẫn được nhưng khi click vào menu trên ribbon thì Excel kêu là không tìm thấy

C:_Users_<tên tài khoản trên máy hiên hành, vd. XYZ>_AppData_Roaming_Microsoft_AddIns_hichic.xlam.

Không tìm thấy thì đúng rồi vì trên máy Import làm gì có thư mục <tên tài khoản trên máy hiên hành, vd. XYZ>. Điều này người hỏi biết rất rõ, không cần giải thích cho họ. Người hỏi cũng biết cách xoay xở để không còn lỗi

- Nếu làm thủ công thì em phải mở file UI bằng NotePad sau đó đổi user bằng Ctrl+H (lý do là Excel lúc cài add-in nó đưa về ổ C).

bằng cách: mở tập tin trong notepad -> tìm tất cả các

C:_Users_<tên tài khoản trên máy hiên hành, vd. XYZ>_AppData_Roaming_Microsoft_AddIns_hichic.xlam

và thay bằng

C:_Users_<tên tài khoản trên máy import, vd. ABC>_AppData_Roaming_Microsoft_AddIns_hichic.xlam

Như vậy người hỏi biết là phải chỉnh sửa đường dẫn, và họ biết chỉnh sửa. Người ta không cần ai phải giải thích về nguyên nhân, sửa ở đâu và sửa như thế nào vì họ đã biết. Chỉ là họ đang thao tác chỉnh sửa bằng tay, bây giờ họ muốn ai đó giúp họ viết code. Thế thôi.

Giờ có thể thêm 1 cái code để chèn "Excel Customizations.exportedUI" tự động thay đổi user trong file đó được không?

Chỉ ra nguyên nhân để làm gì khi họ đã biết rất rõ, thậm chí họ còn biết sửa, chỉ là đang làm bằng tay.

Nếu muốn làm kiểu thay thế chuỗi như làm bằng notepad thì vd. (ví dụ thôi): đọc nội dung Excel customizations.exportedUI vào chuỗi TEXT -> dùng Replace để đổi chuỗi -> ghi chuỗi TEXT vào tập tin Excel customizations.exportedUI.
 
Lần chỉnh sửa cuối:
Upvote 0
Tập tin là do Excel soạn, các đường dẫn tới XLAM trong tập tin là do Excel chèn vào. Tác giả không tự tạo tập tin và cũng không tự ghi đường dẫn. Khi mang sang máy khác mà Import tập tin Excel customizations.exportedUI thì vẫn được nhưng khi click vào menu trên ribbon thì Excel kêu là không tìm thấy
Sau khi thực hành lại thì em đã hiểu được vấn đề. Nhưng thật sự em chưa làm kiểu này bao giờ nên chưa hiểu cách tạo ra cái file UI cho lắm. Nếu là file xlam đó đã có sẵn ribbon thì chắc hẳn copy file làm addins luôn cho lẹ, vậy trường hợp còn lại là file xlam chưa có ribbon mà lại tạo một file xlsm rồi viết code tạo ribbon gọi từ file xlam đó, sau mới export file UI phải không bác nhỉ? Mà tạo một file khác gọi code từ xlam làm ribbon cũng lạ lẫm quá. Em chưa làm bao giờ. Chỉ biết viết trực tiếp trên xlam thôi
 
Upvote 0
Sau khi thực hành lại thì em đã hiểu được vấn đề. Nhưng thật sự em chưa làm kiểu này bao giờ nên chưa hiểu cách tạo ra cái file UI cho lắm. Nếu là file xlam đó đã có sẵn ribbon thì chắc hẳn copy file làm addins luôn cho lẹ, vậy trường hợp còn lại là file xlam chưa có ribbon mà lại tạo một file xlsm rồi viết code tạo ribbon gọi từ file xlam đó, sau mới export file UI phải không bác nhỉ? Mà tạo một file khác gọi code từ xlam làm ribbon cũng lạ lẫm quá. Em chưa làm bao giờ. Chỉ biết viết trực tiếp trên xlam thôi
Tôi không dùng cái này bao giờ nên tôi chỉ dám ĐOÁN MÒ như sau. Có thể những điều tôi viết là vô nghĩa, khỏi phải ném đá.

Tôi nghĩ là Customize ribbon và add-in xlam là 2 thứ khác nhau. Tức Customize ribbon không nhất thiết dính dáng tới add-in xlam. Bạn mới cài Excel thì bạn làm gì đã có xlam nào CỦA MÌNH, đúng không. Nhưng bạn có thể bật thẻ Developer (mặc định không bật), thêm bớt các command trong các thể đã có, bật / tắt các thẻ đã có vd. tắt thẻ Insert. Tất cả những cái đó là Customize ribbon. Những việc này làm gì dính dáng tới xlam nào?

Khi bạn vd. bật Developer, tắt Insert, thêm bớt các command vào một số thẻ, và bạn thêm 1 add-in xlam. Khi sang máy khác họ mới cài Excel và chưa từng chỉnh sửa gì. Họ sẽ có thẻ Insert nhưng không có thẻ Developer và các command được thêm bớt trên máy bạn. Nếu bạn chỉ cho người ta xlam thì họ sẽ có thêm vd. thẻ mới trên trên ribbon. Còn lại họ vẫn có thẻ Insert nhưng không có thể Developer và các command được thêm bớt như trên máy bạn. Đó là điều bạn không muốn. Bạn muốn trên máy khác có y hệt như trên máy bạn cơ. Tôi ĐOÁN MÒ là có thể khi cung cấp cho họ Excel Customizations.exportedUI với đường dẫn đã chỉnh sửa thì họ sẽ có y như trên máy bạn, tức không có thẻ Insert nhưng có Developer, và các command được thêm bớt vào một số thẻ. Đây mới chính là ý muốn của bạn.

Dù gì thì tôi đã thử: phải chuột trên ribbon -> chọn Customize the ribbon -> combobox Import/Export -> chọn Export all customizations -> lưu với tên Excel Customizations.exportedUI. Nhưng khi mở bằng notepad thì chỉ có nội dung là <mso:cmd app="Excel" dt="1" />

Có gì đó không như mong đợi. Nhưng tôi không quan tâm nữa vì tôi không cần cái này. Cũng không muốn ĐOÁN MÒ nữa.

Cách xuất tập tin Excel Customizations.exportedUI thì bạn phải hỏi tác giả bài #20 vì tôi thấy tập tin của họ có nội dung.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi không dùng cái này bao giờ nên tôi chỉ dám ĐOÁN MÒ như sau. Có thể những điều tôi viết là vô nghĩa, khỏi phải ném đá.

Tôi nghĩ là Customize ribbon và add-in xlam là 2 thứ khác nhau. Tức Customize ribbon không nhất thiết dính dáng tới add-in xlam. Bạn mới cài Excel thì bạn làm gì đã có xlam nào CỦA MÌNH, đúng không. Nhưng bạn có thể bật thẻ Developer (mặc định không bật), thêm bớt các command trong các thể đã có, bật / tắt các thẻ đã có vd. tắt thẻ Insert. Tất cả những cái đó là Customize ribbon. Những việc này làm gì dính dáng tới xlam nào?

Khi bạn vd. bật Developer, tắt Insert, thêm bớt các command vào một số thẻ, và bạn thêm 1 add-in xlam. Khi sang máy khác họ mới cài Excel và chưa từng chỉnh sửa gì. Họ sẽ có thẻ Insert nhưng không có thẻ Developer và các command được thêm bớt trên máy bạn. Nếu bạn chỉ cho người ta xlam thì họ sẽ có thêm vd. thẻ mới trên trên ribbon. Còn lại họ vẫn có thẻ Insert nhưng không có thể Developer và các command được thêm bớt như trên máy bạn. Đó là điều bạn không muốn. Bạn muốn trên máy khác có y hệt như trên máy bạn cơ. Tôi ĐOÁN MÒ là có thể khi cung cấp cho họ Excel Customizations.exportedUI với đường dẫn đã chỉnh sửa thì họ sẽ có y như trên máy bạn, tức không có thẻ Insert nhưng có Developer, và các command được thêm bớt vào một số thẻ. Đây mới chính là ý muốn của bạn.

Dù gì thì tôi đã thử: phải chuột trên ribbon -> chọn Customize the ribbon -> combobox Import/Export -> chọn Export all customizations -> lưu với tên Excel Customizations.exportedUI. Nhưng khi mở bằng notepad thì chỉ có nội dung là <mso:cmd app="Excel" dt="1" />

Có gì đó không như mong đợi. Nhưng tôi không quan tâm nữa vì tôi không cần cái này. Cũng không muốn ĐOÁN MÒ nữa.

Cách xuất tập tin Excel Customizations.exportedUI thì bạn phải hỏi tác giả bài #20 vì tôi thấy tập tin của họ có nội dung.
Cũng vì em đã thử chứ không phải nói suông nên em mới nói cách tạo ra file UI đó hơi khó hiểu. Em đã tạo thử khi cài sẵn một file addins có sẵn các nút ribbon (chắc cũng như bác, nhưng không ra kết quả như mong đợi, không có bất cứ liên kết nào tới file addins đó cả). Vì cũng chưa làm bao giờ theo kiểu đó nên em muốn biết thêm, có thể sẽ không bao giờ cần dùng đến kiểu này nhưng học hỏi được thêm cái gì càng tốt. Cảm ơn bác đã trả lời nhé!
 
Upvote 0
Nếu muốn làm kiểu thay thế chuỗi như làm bằng notepad thì vd. (ví dụ thôi): đọc nội dung Excel customizations.exportedUI vào chuỗi TEXT -> dùng Replace để đổi chuỗi -> ghi chuỗi TEXT vào tập tin Excel customizations.exportedUI.
Rất cảm ơn bác đã giải thích giúp em*, do là học "lung tung ben" trên mạng, không theo bài bản như các nah các chú nên đặt đâu hỏi, diễn giải cũng không chi tiết nỗi.
Như em* đã nói, học lung tùn ben nên đã lạc vô bài này, hậu quả là đến giờ vẫn không thể tạo 1 cái add-in mà có sãn ribbon được, mà dùng cách mà bác nói là "rắc rối", thật sự thì với em đó là cách tốt nhất rồi và vì muốn cải thiện cách đó nên mượn topic này hỏi, ai ngờ sai từ cái cúc áo đầu tiên.

*cháu
 
Upvote 0
Rất cảm ơn bác đã giải thích giúp em*, do là học "lung tung ben" trên mạng, không theo bài bản như các nah các chú nên đặt đâu hỏi, diễn giải cũng không chi tiết nỗi.
Như em* đã nói, học lung tùn ben nên đã lạc vô bài này, hậu quả là đến giờ vẫn không thể tạo 1 cái add-in mà có sãn ribbon được, mà dùng cách mà bác nói là "rắc rối", thật sự thì với em đó là cách tốt nhất rồi và vì muốn cải thiện cách đó nên mượn topic này hỏi, ai ngờ sai từ cái cúc áo đầu tiên.

*cháu
Đúng rồi, cách thường làm là khi viết thành addins thì viết ngay các nút lệnh cho addins đó luôn, khi cài vào là sử dụng được ngay. Mà bạn mô tả lại cách bạn làm ra file UI đó được không?
 
Upvote 0
Đúng rồi, cách thường làm là khi viết thành addins thì viết ngay các nút lệnh cho addins đó luôn, khi cài vào là sử dụng được ngay. Mà bạn mô tả lại cách bạn làm ra file UI đó được không?
Em có đưa link trong bài #27, làm xong như link đó thì Export file UI:
1660534670379.png
 
Upvote 0
Em có đưa link trong bài #27, làm xong như link đó thì Export file UI:
View attachment 279934
Nếu đã add-in add vào trong máy rồi thì mình bỏ cái đường dẫn đi.
Thay vì
Mã:
C:\Users\nhtin\AppData\Roaming\Microsoft\AddIns\hamxamxi.xlam!ResizePictureCells
thì dùng
Mã:
hamxamxi.xlam!ResizePictureCells
Hay có thể hiểu cái Export file UI bạn chỉ cần vào Replace bỏ toàn bộ "C:\Users\nhtin\AppData\Roaming\Microsoft\AddIns\" là xong, vậy là máy nào vừa cài AddIn xong, load cái UI này vào là có thể dùng được.
Bài đã được tự động gộp:

Đây ạ, qua máy khác import ribbon thì sẽ lỗi đường dẫn.
Bạn htin1997 thử lại nhé.
 
Upvote 0
Web KT
Back
Top Bottom