Phương pháp tạo phần mềm dùng excel làm nền

Liên hệ QC

vu_tuan_manh_linh

linhvtm84@gmail.com
Tham gia
27/2/10
Bài viết
2,625
Được thích
1,893
Giới tính
Nam
Nghề nghiệp
Kỹ sư Kinh tế Xây dựng
Tôi đã đăng ký chủ đề này trong sinh nhật GPE 12, tuy nhiên do bận công việc đột xuất nên không tham dự được. Nay tôi tạo 1 chủ đề chia sẻ cùng mọi người, hy vọng sẽ giúp được những ai quan tâm, và mong nhận được những ý kiến đóng góp từ các chuyên gia.
____________
Chương trình của tôi gọi là phần mềm cũng được vì nó được cài đặt, được gỡ bỏ như những phần mềm khác, có icon riêng tạo trên desktop, pin to taskbar. Tuy nhiên cũng có thể gọi là 1 dự án VBA, vì chương trình chỉ đơn giản là 1 dự án VBA, 1 add-ins được mở bằng 1 file exe thay vì load một cách thông thường như các add-ins khác.

PHẦN 1: CHUẨN BỊ

Để chuẩn bị cho công việc tạo lập phần mềm, cần chuẩn bị các chương trình hỗ trợ như sau:

1. Excel phiên bản 2010 trở lên (đương nhiên rồi) để tạo file mẫu, tạo add-ins
2. Visual studio để viết file exe
3. Custom UI Editor để tạo menu ribbon cho excel
4. Phần mềm chống dịch ngược mã nguồn .net (tôi đang dùng ConfuserEx v0.6.0)
5. Phần mềm dịch ngược mã nguồn để kiểm tra xem mục số 4. đã hoạt động tốt chưa (Tôi đang dùng ILSpy và VB Decompiler)
6. Phần mềm tạo icon để tạo icon riêng cho phần mềm đang xây dựng (Tôi dùng iconlove)
7. Phần mềm đóng gói để đóng gói các tập tin, dự án thành file cài đặt (Tôi dùng Advanced Installer 13.2)

_____________
 
PHẦN 2: KẾT CẤU

Phần mềm tôi viết gồm các thành phần như sau:

1. Các file exe: bao nhiêu file là do nhu cầu của người viết. Tôi thường dùng 3 file:
- File thứ 1 chỉ dùng để khởi động file thứ 2 (tôi sẽ nói lý do sau)
- File thứ 2 dùng để khởi động excel, nạp các add-ins (dĩ nhiên trước đó cần các bước kiểm tra điều kiện đăng nhập)
- File thứ 3 là file updata, cho phép cập nhật các phiên bản mới.

2. Các file excel: gồm có:
- 1 file book1.xlsm trống hoàn toàn: lý do là khi khởi động excel, thay vì tìm đến khu vực cài đặt và khởi động excel thì tôi mở luôn 1 file trống có sẵn trong thư mục cài đặt phần mềm, khi mở dự án mới file book1 sẽ được tắt đi.

- Add-ins thứ 1chứa các dữ liệu dùng để truy xuất khi sử dụng phầm mềm: VD tôi làm phần mềm dự toán thì bộ định mức tôi để trong 1 add-ins. Lý do đưa ra đơn giản là tôi nhận thấy việc truy tìm dữ liệu từ 1 add-ins nhanh hơn từ 1 file excel, và add-ins khi được nạp thì chạy ngầm, không hiển thị gì cả.

- Add-ins thứ 2chứa tất cả các code thực thi của phần mềm. Code có thể được gọi ra từ 1 nút lệnh trên menu ribbon hoặc từ 1 sự kiện worksheet_Change, hoặc Worksheet_SelectionChange, hoặc Workbooks_Open.

- 1 file Temple: gọi là Temple nhưng tôi chỉ đặt tên là thế thôi, còn đuôi mở rộng là .xlsm, vì trong file sẽ chứa 1 số code đơn giản, code để gọi các code chính trong add-ins thứ 2. File này được thiết lập sẵn các biểu mẫu nhập dữ liệu, biểu mẫu báo cáo. Khi tạo dự án mới, file này sẽ được copy để tạo ra dự án mới.

