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

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
Lần chỉnh sửa cuố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.
 
Upvote 0
Mạnh mới thử báo lỗi chắc sai cái gì đó
Capture.JPG
 
Upvote 0
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.
 
Upvote 0
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
 
Upvote 0
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

  • VB.rar
    40.9 KB · Đọc: 11
Upvote 0
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

  • OfficeX32.rar
    617.3 KB · Đọc: 16
  • Officex64.rar
    759.7 KB · Đọc: 13
  • RegActiveXDLL.rar
    26.5 KB · Đọc: 14
Upvote 0
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
 
Upvote 0
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
 
Upvote 0
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é.
 
Upvote 0
Em tìm được hướng giải quyết rồi.
Cảm ơn mọi người quan tâm hihi
 
Upvote 0
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:
Upvote 0
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.
 
Upvote 0
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 ??
 
Upvote 0
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:
Upvote 0
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
 
Upvote 0
Thầy cho e xin công thức tính trên excel ra kq như này với.
 

File đính kèm

  • 89EFE5CB-F287-47C7-BF85-F1C9FE1FE942.jpeg
    89EFE5CB-F287-47C7-BF85-F1C9FE1FE942.jpeg
    210.5 KB · Đọc: 18
Upvote 0
Web KT
Back
Top Bottom