XLL Add-In Đổi số thành chữ - Tốc độ nhanh tối đa, nhanh hơn 80% các Addins khác (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Có bao giờ chúng ta bảo tôi muốn dùng hàm VLookup nhưng muốn đổi tên là "Timkiem" không?
Tất cả các AddIns khi đã biên dịch thành DLL,XLL thì miễn bàn đến vì nó đã là ngôn ngữ máy rồi, còn dạng XLA thì chỉ khi tác giả cho Pass VBA thì mới sửa được tên hàm.

Trong file Excel của các bạn hàm đọc số thành chữ dùng không nhiều (nó chỉ trong các chứng từ, sổ, báo cáo là chính) nên việc chọn hàm này hay hàm khác có thể không đáng quan tâm. Nhưng nếu bạn dùng các hàm để tính toán nhiều, dùng nhiều thì nên chọn AddIns dạng XLL để đảm bảo tốc độ của ứng dụng.
(Thuật toán như nhau, tốc độ các hàm trong AddIns XLL nhanh hơn trong VBA rất nhiều ~+60%)
Mục đích tôi đưa file Ketoan.XLL để các bạn biết là các chuyên gia MS Excel phải làm như vậy để tạo ra các hàm Excel cho người dùng. Các AddIns của Microsoft gần như đều phải làm như vậy Solver, ODBC,...

Học để làm AddIns XLL, nếu bạn nào biết ngôn ngữ C/C++/Delphi có thể thể trao đổi cùng tôi.
Anh Duy Tuân nói rất đúng mình cũng đang nghiên cứu dùng Delphi để làm một chương trình dự toán riêng phục vụ công tác đấu thầu vì mỗi chủ đầu tư có các bản phân tích chi tiết giá khác nhau rất lộn xộn nên muốn làm một cái có thể tạo ra một báo cáo( bảng đơn giá chi tiết linh động) cho mọi tình huống như bản A-Tool của anh thì chỉ áp dụng cho kế toán và cũng chưa linh động trong báo cáo(mình đã thử dùng cái này để làm bảng kiểm tra cao độ và kích thước hình học cho việc nghiệm thu đường rồi cũng rất hiệu quả cám ơn tác giả nhé). Mình đang sử dụng cái add-in Expess 2007(cái này mà dùng để tạo hàm thì tuyệt) đã tự chế để dùng trong DelphiXe rồi dùng kết hợp với cái Flexcell của TMS nhưng do bận kiếm tiền quá nên chưa thực hiện được. Anh Tuân có mã nguồn nào đó thì có thể chia sẻ cho em tham khảo được không Email: kien.vui@gmail.com
 
hay quá mà sao mặt định không phải là font unicode vậy anh.
 
Accounting Helper - Đọc số thành chữ 2.1.0 (32 & 64-bit)

Giới thiệu với các thành viên phiên bản mới Đọc số thành chữ Accounting Helper 2.1.0 (New) 20-11-2011

Thông tin sửa đổi và nâng cấp:

+ Sửa tương thích với Excel 2000
+ Quản lý bộ nhớ tốt hơn
+ Thêm phiên bản chạy trên Microsoft Excel 64-bit (Windows + Microsoft Office 64-bit)

Để sử dụng phiên bản 64 bit, các bạn hãy chọn file theo đường dẫn "x64\AccHelper.xll"

Từ phiên bản Accounting Helper 2.1.0 hỗ trợ Excel 64-bit (Windows + Microsoft Office 64-bit)

DOWNLOAD Accounting Helper 2.1.0 (32 & 64-bit)
 
Bạn cho mình hỏi sao mình đang dùng Unicod. Để .VNTIME thì đọc được nhưng để Timesnewroman thì không đọc được . Giúp em với ! Thanks
Hiện mình đang dùng mail merge để trộn thư gửi cho Kh mà. Mà bản Word và Exel mình đều dùng Timenewsronman
 
RE về AccHelper

Sao khi mình dùng hàm VND trong Acchelper để đổi số sang chữ (Office 2007).
Cụ thể:
Cell A33: =VND($E$31) thì bị trả kết quả: 3,4851E+308 (Tất nhiên là các cell không bị liên kết chéo).
Phần mềm có lẽ là tốt, nhưng hoạt động chưa ổn định thì phải, vì các sheet mà gọi hàm VND lâu lâu hay bị giống trường hợp trên.
Mình dùng WinXP SP3 & Office 2007 SP2.
 
Lần chỉnh sửa cuối:
Chào chủ topic! tôi theo dõi chủ đề này cũng lâu lâu rồi đấy, chỉ là chờ thêm 1 tính năng trong tiện ích của bạn. Bạn nghiên cứu giúp và bổ sung thêm các dấu phảy "," ngắt câu trong phần chữ nhé. VD: "Sáu tỉ, tám trăm ba mươi triệu, hai trăm lẻ năm nghìn đồng." . Có thể hình dung là thêm các dấu phảy "," sau các chữ "tỉ"; " triệu"; ... và dấu chấm "." sau chữ "đồng", như vậy thì câu văn đọc ra sẽ rõ ràng hơn và mình có thể xem dễ dàng hơn từng khoảng giá trị.
Bạn nghiên cứu giúp nhé, email của mình: lehai.cd@gmail.com, nhờ bạn liên hệ khi có tin mới. Cảm ơn bạn!
 
Chào chủ topic! tôi theo dõi chủ đề này cũng lâu lâu rồi đấy, chỉ là chờ thêm 1 tính năng trong tiện ích của bạn. Bạn nghiên cứu giúp và bổ sung thêm các dấu phảy "," ngắt câu trong phần chữ nhé. VD: "Sáu tỉ, tám trăm ba mươi triệu, hai trăm lẻ năm nghìn đồng." . Có thể hình dung là thêm các dấu phảy "," sau các chữ "tỉ"; " triệu"; ... và dấu chấm "." sau chữ "đồng", như vậy thì câu văn đọc ra sẽ rõ ràng hơn và mình có thể xem dễ dàng hơn từng khoảng giá trị.
Bạn nghiên cứu giúp nhé, email của mình: lehai.cd@gmail.com, nhờ bạn liên hệ khi có tin mới. Cảm ơn bạn!

Tính năng này có ngay từ đầu mà bạn. Bạn xem cấu trúc và hướng dẫn của hàm trong file "Help.xls".
 
Em đọc trong file "Help.xls" nhưng vẫn không thấy chỉ dãn rõ là làm thế nào thể hiện ngăn cách là dấu "," giữa các nhóm mặc dù ví dụ nhưng em không biết cách làm. Anh chỉ cho em.
 
Sao em add-in file accHelperEx.xla xong khởi động lại excel là hiện ra khung này
Untitled.jpg
Xin các pro giúp em với . Thank
 
Em đọc trong file "Help.xls" nhưng vẫn không thấy chỉ dãn rõ là làm thế nào thể hiện ngăn cách là dấu "," giữa các nhóm mặc dù ví dụ nhưng em không biết cách làm. Anh chỉ cho em.

Bạn copy đoạn nói về cấu trúc hàm VND() và phần giải thích các tham số của hàm lên đây nhé.
 
Học để làm AddIns XLL, nếu bạn nào biết ngôn ngữ C/C++/Delphi có thể thể trao đổi cùng tôi.

Chào bạn.
Bạn có thể hướng dẫn tôi làm XLL không? Tôi đã thử làm trong Delphi một PictureViewer như đã có ở trên diễn đàn này (tác giả dùng VB6). Tôi mở New --> ActiveX Library --> OK --> New --> Automation Object --> OK. Thế rồi tôi viết code và kiểm tra.
Còn cái XLL này thì làm như thế nào? New --> ??? --> OK --> New --> ??? --> OK. Những chỗ ??? là gì? Và cần những gì để sau khi compile là có được DLL? Và sau khi có được DLL thì chuyển sang XLL bằng cách nào? Đơn giản chỉ là đổi tên gi_do.dll thành gi_do.xll hay phải mệt hơn nữa? Về thuật toán, cách code thì tôi sẽ tự mầy mò, xin bạn chỉ giúp là tôi phải mở project loại gì - những "???" như ở trên. Và cần chú ý tới những gì nữa. vd. như hàm trả về chuỗi thì tôi cho trả về WideString được không hay "đồ chơi loại này" (COM) đòi hỏi phải trả về Variant?

Cám ơn bạn
 
Chào bạn.
Bạn có thể hướng dẫn tôi làm XLL không? Tôi đã thử làm trong Delphi một PictureViewer như đã có ở trên diễn đàn này (tác giả dùng VB6). Tôi mở New --> ActiveX Library --> OK --> New --> Automation Object --> OK. Thế rồi tôi viết code và kiểm tra.
Còn cái XLL này thì làm như thế nào? New --> ??? --> OK --> New --> ??? --> OK. Những chỗ ??? là gì? Và cần những gì để sau khi compile là có được DLL? Và sau khi có được DLL thì chuyển sang XLL bằng cách nào? Đơn giản chỉ là đổi tên gi_do.dll thành gi_do.xll hay phải mệt hơn nữa? Về thuật toán, cách code thì tôi sẽ tự mầy mò, xin bạn chỉ giúp là tôi phải mở project loại gì - những "???" như ở trên. Và cần chú ý tới những gì nữa. vd. như hàm trả về chuỗi thì tôi cho trả về WideString được không hay "đồ chơi loại này" (COM) đòi hỏi phải trả về Variant?

Cám ơn bạn

Thực ra ngay từ đầu tôi đã viết code (Activex Library + Automation Object) và debug kỹ càng. Chỉ có điều tôi không thêm được vào Add-Ins vì có lỗi: 'The file you selected does not contain a new Automation Server, or you do not have sufficient privileges to register the Automation Server'
Bây giờ thì tôi làm được rồi. Chỉ thêm mỗi 1 khóa trong Registry. 1 khóa "Programmable" bé bằng hạt cát mà mất bao công xoay sở!
Của tôi là DLL thôi chứ chưa phải là XLL, nhưng hoạt động tốt, sử dụng được các hàm trong thư viện.
 
Giới thiệu với các thành viên phiên bản mới Đọc số thành chữ Accounting Helper 2.1.0 (New) 20-11-2011

Thông tin sửa đổi và nâng cấp:

+ Sửa tương thích với Excel 2000
+ Quản lý bộ nhớ tốt hơn
+ Thêm phiên bản chạy trên Microsoft Excel 64-bit (Windows + Microsoft Office 64-bit)

Để sử dụng phiên bản 64 bit, các bạn hãy chọn file theo đường dẫn "x64\AccHelper.xll"

Từ phiên bản Accounting Helper 2.1.0 hỗ trợ Excel 64-bit (Windows + Microsoft Office 64-bit)

DOWNLOAD Accounting Helper 2.1.0 (32 & 64-bit)

Tôi thử công cụ của bạn thì thấy có lỗi như thế này:

http://i788.photobucket.com/albums/yy164/khachquaduong_2009/AccHelper.jpg

Nhân tiện (do đã lập công ở trên?) xin hỏi bạn một chút. AccHelper bạn viết trong Delphi. Vậy bạn làm thế nào để có những dòng miêu tả hàm trong cửa sổ "Insert Function" của Excel?
Tôi thấy trong cửa sổ Type Library Editor của Delphi 5 có "Help string", "Help Context", v...v. Tôi có thể đưa các giá trị thử nghiệm vào nhưng theo tôi hiểu thì mình lại phải soạn một tập tin help rồi đưa đường dẫn vào nữa. Nhưng như thế "phiền toái" quá. Hay là nó còn có ô "Description" mà tôi tìm hoài không thấy?
Bạn làm như thế nào?
 
Tôi thử công cụ của bạn thì thấy có lỗi như thế này:

http://i788.photobucket.com/albums/yy164/khachquaduong_2009/AccHelper.jpg

Nhân tiện (do đã lập công ở trên?) xin hỏi bạn một chút. AccHelper bạn viết trong Delphi. Vậy bạn làm thế nào để có những dòng miêu tả hàm trong cửa sổ "Insert Function" của Excel?
Tôi thấy trong cửa sổ Type Library Editor của Delphi 5 có "Help string", "Help Context", v...v. Tôi có thể đưa các giá trị thử nghiệm vào nhưng theo tôi hiểu thì mình lại phải soạn một tập tin help rồi đưa đường dẫn vào nữa. Nhưng như thế "phiền toái" quá. Hay là nó còn có ô "Description" mà tôi tìm hoài không thấy?
Bạn làm như thế nào?

File Add-in Excel XLL bản chất là một file thư viện DLL loại "Dynamic-link library" (không phải là ActiveX DLL). Có thể dùng Visual C hoặc Delphi để tạo loại thư viện này. Nếu bạn biết chút về C/C++ thì nên dùng nó để tạo vì Microsoft có sẵn tài liệu và các ví dụ để tạo nó. Để tạo được XLL bạn phải khai báo kiểu cấu trúc dữ liệu của Excel xll và lập trình các hàm quy định của loại add-in này. Bạn xem tại đây:
Welcome to the Microsoft Excel 2010 XLL Software Development Kit

Nếu làm trên Delphi thì thực sự khó khăn bởi toàn bộ kiểu dữ liệu bên C/C++ mà Microsoft đã khai báo ta phải quy đổi về Delphi. Nói chung phải rất có kinh nghiệm mới làm được trên Delphi. Bài hướng dẫn làm trên Delphi 7 từ lâu lắm tại đây:
http://www.google.com.vn/url?sa=t&r...sg=AFQjCNF_4Qy8NKN48Rcoiaj32TQDwRT9OA&cad=rja

Theo tôi bạn nên dùng VC để tạo add-in xll, vì để tạo bằng Delphi bạn vẫn phải biết cơ bản về C/C++ để đọc tài liệu hướng dẫn của Microsoft và hiểu rõ cách viết dll trong Delphi.

"Help Strin", "Help Context" chỉ là diễn giải cho cả add-in (file) thôi chứ không thể diễn giải cho các đối sối trong hàm được.

Đọc kỹ tài liệu của Microsoft mà tôi gửi trên bạn sẽ có thể làm được như thế này:

FuncArgs.jpg
 
Lần chỉnh sửa cuối:
File Add-in Excel XLL bản chất là một file thư viện DLL loại "Dynamic-link library" (không phải là ActiveX DLL). Có thể dùng Visual C hoặc Delphi để tạo loại thư viện này. Nếu bạn biết chút về C/C++ thì nên dùng nó để tạo vì Microsoft có sẵn tài liệu và các ví dụ để tạo nó. Để tạo được XLL bạn phải khai báo kiểu cấu trúc dữ liệu của Excel xll và lập trình các hàm quy định của loại add-in này. Bạn xem tại đây:
Welcome to the Microsoft Excel 2010 XLL Software Development Kit

Nếu làm trên Delphi thì thực sự khó khăn bởi toàn bộ kiểu dữ liệu bên C/C++ mà Microsoft đã khai báo ta phải quy đổi về Delphi. Nói chung phải rất có kinh nghiệm mới làm được trên Delphi. Bài hướng dẫn làm trên Delphi 7 từ lâu lắm tại đây:
http://www.google.com.vn/url?sa=t&r...sg=AFQjCNF_4Qy8NKN48Rcoiaj32TQDwRT9OA&cad=rja

Theo tôi bạn nên dùng VC để tạo add-in xll, vì để tạo bằng Delphi bạn vẫn phải biết cơ bản về C/C++ để đọc tài liệu hướng dẫn của Microsoft và hiểu rõ cách viết dll trong Delphi.

"Help Strin", "Help Context" chỉ là diễn giải cho cả add-in (file) thôi chứ không thể diễn giải cho các đối sối trong hàm được.

Đọc kỹ tài liệu của Microsoft mà tôi gửi trên bạn sẽ có thể làm được như thế này:
Cám ơn bạn đã trả lời. Tôi làm server automation (cũng thêm được vào chỉ có điều không có miêu tả hàm) vì lúc đó tôi chưa biết làm XLL. Mấy hôm rồi tôi tìm tòi nên cũng đã làm được XLL. Hóa ra chỉ cần làm DLL bình thường rồi đổi tên thành XLL như tôi đã nghĩ. Và chỉ cần code xlAutoOpen (bắt buộc) rồi đăng ký các hàm của ta. Các hàm đã hoạt động tốt và có miêu tả. Tôi cũng đã tự tìm đọc Excel 2010 SDK nên biết cách dùng vd. pxTypetext. Nếu cần hơn thì code thêm xlAddInManagerInfo và xlAuto***. Chỉ có điều là hiện tôi dùng XLOPER nên chỉ có ShortString, không có miêu tả unicode.
Tôi đã và đang hỏi bạn vì một lý do đơn giản là tôi đọc thấy là AccHelper được viết bằng Delphi. Vậy tôi có 1 câu hỏi cuối cùng. Bạn có cấu trúc XLOPER12 trong Delphi không? Nếu có thì tốt quá, còn không thì đành mầy mò thôi. Tôi không lập trình trong C/C++ nhưng các kiểu dữ liệu thì tôi đọc code cũng hiểu được nhiều và chuyển sang Delphi được nhiều. Tất nhiên làm trong C/C++ thì có nhiều ví dụ hơn nhưng trong tất cả các vd. tôi tìm được trên mạng đều không có miêu tả hàm do không dùng pxFunctionHelp nhưng tôi làm tương tự như với vd. pxFunctionText, pxArgumentText.
test_xll.jpg
 
Đoạn khai báo cấu trúc XLOPER, XLOPER12 theo ngôn ngữ C dưới đây nằm trong file "xlcall.h" của Microsoft.
Mã:
/*
** XL 12 Basic Datatypes
**/

typedef INT32 BOOL;			/* Boolean */
typedef WCHAR XCHAR;			/* Wide Character */
typedef INT32 RW;			/* XL 12 Row */
typedef INT32 COL;			/* XL 12 Column */


/*
** XLOPER structure 
**
** Excel's fundamental data type: can hold data
** of any type. Use "R" as the argument type in the 
** REGISTER function.
**/

typedef struct xloper 
{
	union 
	{
		double num;					/* xltypeNum */
		LPSTR str;					/* xltypeStr */
#ifdef __cplusplus
		WORD xbool;					/* xltypeBool */
#else	
		WORD bool;					/* xltypeBool */
#endif	
		WORD err;					/* xltypeErr */
		short int w;					/* xltypeInt */
		struct 
		{
			WORD count;				/* always = 1 */
			XLREF ref;
		} sref;						/* xltypeSRef */
		struct 
		{
			XLMREF *lpmref;
			DWORD idSheet;
		} mref;						/* xltypeRef */
		struct 
		{
			struct xloper *lparray;
			WORD rows;
			WORD columns;
		} array;					/* xltypeMulti */
		struct 
		{
			union
			{
				short int level;		/* xlflowRestart */
				short int tbctrl;		/* xlflowPause */
				DWORD idSheet;			/* xlflowGoto */
			} valflow;
			WORD rw;				/* xlflowGoto */
			BYTE col;				/* xlflowGoto */
			BYTE xlflow;
		} flow;						/* xltypeFlow */
		struct
		{
			union
			{
				BYTE *lpbData;			/* data passed to XL */
				HANDLE hdata;			/* data returned from XL */
			} h;
			long cbData;
		} bigdata;					/* xltypeBigData */
	} val;
	WORD xltype;
} XLOPER, *LPXLOPER;

/*
** XLOPER12 structure 
**
** Excel 12's fundamental data type: can hold data
** of any type. Use "U" as the argument type in the 
** REGISTER function.
**/

typedef struct xloper12 
{
	union 
	{
		double num;				       	/* xltypeNum */
		XCHAR *str;				       	/* xltypeStr */
		BOOL xbool;				       	/* xltypeBool */
		int err;				       	/* xltypeErr */
		int w;
		struct 
		{
			WORD count;			       	/* always = 1 */
			XLREF12 ref;
		} sref;						/* xltypeSRef */
		struct 
		{
			XLMREF12 *lpmref;
			DWORD idSheet;
		} mref;						/* xltypeRef */
		struct 
		{
			struct xloper12 *lparray;
			RW rows;
			COL columns;
		} array;					/* xltypeMulti */
		struct 
		{
			union
			{
				int level;			/* xlflowRestart */
				int tbctrl;			/* xlflowPause */
				DWORD idSheet;			/* xlflowGoto */
			} valflow;
			RW rw;				       	/* xlflowGoto */
			COL col;			       	/* xlflowGoto */
			BYTE xlflow;
		} flow;						/* xltypeFlow */
		struct
		{
			union
			{
				BYTE *lpbData;			/* data passed to XL */
				HANDLE hdata;			/* data returned from XL */
			} h;
			long cbData;
		} bigdata;					/* xltypeBigData */
	} val;
	DWORD xltype;
} XLOPER12, *LPXLOPER12;

/*
** XLOPER and XLOPER12 data types
**
** Used for xltype field of XLOPER and XLOPER12 structures
*/

Với Excel 2003 trở về trước kiểu dữ liệu là XLOPER, Còn với Excel 2007 trở đi dùng XLOPER12 với lý do chính:

XLOPER dùng cho chuỗi AnsiString - LPSTR/PCHAR; Số dòng 65536, Cột là 255 nên biến Rows, Cols nhận kiểu WORD
XLOPER12 dùng cho chuỗi Unicode - PWCHAR/Delphi; Số dòng 1048576, Cột là 16384 nên biến Rows, Cols nhận kiểu INT32 (Integer/Delphi).

Với Excel 2003 trở về trước, số ký tự tối đa là 255 và ký tự không phải unicode nên trong Delphi sử dụng kiểu ShortString (vì bản chất ShortString là AnsiString[255])
Với Excel 2007 trở về sau, số ký tự tối đa là 32768 và ký tự là unicode nên trong Delphi sử dụng kiểu WideString, nhưng theo yêu cầu khai báo của Microsoft trong file xlcall.h thì phải dùng kiểu con trỏ PWideChar).