3. Các file .txt: tôi sử dụng 1 vài file txt để làm một số việc sau:

- Chứa mã kích hoạt phần mềm: khi khởi động phần mềm, mã này sẽ được kiểm tra nếu đúng thì mới cho mở, sai thì không cho mở.

- Chứa thông số thời gian cài đặt: mục đích là dùng cho việc giới hạn thời gian sử dụng cho 1 số người dùng.

- Chứa đường link download: trong phần mềm của tôi có file updata, file này kiểm tra điều kiện cập nhật và tiến hành cập nhật từ việc kiểm tra các file từ URL chứa trong file txt này. Và vì tôi không có máy chủ (nếu có tôi cũng chưa đủ trình để làm việc với nó) nên tôi chọn cách đơn giản là tải các phiên bản cập nhật lên dropbox và share chúng.

- Chứa mã hiệu của phiên bản hiện tại: đương nhiên rồi, khi muốn biết phiên bản hiện tại có phải là phiên bản cũ không thì tôi tiến hành so sánh nó với phiên bản đang có trong dropbox thông qua các thông số chứa ở file txt này.

4. Các thành phần khác: dự án tôi làm chứa 1 loại font chữ đặc biệt nên tôi sử dụng High-logic Fontcreator Professional Edition 11.0.0.2400 để tạo ra font chữ này và tiến hành cài đặt nó trong lần chạy đầu tiên của phần mềm.
 
Lần chỉnh sửa cuối:
Upvote 0
Tiếc là hôm qua không gặp bạn, chủ đề hay đấy :)
Vâng, em cũng rất tiếc, nên này post chủ đề này để mọi người cùng thảo luận và góp ý giúp em! Em làm theo cách hiểu của riêng em nên chắc chắn còn nhiều vấn đề cần bổ sung hiệu chỉnh.
 
Upvote 0
Upvote 0
PHẦN 3: GIẢI THUẬT

Nghe từ Giải thuật có vẻ nghiêm trọng, nhưng ở đây tôi chỉ xin trình bày cách thức để phần mềm khởi động.

Như đã nói ở trên, tôi sử dụng 3 file exe, trong đó 2 file đóng vai trò khởi động, còn 1 file là updata. File exe thứ nhất chỉ có 1 nhiệm vụ duy nhất là khởi động file exe thứ 2.

Lý do đưa ra là: trong file exe thứ 2 của tôi chứa nhiều thông tin cần bảo mật gồm: địa chỉ mail, password của địa chỉ mail đó, password mở add-ins, các hàm mã hóa và giải mã để đăng nhập chương trình.

Chu trình hoạt động như sau:

Mở chương trình (exe1) --> exe2 --> Kết thúc.

Như vậy mọi vấn đề về khởi động chương trình của tôi đều nằm ở exe2. Do đó tôi tạo 1 kết cấu code với chu trình hoạt động như sau:

1. Kiểm tra điều kiện đăng nhập.

- Nếu sai thì hiện form đăng nhập: form này có các textbox, command button. Các textbox để ghi các thông tin như địa chỉ mail, số điện thoại. Khi điền đủ các thông tin thì chọn nút Gửi yêu cầu. Các thông tin về phần cứng của máy tính đang cài đặt sẽ được gửi ngầm vào địa chỉ mail của cá nhân tôi, thông tin gửi đi bao gồm địa chỉ mail của người đang cài đặt, số điện thoại, và dĩ nhiên cả 1 mã kích hoạt đã được mã hóa từ thông số phần cứng máy tính (mã hóa thế nào là do người viết tự đưa ra thuật toán). Khi gửi, chương trình cần 1 bước là kiểm tra xem máy tính có kết nối mạng không. Nếu không thì sẽ cảnh báo và thoát luôn. Khi có kết nối internet thì mới cho gửi yêu cầu kích hoạt. Khi tôi nhận được mail yêu cầu kích hoạt, tôi cần kiểm tra xem yêu cầu đó có đúng không, nếu đúng thì tôi sẽ gửi lại mã cho người đang cài đặt vào mail hoặc điện thoại. Người cài đặt copy mã đó và textbox đang chờ sẵn, và bấm nút kích hoạt. Thế là xong phần kích hoạt.

