AI muốn lập trình DLL cho Excel và các loại bằng Delphi thì xem video này nhé!

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,235
Được thích
9,746
Điểm
860
Nơi ở
Hà Nội
Mạnh loay hay làm theo hướng dẫn của bài này cả tuần nay mà không xong ... vậy úp bài + Code mẫu của bài đó nhờ các Bạn chỉ dùm
( Thực ra link đã úp từ mấy bài trước )

Mình tải code đó về đã build trên Delphi7 & Delphi 10.2.3 và đã Reg Run As hết mà sao nó không có sử dụng được hàm sau trong COM Add-Ins
Mã:
Function TDelphiAddin.SimpleAdd (X, Y: Double): Double;
begin
  result: = X + Y;
end;
ý mình muốn hỏi là phải chỉnh sửa lại toàn bộ mã nguồn đó sao cho sử dụng được hàm SimpleAdd ở trên Cells khi Gõ A1 = SimpleAdd (B1,B2) Enter là nó trả về kết quả của Hàm

Mạnh mò các kiểu cả tuần nay ko ra ... rất mong sự trợ giúp của các Bạn
Cảm ơn rất nhiều
Bạn cần làm các việc như sau:
1. Biên dịch DLL và Regsvr32 đúng theo Excel 32 hoặc 64 bit
2. Vào Excel, Add-in Manager chọn nút "Automation" chọn tới DLL này xong.
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,235
Được thích
9,746
Điểm
860
Nơi ở
Hà Nội
Bạn phải sửa code như sau:

library AutomAddinSample;

uses
ComServ,
AutomAddinSample_TLB in 'AutomAddinSample_TLB.pas',
Unit1 in 'Unit1.pas' {DelphiAddin: CoClass};

{$R *.TLB}
{$R *.RES}

exports
DllGetClassObject,
DllCanUnloadNow,
DllRegisterServer,
DllUnregisterServer,
DllInstall;
begin
end.
 

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,677
Được thích
2,523
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
cảm ơn Bạn mới thử xong các kiểu vẫn cứ thế ... hay code đó củ rồi người ta viết cho bản x8 nên ko xài được
Mạnh xài Windows10_x64 + Office 2016_x32 hay đó là lý do không sử dụng được với Office 2016
 

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,677
Được thích
2,523
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Mạnh rảnh đang tìm kiếm tài liệu mò viết cái CustomTaskPane trên Delphi mà ko phải xài ké cái Add-in Express for Office and VCL Or ...!!

Ai biết có link nào có hướng dẫn hay code mẫu xin chỉ dùm
Tìm thấy toàn code c/c++, C# ... nhiều vô kể ... còn Delphi thì gần như ko thấy hay chưa tìm ra ... Mong chỉ dùm
Xin cảm ơn

Mạnh thấy code VB trên Mạng tiện úp đây cho ai iu em nó

CustomTaskPane_Excel.Ribbon.gif
 

File đính kèm

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,677
Được thích
2,523
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Mạnh mới tập làm 1 cái Menu Ribbon DLL cho Excel Úp nhờ các Bạn test dùm trên Máy khác xem sao

1/ Chỉ chạy từ Office2010 To Office2016

2/ Officex32 thì chạy bản Officex32 và Officex64 thì chạy bản Officex64

3/ Sử dụng File Excel RegActiveXDLL.xlsb để đăng ký và hủy ( xong thoát mở lại Excel )

4/ Vậy là theo các Thầy ở đây học Delphi tới nay khá thêm một tẹo chuyển toàn bộ code QLBH của Mạnh Từ VB6 qua Delphi thành công

Nếu Có dịp qua Bình Dương các thầy Alo cho Mạnh .... Mạnh đón tiếp nhiệt tình nhé

Xin cảm ơn
 

File đính kèm

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,677
Được thích
2,523
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Mạnh loay hay làm theo hướng dẫn của bài này cả tuần nay mà không xong ... vậy úp bài + Code mẫu của bài đó nhờ các Bạn chỉ dùm
( Thực ra link đã úp từ mấy bài trước )

Mình tải code đó về đã build trên Delphi7 & Delphi 10.2.3 và đã Reg Run As hết mà sao nó không có sử dụng được hàm sau trong COM Add-Ins
Mã:
Function TDelphiAddin.SimpleAdd (X, Y: Double): Double;
begin
  result: = X + Y;
end;
ý mình muốn hỏi là phải chỉnh sửa lại toàn bộ mã nguồn đó sao cho sử dụng được hàm SimpleAdd ở trên Cells khi Gõ A1 = SimpleAdd (B1,B2) Enter là nó trả về kết quả của Hàm