Để viết được xll cho Excel 2007 hoặc cao hơn với chuẩn unicode thì bạn buộc phải chuyển tất cả các kiểu dữ liệu thuộc XLOPER sang XLOPER12. Bạn hãy dựa vào khai báo cũ trong Delphi của bạn, so sánh với khai báo trong xlcall.h rồi đổi sang XLOPER12. Nếu đọc hiểu được khai báo trong C thì bạn làm việc này đơn giản.
 
Tôi xoá 3 bài cuối vì 2 bên không hiểu nhau, cụ thể là:
Siwtom đặt câu hỏi ở 1 mức độ A, NguyenDuyTuan trả lời theo cách hiểu câu hỏi của mình (cho rằng câu hỏi ở mức độ B (trình độ B của người hỏi))
Siwtom cho rằng câu trả lời không thoả đáng, và cho rằng (đại khái là) người trả lời dấu nghề

Tôi cho rằng:
- Siw tom đặt câu hỏi chưa chính xác đối với điều mình muốn (muốn abc32 thì hỏi xin thẳng abc32, đừng hỏi vòng vo)
- NguyenDuyTuan thì căn cứ vào câu hỏi (chưa rõ ràng) để trả lời, đã vậy lại theo 1 phong cách gợi ý chứ không xin cho