- Nếu đúng mã kích hoạt: chương trình kiểm tra tiếp xem còn hạn sử dụng không. Nếu còn thì mới cho khởi động. Không còn thì thoát và đưa ra cảnh báo cho người dùng.

2. Mở excel: như đã trình này, thay vì tìm đến excel để mở (vì người dùng có thể không cài đặt office ở thư mục mặc định) nên tôi dùng 1 file book1 trống hoàn toàn để đóng vai trò mở excel.

3. Mở các add-ins: các add-ins được mở thông qua exe2 thay vì nạp bằng lệnh addins.Install như trong VBA. Tôi xin trình bày sâu hơn 1 chút chỗ này vì nó liên quan đến bảo mật.

Thông thường add-ins được bảo vệ bằng mật khẩu Protect VBA Project, tuy nhiên mật khẩu này khá dễ phá trừ phi dùng 1 phần mềm có bản quyền để unviewable. Do đó tôi nghĩ ra 1 cách là add-ins này cần được bảo vệ bằng cả 2 cách là đặt password protect VBA và password open workbook. Đây là lý do exe2 cần được chống dịch ngược. Tôi nhận thấy khi được bảo vệ bằng cách này, add-ins sẽ không thể load 1 cách thông thường trừ phi passwork open workbook được phá bỏ. Và khi dùng cả 2 pass này thì việc dùng các phần mềm như XVI32 để phá pass VBA khá khó khăn. Không biết có phải trình độ của tôi còn kém cỏi không mà tôi chưa tìm ra cách để phá chính add-ins của mình.

4. Khi chương trình đã được mở, chỉ có nền excel trống (chính là book1). Để dùng tiếp chương trình thì cần thực hiện các lệnh tạo dự án mới hoặc mở dự án cũ. Lúc này, việc tạo dự án mới sẽ dùng đến file Temple.

Tạm thời những gì tôi muốn trình bày mới chỉ có thế này thôi. Khi mọi người trao đổi, sẽ bật ra được nhiều ý kiến khác!
Bài đã được tự động gộp:

Bạn chắc dùng VSTO phải không?
Em thực sự xin lỗi nhưng thuật ngữ VSTO em chưa hiểu là gì đâu ạ!! Những kiến thức em có và chia sẻ hoàn toàn là sự cóp nhặt và tự sáng tạo ra thôi ạ chứ không có học hành bài bản nào cả ạ!! Đó là khiếm khuyết lớn nhất của em!!
Bài đã được tự động gộp:

Một số hình ảnh về 1 phần mềm tôi đã viết:

GPE12_01.jpegGPE12_03.jpegGPE12_04.jpeg
 
Lần chỉnh sửa cuối:
Upvote 0
Như vậy là chỉ cần bẻ khóa add in thì mọi cánh cửa đều mở toan. Bảo mật như vậy thì không ăn thua đâu bạn. Tốt nhất là cho các code quan trọng vào một file DLL.
 
Upvote 0
Như vậy là chỉ cần bẻ khóa add in thì mọi cánh cửa đều mở toan. Bảo mật như vậy thì không ăn thua đâu bạn. Tốt nhất là cho các code quan trọng vào một file DLL.
Đúng rồi ạ! Em đã thử với dll nhưng chưa thành công lần nào cả! Cách làm của em là 1 phương pháp tiếp cận đơn giản cho những người có kiến thức ở mức trung bình để khai phá khái niệm PHẦN MỀM. Bản thân em cũng chưa vượt qua được mức cao hơn!
 
Upvote 0
mạnh đọc bài 1 thấy có mục 4 sau
4. Phần mềm chống dịch ngược mã nguồn .net (tôi đang dùng ConfuserEx v0.6.0)

mà sao ko nhét hết code vào File *.dll đi cho gọn nhỉ ...xong làm thủ tục keo hàm trong Add-Ins đó
 