Mạnh mò các kiểu cả tuần nay ko ra ... rất mong sự trợ giúp của các Bạn
Cảm ơn rất nhiều
To Anh @batman1 Em đang tập Viết cái DLL trên Delphi (Excel COM Server ) có cái Hàm gõ trên Cells đại ý như bài này mà Em làm hoài ko được nếu Anh biết chỉ dùm Em học 1 chút
Cảm ơn Anh
 

thuyyeu99

Trùm Nhiều Chuyện
Tham gia ngày
6 Tháng sáu 2008
Bài viết
1,312
Được thích
543
Điểm
860
Các anh cho em hỏi xíu nhé.
em muốn thay đổi Lower Bounds PSafeArray trong Del phi từ 1 thành 0 mà không dùng vòng lập có được không ?
hoặc copy PSafeArray vào Dynamic Array
(nếu được nhờ các anh hướng dẫn giúp em với).

Cám ơn các anh
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,235
Được thích
9,746
Điểm
860
Nơi ở
Hà Nội
Các anh cho em hỏi xíu nhé.
em muốn thay đổi Lower Bounds PSafeArray trong Del phi từ 1 thành 0 mà không dùng vòng lập có được không ?
hoặc copy PSafeArray vào Dynamic Array
(nếu được nhờ các anh hướng dẫn giúp em với).

Cám ơn các anh
Bắt buộc phải tạo mảng khác rồi copy vào nhé.
 

thuyyeu99

Trùm Nhiều Chuyện
Tham gia ngày
6 Tháng sáu 2008
Bài viết
1,312
Được thích
543
Điểm
860
Em tìm được hướng giải quyết rồi.
Cảm ơn mọi người quan tâm hihi
 

thuyyeu99

Trùm Nhiều Chuyện
Tham gia ngày
6 Tháng sáu 2008
Bài viết
1,312
Được thích
543
Điểm
860
Em giải quyết theo hướng nào?
Em chuyển từ variant qua PSafeArray rồi từ PSafeArray em copy vào Dynamic Array
em test thử từ lúc get data đến khi ghi vào Excell. (em thấy hơi lâu quá)
1 cái viết trong procedure truc tiếp chạy thử 65536 tới 422ms
1 cái viết trong function chạy thử 65536 tới 932ms
cái nào em cũng thấy chậm hic. Chắc do chuyển qua chuyển lại nhiều quá.
 
Lần chỉnh sửa cuối:

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,235
Được thích
9,746
Điểm
860
Nơi ở
Hà Nội
Em chuyển từ variant qua PSafeArray rồi từ PSafeArray em copy vào Dynamic Array
em test thử từ lúc get data đến khi ghi vào Excell. (em thấy hơi lâu quá)
1 cái viết trong procedure truc tiếp chạy thử 65536 tới 422ms
1 cái viết trong function chạy thử 65536 tới 932ms
cái nào em cũng thấy chậm hic. Chắc do chuyển qua chuyển lại nhiều quá.
Copy SafeArray nhanh lắm. Trong Variant là chứa PSafeArray rồi.
 

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,235
Được thích
9,746
Điểm
860
Nơi ở
Hà Nội
Em nghĩ chắc là nhanh lắm nhưng em chưa biết copy từ PSafeArray vào thẳng dynamic
Như anh nói đó. Tạo mảng mới theo cấu trúc mới và số phần tử bằng mảng gốc. Dùng vòng lặp copy từng phần tử từ mảng gốc vào mảng mới.
Mà mình cũng không biết vì sao lại phải thay đổi ??
 

thuyyeu99

Trùm Nhiều Chuyện
Tham gia ngày
6 Tháng sáu 2008
Bài viết
1,312
Được thích
543
Điểm
860
Như anh nói đó. Tạo mảng mới theo cấu trúc mới và số phần tử bằng mảng gốc. Dùng vòng lặp copy từng phần tử từ mảng gốc vào mảng mới.
Mà mình cũng không biết vì sao lại phải thay đổi ??
Dùng vòng lập dữ liệu nhiều em nghĩ nó chậm hơn dùng api ah anh.
Hihi có nhiều cai em viết không nổi hoặc em chưa biết, nên tính áp dụng những cái có sẵn của delphi để sài đó mà. Để em mò tiếp để rút ngắn thời gian hơn nữa hihii hi vong là sẽ được
 
Lần chỉnh sửa cuối:

kieu manh

❆❆❆❆❆
Tham gia ngày
9 Tháng sáu 2012
Bài viết
3,677
Được thích
2,523
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Lâu lắm ko học bài ...nhờ các bạn chỉ dùm
VD: Trong VB6 mình khai báo như sau:
Mã:
Private ExcelApp As New Excel.Application
Public Property Get Application() As Excel.Application
    Set Application = ExcelApp
End Property
vậy mình muốn hỏi trong Delphi Mình khai báo tương đương code trên như thế nào để sử dụng tốt như code trên vb6 .... Mong chỉ dùm
Xin cảm ơn
 
Top Bottom