Do đó, các bài viết có nguy cơ biến từ thảo luận thành tranh luận và khích bác lẫn nhau (nhất là của siwtom). vậy tôi xoá 3 bài.

Đề nghị siwtom hỏi, xin, đúng vào điều mình muốn. Anh NguyenDuyTuan sẽ trả lời chính xác vào điều bạn muốn hay không, còn tuỳ lòng của anh ấy, nhưng ít nhất, bạn đã đặt đúng câu hỏi.
 
Tôi xoá 3 bài cuối vì 2 bên không hiểu nhau, cụ thể là:
Siwtom đặt câu hỏi ở 1 mức độ A, NguyenDuyTuan trả lời theo cách hiểu câu hỏi của mình (cho rằng câu hỏi ở mức độ B (trình độ B của người hỏi))
Siwtom cho rằng câu trả lời không thoả đáng, và cho rằng (đại khái là) người trả lời dấu nghề

Tôi cho rằng:
- Siw tom đặt câu hỏi chưa chính xác đối với điều mình muốn (muốn abc32 thì hỏi xin thẳng abc32, đừng hỏi vòng vo)
- NguyenDuyTuan thì căn cứ vào câu hỏi (chưa rõ ràng) để trả lời, đã vậy lại theo 1 phong cách gợi ý chứ không xin cho