Upvote 0
PHẦN 3: GIẢI THUẬT

Nghe từ Giải thuật có vẻ nghiêm trọng, nhưng ở đây tôi chỉ xin trình bày cách thức để phần mềm khởi động.

Như đã nói ở trên, tôi sử dụng 3 file exe, trong đó 2 file đóng vai trò khởi động, còn 1 file là updata. File exe thứ nhất chỉ có 1 nhiệm vụ duy nhất là khởi động file exe thứ 2.

Lý do đưa ra là: trong file exe thứ 2 của tôi chứa nhiều thông tin cần bảo mật gồm: địa chỉ mail, password của địa chỉ mail đó, password mở add-ins, các hàm mã hóa và giải mã để đăng nhập chương trình.

Chu trình hoạt động như sau:

Mở chương trình (exe1) --> exe2 --> Kết thúc.

Như vậy mọi vấn đề về khởi động chương trình của tôi đều nằm ở exe2. Do đó tôi tạo 1 kết cấu code với chu trình hoạt động như sau:

1. Kiểm tra điều kiện đăng nhập.

- Nếu sai thì hiện form đăng nhập: form này có các textbox, command button. Các textbox để ghi các thông tin như địa chỉ mail, số điện thoại. Khi điền đủ các thông tin thì chọn nút Gửi yêu cầu. Các thông tin về phần cứng của máy tính đang cài đặt sẽ được gửi ngầm vào địa chỉ mail của cá nhân tôi, thông tin gửi đi bao gồm địa chỉ mail của người đang cài đặt, số điện thoại, và dĩ nhiên cả 1 mã kích hoạt đã được mã hóa từ thông số phần cứng máy tính (mã hóa thế nào là do người viết tự đưa ra thuật toán). Khi gửi, chương trình cần 1 bước là kiểm tra xem máy tính có kết nối mạng không. Nếu không thì sẽ cảnh báo và thoát luôn. Khi có kết nối internet thì mới cho gửi yêu cầu kích hoạt. Khi tôi nhận được mail yêu cầu kích hoạt, tôi cần kiểm tra xem yêu cầu đó có đúng không, nếu đúng thì tôi sẽ gửi lại mã cho người đang cài đặt vào mail hoặc điện thoại. Người cài đặt copy mã đó và textbox đang chờ sẵn, và bấm nút kích hoạt. Thế là xong phần kích hoạt.

- Nếu đúng mã kích hoạt: chương trình kiểm tra tiếp xem còn hạn sử dụng không. Nếu còn thì mới cho khởi động. Không còn thì thoát và đưa ra cảnh báo cho người dùng.

2. Mở excel: như đã trình này, thay vì tìm đến excel để mở (vì người dùng có thể không cài đặt office ở thư mục mặc định) nên tôi dùng 1 file book1 trống hoàn toàn để đóng vai trò mở excel.

3. Mở các add-ins: các add-ins được mở thông qua exe2 thay vì nạp bằng lệnh addins.Install như trong VBA. Tôi xin trình bày sâu hơn 1 chút chỗ này vì nó liên quan đến bảo mật.

Thông thường add-ins được bảo vệ bằng mật khẩu Protect VBA Project, tuy nhiên mật khẩu này khá dễ phá trừ phi dùng 1 phần mềm có bản quyền để unviewable. Do đó tôi nghĩ ra 1 cách là add-ins này cần được bảo vệ bằng cả 2 cách là đặt password protect VBA và password open workbook. Đây là lý do exe2 cần được chống dịch ngược. Tôi nhận thấy khi được bảo vệ bằng cách này, add-ins sẽ không thể load 1 cách thông thường trừ phi passwork open workbook được phá bỏ. Và khi dùng cả 2 pass này thì việc dùng các phần mềm như XVI32 để phá pass VBA khá khó khăn. Không biết có phải trình độ của tôi còn kém cỏi không mà tôi chưa tìm ra cách để phá chính add-ins của mình.

