Lisp xuất bảng từ CAD sang Excel là thứ người làm dự toán tìm nhiều nhất, khi bảng thống kê trong bản vẽ đã dài vài trăm dòng và gõ tay lại thì mất cả buổi. Gói tải ở bài này có đúng một tệp lisp 478 dòng, chạy bằng lệnh TE. Bài viết nói rõ cách nạp cho AutoCAD 2026 và những chỗ số liệu dễ hỏng khi sang Excel.
Tóm tắt. Gói tải nặng 69.680 byte, bên trong đúng một tệp lisp và đúng một lệnh, tên là TE. Mật khẩu giải nén là autocad123. Lệnh chỉ nhận bảng vẽ tay bằng các đoạn LINE cộng chữ rời, không nhận đối tượng TABLE và không nhận đường vẽ bằng lệnh PLINE. Máy phải có Microsoft Excel. Chỗ mất dữ liệu hay gặp nhất là số hiệu có số 0 đứng đầu: 007 sang Excel thành 7.
TE_TableExport.lsp — xuất bảng sang Excel
Đúng liên kết Google Drive của bài gốc, giữ nguyên xi.
- Dung lượng tải 69.680 byte, khoảng 68 KB.
- Ruột gói một tệp LSP duy nhất, 17.104 byte, 478 dòng.
- Số lệnh một lệnh, gõ là
TE. - Đòi hỏi AutoCAD bản đầy đủ và Microsoft Excel cài sẵn.
Mật khẩu giải nén: autocad123
Lisp xuất bảng từ CAD sang Excel này đọc được những gì
Mã nguồn cho biết chính xác lệnh nhìn thấy cái gì. Sau khi bạn quét chọn, nó lọc vùng chọn thành ba nhóm. Nhóm thứ nhất là các đoạn LINE, dùng để dựng lưới hàng cột. Nhóm thứ hai là chữ, gồm cả TEXT lẫn MTEXT. Nhóm thứ ba là khối, tức đối tượng INSERT. Nếu việc của bạn chỉ là cộng nhanh mấy con số nằm trong đám chữ đó, không cần bảng sang Excel, thì lisp thống kê text làm gọn hơn.
Lưới ô được suy ra từ toạ độ hai đầu của từng đoạn thẳng. Lệnh gom hết hoành độ vào một danh sách, gom hết tung độ vào một danh sách khác, rồi sắp xếp lại. Khoảng cách giữa hai giá trị liền nhau chính là bề rộng cột hoặc chiều cao hàng. Mỗi dòng chữ rơi vào ô nào thì tính theo điểm giữa của khung bao quanh nó.
Hình 1. Ba loại đối tượng lệnh TE đọc được, và những loại nó bỏ qua hoàn toàn.
Bảng phải vẽ bằng LINE, không phải TABLE của AutoCAD
Đây là chỗ nhiều người thất bại ngay bước đầu. Danh sách kiểu đối tượng trong mã chỉ có LINE, POLYLINE, TEXT, MTEXT và INSERT. Đối tượng TABLE do lệnh TABLE tạo ra không nằm trong danh sách đó. Quét chọn một bảng TABLE rồi gõ TE thì lệnh không tìm ra đường kẻ nào, không dựng nổi lưới ô, và dừng giữa chừng.
Bảng TABLE thật thì AutoCAD đã có sẵn lệnh riêng để xuất, nói ở mục dưới. Lisp này sinh ra cho loại bảng kẻ tay, thứ chiếm phần lớn bản vẽ Việt Nam đời trước.
Nét vẽ bằng lệnh PLINE thì lisp không thấy
Trong mã chỉ ghi hai tên là LINE và POLYLINE. Nhưng đường vẽ bằng lệnh PLINE ngày nay được ghi vào bản vẽ dưới tên LWPOLYLINE, một tên khác hẳn. Cái tên POLYLINE trong mã là kiểu đường nặng đời cũ, và ngay cả kiểu đó thì hàm đọc toạ độ cũng không lấy được đỉnh, vì đỉnh nằm ở các đối tượng con.
Nói cho gọn: chỉ những đoạn LINE mới dựng được lưới ô. Nếu khung bảng của bạn vẽ bằng PLINE thì chọn riêng khung đó, gõ EXPLODE một lần để nó rã thành các đoạn LINE, rồi mới gọi TE.
Nạp và chạy trên AutoCAD 2026
Muốn dùng được lisp xuất bảng từ CAD sang Excel thì phải nạp tệp vào AutoCAD trước. Giải nén xong bạn được một tệp TE_TableExport.lsp. Chép nó vào một thư mục cố định, ví dụ D:\lisp, đừng để trong thư mục tải về. Sau đó gõ APPLOAD, trỏ tới tệp, bấm Load. Muốn dùng lâu dài thì thêm vào mục Startup Suite ngay trong hộp thoại đó. Cách làm chi tiết có ở bài cách load lisp trong CAD.
Vì sao nạp xong gõ TE lại không thấy gì
Bản 2026 xét tệp lisp chặt hơn hẳn các bản mười năm trước. Tệp chưa ký số và nằm ngoài thư mục tin cậy sẽ làm hiện hộp thoại Security. Bạn phải tự bấm một trong ba nút thì AutoCAD mới chạy tiếp.
Hình 2. Hộp thoại cảnh báo trên AutoCAD 2026. Always Load là nhớ luôn, Load Once là chỉ lần này, Do Not Load là bỏ.
Khó chịu hơn là trường hợp không có hộp thoại nào. AutoCAD 2026 có thể bỏ qua tệp trong im lặng, không báo lỗi, không ghi dòng nào ở dòng lệnh. Người dùng tưởng tệp hỏng hoặc tải thiếu, trong khi tệp vẫn nguyên vẹn. Cách chữa là khai thư mục chứa lisp vào mục Trusted Locations trong hộp thoại OPTIONS, thẻ Files.
Hình 3. Hộp thoại Options, thẻ Files. Mục Trusted Locations nằm ngay dưới Working Support File Search Path.
Tên lệnh TE không đụng lệnh nào có sẵn
Đặt tên lệnh hai chữ cái luôn có rủi ro trùng. Tệp acad.pgp của bản 2026 có 413 dòng gõ tắt, trong đó T gọi MTEXT, TA gọi TEXTALIGN, TB gọi TABLE. Không có dòng nào tên TE, nên tên lệnh này dùng được, không phải sửa gì.
Sáu bước chạy thật
Trình tự đúng. Một, mở bản vẽ chứa bảng. Hai, nếu khung bảng vẽ bằng PLINE thì rã bằng EXPLODE. Ba, gõ TE rồi Enter. Bốn, quét chọn cả bảng, gồm cả đường kẻ lẫn chữ, rồi Enter. Năm, chờ AutoCAD phóng to vùng chọn và dò các ô gộp, giai đoạn này màn hình có thể đứng vài giây. Sáu, Excel tự mở lên với bảng đã kẻ khung.
Lệnh không sửa gì trong bản vẽ. Nó chỉ gọi đúng một lệnh của AutoCAD là ZOOM theo vùng chọn, và tạm giấu chữ đi trong lúc dò ô gộp rồi hiện lại. Bản vẽ của bạn sau khi chạy vẫn y nguyên, trừ khung nhìn bị phóng to.
Hình 4. Bảng ví dụ trong bản vẽ: dòng tiêu đề gộp suốt bốn cột, dưới là hàng đầu đề và sáu hàng số liệu.
Hình 5. Kết quả bên Excel. Ô tiêu đề đã gộp đúng từ A1 tới D1, khung được kẻ, mọi ô căn giữa.
Ảnh trên là kết quả thật của bản cũ và vẫn đúng với mã hiện nay. Mọi ô đều căn giữa vì ở bước cuối lệnh đặt căn giữa cho toàn bộ vùng đã dùng, ghi đè lên căn lề riêng của từng ô đặt ở bước trước. Bề rộng cột là do Excel tự dãn theo nội dung, không lấy theo bề rộng cột bên CAD. Chiều cao hàng thì lệnh không truyền sang, nên Excel giữ chiều cao mặc định. Căn lề chỉ bị ghi đè ở bên Excel, chữ trong bản vẽ vẫn nguyên; muốn nắn căn lề của chữ ngay trong CAD thì đó là việc của lisp sắp xếp text.
Số liệu vào Excel dưới dạng gì
Đây là phần bài cũ không hề nhắc, mà lại là chỗ hỏng việc nhiều nhất khi bạn định cộng khối lượng. Mã ghi từng ô bằng một biến thể kiểu chuỗi, tức là đưa sang Excel một dãy ký tự chứ không phải một con số. Việc dãy ký tự đó có hoá thành số hay không là do Excel tự đoán, theo quy ước dấu của máy bạn.
Trên máy đặt dấu chấm làm dấu thập phân, các chuỗi hay gặp sang Excel thành thế này.
| Chuỗi đưa sang | Ô nhận được | Cộng được không |
|---|---|---|
| 1.1 | số, đúng giá trị 1.1 | Được. Cộng 1.1 với 2.6 ra đúng 3.7 |
| 007 | số 7 | Được, nhưng mất hai số 0 đứng đầu |
| 1,5 | văn bản, không phải số | Không. Hàm cộng bỏ qua ô này |
| Cột 1 | văn bản | Không, và đúng như mong đợi |
Số hiệu có số 0 đứng đầu bị nuốt
Bảng thống kê cấu kiện hay dùng số hiệu kiểu 001, 07, 0125. Excel coi những chuỗi đó là số nên cắt hết số 0 phía trước. Cột số hiệu của bạn sang bên kia thành một cột số vô nghĩa, và ghép lại với bảng khác thì không khớp.
Cách chữa đơn giản nhất là làm sau khi xuất. Chọn cột số hiệu bên Excel, đặt định dạng ô về Text, rồi gõ lại vài giá trị bị hỏng. Nếu bảng dài thì thêm một cột phụ dùng hàm ghép chuỗi để bù số 0. Chữa trước khi xuất thì không được, vì lệnh luôn tạo sổ mới và bạn không kịp đặt định dạng cho sổ đó.
Dấu thập phân phải khớp với máy
Bản vẽ Việt Nam hay ghi số lẻ bằng dấu phẩy, kiểu 1,5. Trên máy đặt dấu chấm làm dấu thập phân, chuỗi đó sang Excel nằm lại dạng văn bản, và hàm cộng bỏ qua nó. Cùng bảng ấy, ô ghi 1.1 lại thành số cộng được bình thường.
Trước khi trách lisp, hãy xem lại quy ước dấu trong bản vẽ và quy ước dấu của Windows có khớp nhau không. Hai bên khớp thì cả cột thành số, cộng được ngay. Hai bên lệch thì cả cột thành văn bản, và trong Excel nó hiện ra sát mép trái thay vì mép phải. Số lẻ dài lê thê trong bảng thường là do con số chép từ đường kích thước sang; cắt bớt chữ số ngay từ trong bản vẽ thì dùng lisp làm tròn số của Dim.
Bốn chỗ dễ vỡ còn lại
| Chỗ vỡ | Vì sao | Làm gì |
|---|---|---|
| Ô gộp bị dò sai | Lệnh dò ô gộp bằng cách thử bấm vào từng điểm trên màn hình sau khi phóng to. Tác giả ghi thẳng trong chú thích rằng cách này hỏng nếu ở mức phóng đó không thể bấm trượt được | Chia bảng quá lớn thành vài phần rồi xuất từng phần |
| Chữ có trường dữ liệu | Lệnh lấy chuỗi gốc của đối tượng chữ, nên một trường tự động sẽ sang Excel dưới dạng mã trường, không phải giá trị đang hiện | Bấm chuột phải vào chữ đó, chọn Convert Field To Text, rồi mới xuất |
| Khối dồn vào một ô | Khối và các thuộc tính của nó bị nối thành một chuỗi duy nhất, mở đầu bằng chữ Block | Bảng nào chứa nhiều khối thì nên dùng lệnh trích dữ liệu, nói ở mục dưới |
| Hai dòng chữ trong một ô | Ô nào nhận hai đối tượng chữ thì hai chuỗi bị nối lại, cách nhau một dấu cách, xếp theo cao độ | Gộp sẵn thành một dòng chữ bên CAD trước khi xuất |
Còn một điểm nhỏ nên biết. Lệnh tắt tiếng dòng nhắc trong lúc dò ô gộp, rồi lúc xong thì đặt thẳng biến đó về 0 chứ không trả về giá trị cũ. Với gần như mọi người thì giá trị cũ vốn đã là 0, nên không ai thấy khác biệt.
Khi nào nên dùng công cụ sẵn có của AutoCAD
Không phải bảng nào cũng cần lisp. AutoCAD 2026 có sẵn ba lệnh làm việc này, cả ba đều nằm trong bộ cài chuẩn.
Hình 6. Bốn tình huống và công cụ tương ứng. Cả ba lệnh của AutoCAD đều có trong bản 2026.
Điểm khác nhau đáng kể nhất nằm ở chiều dữ liệu. Lệnh TE và lệnh TABLEEXPORT đều là một chiều: xuất xong là hai bên rời nhau, sửa bên nào bên kia không biết. Lệnh DATALINK thì buộc bảng trong CAD vào một vùng trong tệp Excel, sửa tệp Excel rồi cập nhật lại là bảng trong bản vẽ đổi theo.
Câu hỏi thường gặp
Lisp xuất bảng từ CAD sang Excel này có chạy trên AutoCAD LT không
Không. AutoCAD LT có AutoLISP từ bản 2024 trở đi, nên rào cản quen thuộc đã bớt. Nhưng tệp này gọi giao diện tự động của Windows ngay từ đầu, và toàn bộ phần ghi sang Excel đều dựa vào giao diện đó. Phần này LT không có, nên lệnh không chạy được.
Máy không cài Excel thì sao
Lệnh sẽ hỏng ở bước xin mở Excel. Không có cách thay thế trong chính tệp lisp, vì nó ghi thẳng vào ô của Excel chứ không sinh ra tệp trung gian. Máy chỉ có bộ ứng dụng văn phòng miễn phí khác thì nên dùng lệnh TABLEEXPORT cho bảng TABLE, vì lệnh đó cho ra tệp CSV mà phần mềm nào cũng đọc.
Bảng bên Excel có tự lưu lại không
Không. Lệnh tạo một sổ mới rồi để nguyên đó, chưa lưu lần nào. Bạn phải tự bấm lưu và tự đặt tên. Đóng nhầm mà không lưu là mất trắng, phải chạy lại từ đầu.
Đổi tên lệnh TE thành tên khác được không
Được. Mở tệp lisp bằng Notepad, tìm dòng đầu tiên có defun c:TE, đổi hai chữ cái đó thành tên bạn muốn rồi lưu lại. Cách khác là giữ nguyên tệp và thêm một dòng gõ tắt vào acad.pgp. Nhớ tránh trùng với 413 dòng gõ tắt có sẵn.
Chạy xong Excel có bị treo lại trong bộ nhớ không
Không, tệp này viết cẩn thận ở khoản đó. Trước khi kết thúc, lệnh nhả hết các đối tượng nó đã mượn của Excel rồi dọn bộ nhớ ba lượt. Nhờ vậy không còn tiến trình Excel chạy ngầm sau khi bạn đóng cửa sổ.
Một lưu ý về nguồn gốc. Phần chú thích trong mã ghi công nhiều tác giả khác nhau trên các diễn đàn AutoLISP nước ngoài, mỗi người đóng một hàm nhỏ. Đây là bộ mã cộng đồng góp lại, không phải sản phẩm của một người. Cuối tệp còn một dòng tiêu đề để trống, chỗ dành cho một lệnh thứ hai chưa bao giờ được viết.
Xem thêm
Các bộ lisp khác mà trang đang giữ, kể cả những bộ làm việc khác hẳn bảng biểu, gom cả ở danh mục lisp tổng hợp.