Do đó, các bài viết có nguy cơ biến từ thảo luận thành tranh luận và khích bác lẫn nhau (nhất là của siwtom). vậy tôi xoá 3 bài.

Đề nghị siwtom hỏi, xin, đúng vào điều mình muốn. Anh NguyenDuyTuan sẽ trả lời chính xác vào điều bạn muốn hay không, còn tuỳ lòng của anh ấy, nhưng ít nhất, bạn đã đặt đúng câu hỏi.


Bạn nói không đúng rồi. Các câu tôi hỏi:
"Bạn có thể hướng dẫn tôi làm XLL không?"
Sợ hiểu lầm là xin code nên tôi ghi rõ:
"Còn cái XLL này thì làm như thế nào? New --> ??? --> OK --> New --> ??? --> OK. Những chỗ ??? là gì? Và cần những gì để sau khi compile là có được DLL? Và sau khi có được DLL thì chuyển sang XLL bằng cách nào? Đơn giản chỉ là đổi tên gi_do.dll thành gi_do.xll hay phải mệt hơn nữa? Về thuật toán, cách code thì tôi sẽ tự mầy mò, xin bạn chỉ giúp là tôi phải mở project loại gì - những "???" như ở trên. Và cần chú ý tới những gì nữa. vd. như hàm trả về chuỗi thì tôi cho trả về WideString được không hay "đồ chơi loại này" (COM) đòi hỏi phải trả về Variant?"
Bạn cho là tôi hỏi không rõ ràng, vòng vo?
Sau khi tự làm được thì tôi báo ngay để không trả lời về những câu hỏi đã đặt ra nữa. Tôi làm như thế để cho rõ ràng rồi còn gì. Về câu hỏi cuối của tôi thì:
"Vậy tôi có 1 câu hỏi cuối cùng. Bạn có cấu trúc XLOPER12 trong Delphi không? Nếu có thì tốt quá, còn không thì đành mầy mò thôi."
Bạn cho là câu hỏi không rõ ràng, vòng vo? Tôi nói rõ là tôi có 1 câu hỏi cuối cùng, và nó là: "Bạn có cấu trúc XLOPER12 trong Delphi không?"
Tôi không hỏi khai báo trong C như thế nào, không hỏi sự khác biệt giữa XLOPER và XLOPER12 hay ShortString, WideString như thế nào vì nhìn bài của tôi viết thì thấy rõ là tôi không hỏi những vấn đề đó vì tôi đã biết.
Tôi hỏi có XLOPER12 trong Delphi không. Câu trả lời chỉ có thể là Có hoặc Không. Hoặc là tôi có nhưng không chia sẻ được. Hoặc lờ câu hỏi đi như đã lờ 2 người trong chủ đề này. Làm thế cho khỏi mất thời gian của mình và của người khác.
Nếu sau khi kiểm tra lại bạn vẫn cho là tôi hỏi không rõ, vòng vo thì tôi đành chấp nhận và chúng ta dừng tại đây. Thực ra những chuyện không đâu chả đáng để chúng ta mất thời gian.
Chúc bạn một ngày mới tốt lành.
 
Web KT

Bài viết mới nhất

Back
Top Bottom