4. Khi chương trình đã được mở, chỉ có nền excel trống (chính là book1). Để dùng tiếp chương trình thì cần thực hiện các lệnh tạo dự án mới hoặc mở dự án cũ. Lúc này, việc tạo dự án mới sẽ dùng đến file Temple.

Tạm thời những gì tôi muốn trình bày mới chỉ có thế này thôi. Khi mọi người trao đổi, sẽ bật ra được nhiều ý kiến khác!
Bài đã được tự động gộp:


Em thực sự xin lỗi nhưng thuật ngữ VSTO em chưa hiểu là gì đâu ạ!! Những kiến thức em có và chia sẻ hoàn toàn là sự cóp nhặt và tự sáng tạo ra thôi ạ chứ không có học hành bài bản nào cả ạ!! Đó là khiếm khuyết lớn nhất của em!!
Bài đã được tự động gộp:

Một số hình ảnh về 1 phần mềm tôi đã viết:

View attachment 198087View attachment 198088View attachment 198089
Nhìn hấp dẫn đấy. Mà thường thì mình viết luôn trong file, còn k thì sử dụng VB để tạo file DLL rồi add vô luôn.
 
Upvote 0
mạnh đọc bài 1 thấy có mục 4 sau
4. Phần mềm chống dịch ngược mã nguồn .net (tôi đang dùng ConfuserEx v0.6.0)

mà sao ko nhét hết code vào File *.dll đi cho gọn nhỉ ...xong làm thủ tục keo hàm trong Add-Ins đó
Em đã từng thử làm với dll nhưng không thành công. Có 1 bài em đã hỏi về dll cách đây khá lâu.
 
Upvote 0
Bạn có video hướng dẫn hoặc có mở lớp dạy tạo phần mềm chi tiết không bạn vu_tuan_manh_linh
 
Upvote 0
PHẦN 3: GIẢI THUẬT

Nghe từ Giải thuật có vẻ nghiêm trọng, nhưng ở đây tôi chỉ xin trình bày cách thức để phần mềm khởi động.

Như đã nói ở trên, tôi sử dụng 3 file exe, trong đó 2 file đóng vai trò khởi động, còn 1 file là updata. File exe thứ nhất chỉ có 1 nhiệm vụ duy nhất là khởi động file exe thứ 2.

Lý do đưa ra là: trong file exe thứ 2 của tôi chứa nhiều thông tin cần bảo mật gồm: địa chỉ mail, password của địa chỉ mail đó, password mở add-ins, các hàm mã hóa và giải mã để đăng nhập chương trình.

Chu trình hoạt động như sau:

Mở chương trình (exe1) --> exe2 --> Kết thúc.

Như vậy mọi vấn đề về khởi động chương trình của tôi đều nằm ở exe2. Do đó tôi tạo 1 kết cấu code với chu trình hoạt động như sau:

1. Kiểm tra điều kiện đăng nhập.

- Nếu sai thì hiện form đăng nhập: form này có các textbox, command button. Các textbox để ghi các thông tin như địa chỉ mail, số điện thoại. Khi điền đủ các thông tin thì chọn nút Gửi yêu cầu. Các thông tin về phần cứng của máy tính đang cài đặt sẽ được gửi ngầm vào địa chỉ mail của cá nhân tôi, thông tin gửi đi bao gồm địa chỉ mail của người đang cài đặt, số điện thoại, và dĩ nhiên cả 1 mã kích hoạt đã được mã hóa từ thông số phần cứng máy tính (mã hóa thế nào là do người viết tự đưa ra thuật toán). Khi gửi, chương trình cần 1 bước là kiểm tra xem máy tính có kết nối mạng không. Nếu không thì sẽ cảnh báo và thoát luôn. Khi có kết nối internet thì mới cho gửi yêu cầu kích hoạt. Khi tôi nhận được mail yêu cầu kích hoạt, tôi cần kiểm tra xem yêu cầu đó có đúng không, nếu đúng thì tôi sẽ gửi lại mã cho người đang cài đặt vào mail hoặc điện thoại. Người cài đặt copy mã đó và textbox đang chờ sẵn, và bấm nút kích hoạt. Thế là xong phần kích hoạt.

- Nếu đúng mã kích hoạt: chương trình kiểm tra tiếp xem còn hạn sử dụng không. Nếu còn thì mới cho khởi động. Không còn thì thoát và đưa ra cảnh báo cho người dùng.

2. Mở excel: như đã trình này, thay vì tìm đến excel để mở (vì người dùng có thể không cài đặt office ở thư mục mặc định) nên tôi dùng 1 file book1 trống hoàn toàn để đóng vai trò mở excel.

3. Mở các add-ins: các add-ins được mở thông qua exe2 thay vì nạp bằng lệnh addins.Install như trong VBA. Tôi xin trình bày sâu hơn 1 chút chỗ này vì nó liên quan đến bảo mật.

Thông thường add-ins được bảo vệ bằng mật khẩu Protect VBA Project, tuy nhiên mật khẩu này khá dễ phá trừ phi dùng 1 phần mềm có bản quyền để unviewable. Do đó tôi nghĩ ra 1 cách là add-ins này cần được bảo vệ bằng cả 2 cách là đặt password protect VBA và password open workbook. Đây là lý do exe2 cần được chống dịch ngược. Tôi nhận thấy khi được bảo vệ bằng cách này, add-ins sẽ không thể load 1 cách thông thường trừ phi passwork open workbook được phá bỏ. Và khi dùng cả 2 pass này thì việc dùng các phần mềm như XVI32 để phá pass VBA khá khó khăn. Không biết có phải trình độ của tôi còn kém cỏi không mà tôi chưa tìm ra cách để phá chính add-ins của mình.

4. Khi chương trình đã được mở, chỉ có nền excel trống (chính là book1). Để dùng tiếp chương trình thì cần thực hiện các lệnh tạo dự án mới hoặc mở dự án cũ. Lúc này, việc tạo dự án mới sẽ dùng đến file Temple.

Tạm thời những gì tôi muốn trình bày mới chỉ có thế này thôi. Khi mọi người trao đổi, sẽ bật ra được nhiều ý kiến khác!
Bài đã được tự động gộp:


Em thực sự xin lỗi nhưng thuật ngữ VSTO em chưa hiểu là gì đâu ạ!! Những kiến thức em có và chia sẻ hoàn toàn là sự cóp nhặt và tự sáng tạo ra thôi ạ chứ không có học hành bài bản nào cả ạ!! Đó là khiếm khuyết lớn nhất của em!!
Bài đã được tự động gộp:

Một số hình ảnh về 1 phần mềm tôi đã viết:

View attachment 198087View attachment 198088View attachment 198089
Bài đã được tự động gộp:

Bác lập dự toán theo phương pháp đơn giá trực tiếp hay đơn giá gốc ạ. Định mức này mình lấy từ phần mềm dự toán khác hay sao ạ.
 
Upvote 0
Bài đã được tự động gộp:

Bác lập dự toán theo phương pháp đơn giá trực tiếp hay đơn giá gốc ạ. Định mức này mình lấy từ phần mềm dự toán khác hay sao ạ.
Mình lập theo giá trực tiếp, dĩ nhiên là định mức lấy từ phần mềm khác và hiệu chỉnh.
 
Upvote 0
PHẦN 2: KẾT CẤU

Phần mềm tôi viết gồm các thành phần như sau:


2. Các file excel: gồm có:
- 1 file book1.xlsm trống hoàn toàn: lý do là khi khởi động excel, thay vì tìm đến khu vực cài đặt và khởi động excel thì tôi mở luôn 1 file trống có sẵn trong thư mục cài đặt phần mềm, khi mở dự án mới file book1 sẽ được tắt đi.

- Add-ins thứ 1chứa các dữ liệu dùng để truy xuất khi sử dụng phầm mềm: VD tôi làm phần mềm dự toán thì bộ định mức tôi để trong 1 add-ins. Lý do đưa ra đơn giản là tôi nhận thấy việc truy tìm dữ liệu từ 1 add-ins nhanh hơn từ 1 file excel, và add-ins khi được nạp thì chạy ngầm, không hiển thị gì cả.

- Add-ins thứ 2chứa tất cả các code thực thi của phần mềm. Code có thể được gọi ra từ 1 nút lệnh trên menu ribbon hoặc từ 1 sự kiện worksheet_Change, hoặc Worksheet_SelectionChange, hoặc Workbooks_Open.

- 1 file Temple: gọi là Temple nhưng tôi chỉ đặt tên là thế thôi, còn đuôi mở rộng là .xlsm, vì trong file sẽ chứa 1 số code đơn giản, code để gọi các code chính trong add-ins thứ 2. File này được thiết lập sẵn các biểu mẫu nhập dữ liệu, biểu mẫu báo cáo. Khi tạo dự án mới, file này sẽ được copy để tạo ra dự án mới.
Anh có file mẫu hoặc video hướng dẫn cái này không giúp em với ạ, em xin cảm ơn anh
 
Upvote 0
Anh có file mẫu hoặc video hướng dẫn cái này không giúp em với ạ, em xin cảm ơn anh
Tôi có thể share code vbnet file exe để khởi động chương trình. Còn code VBA trong add-ins thì không có 1 khuôn mẫu nào cả, phần mềm có nhu cầu thế nào thì mình viết như thế thôi. Bạn nghiên cứu VBnet trước đi.
 

File đính kèm

  • Demo.rar
    1.5 MB · Đọc: 173
Upvote 0
Tôi có thể share code vbnet file exe để khởi động chương trình. Còn code VBA trong add-ins thì không có 1 khuôn mẫu nào cả, phần mềm có nhu cầu thế nào thì mình viết như thế thôi. Bạn nghiên cứu VBnet trước đi.
Cái này chắc phải mất 1 thời gian nữa may ra em mới có thể tiếp cận được
- Add-ins thứ 1chứa các dữ liệu dùng để truy xuất khi sử dụng phầm mềm: VD tôi làm phần mềm dự toán thì bộ định mức tôi để trong 1 add-ins. Lý do đưa ra đơn giản là tôi nhận thấy việc truy tìm dữ liệu từ 1 add-ins nhanh hơn từ 1 file excel, và add-ins khi được nạp thì chạy ngầm, không hiển thị gì cả.
Anh giúp em thử 1 file mẫu gồm (file excel để đổ dữ liệu, 1 add-ins chứa dữ liệu) mà không cần khuôn mẫu nào cả :). Khi mình thực hiện lệnh 1 thì nó đổ dữ liệu vào file excel, sau đó thực hiện 1 vài thao tác để thay đổi dữ liệu vừa đổ xuống và thực hiện lệnh 2 thì add-in đó sẽ lưu các dữ liệu vừa thay đổi
 
Upvote 0
Anh giúp em thử 1 file mẫu gồm (file excel để đổ dữ liệu, 1 add-ins chứa dữ liệu) mà không cần khuôn mẫu nào cả :). Khi mình thực hiện lệnh 1 thì nó đổ dữ liệu vào file excel, sau đó thực hiện 1 vài thao tác để thay đổi dữ liệu vừa đổ xuống và thực hiện lệnh 2 thì add-in đó sẽ lưu các dữ liệu vừa thay đổi
Code này là VBA viết trên Add-ins nên nó không có gì đặc biệt cả. Bạn viết code thế nào thì nó chạy như thế thôi. Nếu bạn cũng chưa tìm hiểu về VBA thì hãy tìm hiểu rồi sẽ rõ. Bản thân add-ins là 1 file excel chứ không có gì khác biệt, nên bạn có thể thao tác với nó như mọi file excel khác.
 
Upvote 0
Như vậy là chỉ cần bẻ khóa add in thì mọi cánh cửa đều mở toan. Bảo mật như vậy thì không ăn thua đâu bạn. Tốt nhất là cho các code quan trọng vào một file DLL.
Chào anh! chuyển code sang .dll phải lập trình lại từ VB6 ạ hay có cách chuyển VBA sang .Dll luôn
 
Upvote 0
Web KT
Back
Top Bottom