Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

AutoCAD với Excel


  • Please log in to reply
199 replies to this topic

#81 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 02 February 2008 - 03:53 PM

Nhờ các bạn xem giúp, cái lisp dưới thực hiện được những công việc gì, cách sử dụng lệnh lisp này làm sao. (mới down về đọc qua chẳng hiểu gì cả, chán quá, đúng là chẳng hiểu gì về lisp cả :)

Góp ý: với các code khá dài, bạn nên cho nó vào hộp codebox để bài viết gọn gàng (mình đã làm giúp bạn như trên)

Chương trình này rất hay, tập hợp một loạt functions để làm việc với excel bằng lisp.
Công dụng các functions:
- getexcel: 3 đối số là file_name, sheet_name và max_range. Return: list dữ liệu từ cell A1 đến cell ứng với max_range
- getcell: lấy dữ liệu tại 1 cell, được chỉ định bằng địa chỉ cell
- openexcel: mở file *.xls có trên đĩa
- putcell: gán giá trị cho cell
- closeexcel: đóng file *xls đã open ở trên
Để hiểu rõ hơn, bạn ghép thêm vào code có sẵn của bạn đoạn sau:
;;;Vi du ap dung cac function tren
;;;---------------------------------------------------------------------
(defun C:VD1()
(vl-load-com)
(setq fn (getfiled "Select Excel File" "" "xls" 0))
(getexcel fn "sheet1" "D5")
)
;;;---------------------------------------------------------------------
(defun C:VD2() (alert (strcat "B3 = " (getcell "B3"))))
;;;---------------------------------------------------------------------
(defun C:VD3() (openexcel fn "sheet4" T))
;;;---------------------------------------------------------------------
(defun C:VD4() (putcell "B10" (list "How" "are you?")))
;;;---------------------------------------------------------------------
(defun C:VD5() (closeExcel fn))

Tạo 1 file *.xls, ghi ở sheet1 các số liệu tuỳ ý, khoảng chừng 4 cột, 6 hàng. Save và thoát hẳn excel
lần lượt các lệnh từ VD1 đến VD5:
- VD1: lấy dữ liệu trong sheet1, từ cell A1 đến cell D5 của file mà bạn chỉ định và chuyển thành list. Bạn bấm F2 sau khi chạy xong sẽ thấy
- VD2: lấy dữ liệu ở cell B3
- VD3: mở file, tạo sheet mới có tên sheet4
- Vẫn để Excel hiện hành, quay lại Acad gõ VD4 -> Cell B10 sẽ được gán nội dung "How" và cell C10 là "are you?"
- VD5: save và thoát Excel

Thông suốt được những cái trên đây thì những functions còn lại không thành vấn đề. Chúng chỉ là những tiện ích hỗ trợ thêm (bạn đọc comments và examples của họ sẽ hiểu)
Khi đã nắm được toàn bộ, bạn sẽ giải quyết được vấn đề đã nêu ở topic "Ghi dữ liệu từ Cad sang file Excel đã có".
  • 4

#82 tnmtpc

tnmtpc

    biết dimcontinue

  • Members
  • PipPipPipPipPip
  • 370 Bài viết
Điểm đánh giá: 206 (khá)

Đã gửi 02 February 2008 - 04:26 PM

Góp ý: với các code khá dài, bạn nên cho nó vào hộp codebox để bài viết gọn gàng (mình đã làm giúp bạn như trên)

Chương trình này rất hay, tập hợp một loạt functions để làm việc với excel bằng lisp.
Công dụng các functions:
- getexcel: 3 đối số là file_name, sheet_name và max_range. Return: list dữ liệu từ cell A1 đến cell ứng với max_range
- getcell: lấy dữ liệu tại 1 cell, được chỉ định bằng địa chỉ cell
- openexcel: mở file *.xls có trên đĩa
- putcell: gán giá trị cho cell
- closeexcel: đóng file *xls đã open ở trên
Để hiểu rõ hơn, bạn ghép thêm vào code có sẵn của bạn đoạn sau:

;;;Vi du ap dung cac function tren
;;;---------------------------------------------------------------------
(defun C:VD1()
(vl-load-com)
(setq fn (getfiled "Select Excel File" "" "xls" 0))
(getexcel fn "sheet1" "D5")
)
;;;---------------------------------------------------------------------
(defun C:VD2() (alert (strcat "B3 = " (getcell "B3"))))
;;;---------------------------------------------------------------------
(defun C:VD3() (openexcel fn "sheet4" T))
;;;---------------------------------------------------------------------
(defun C:VD4() (putcell "B10" (list "How" "are you?")))
;;;---------------------------------------------------------------------
(defun C:VD5() (closeExcel fn))

Tạo 1 file *.xls, ghi ở sheet1 các số liệu tuỳ ý, khoảng chừng 4 cột, 6 hàng. Save và thoát hẳn excel
lần lượt các lệnh từ VD1 đến VD5:
- VD1: lấy dữ liệu trong sheet1, từ cell A1 đến cell D5 của file mà bạn chỉ định và chuyển thành list. Bạn bấm F2 sau khi chạy xong sẽ thấy
- VD2: lấy dữ liệu ở cell B3
- VD3: mở file, tạo sheet mới có tên sheet4
- Vẫn để Excel hiện hành, quay lại Acad gõ VD4 -> Cell B10 sẽ được gán nội dung "How" và cell C10 là "are you?"
- VD5: save và thoát Excel

Thông suốt được những cái trên đây thì những functions còn lại không thành vấn đề. Chúng chỉ là những tiện ích hỗ trợ thêm (bạn đọc comments và examples của họ sẽ hiểu)
Khi đã nắm được toàn bộ, bạn sẽ giải quyết được vấn đề đã nêu ở topic "Ghi dữ liệu từ Cad sang file Excel đã có".

Rất, rất cám ơn Ssg, đã mở mang cái đầu ra được đôi chút, nhưng hỏi thêm Ssg chút nữa, ở VD4, nếu không muốn ghi "are you?" vào C10, mà ghi ở E10 thì làm sao?; Làm sao để dữ liệu Cad đưa vào cell do người dùng chọn (như ví dụ trên thì nó luôn ở B10 và C10 đúng không)
  • 1

#83 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 04 February 2008 - 08:21 AM

Rất, rất cám ơn Ssg, đã mở mang cái đầu ra được đôi chút, nhưng hỏi thêm Ssg chút nữa, ở VD4, nếu không muốn ghi "are you?" vào C10, mà ghi ở E10 thì làm sao?; Làm sao để dữ liệu Cad đưa vào cell do người dùng chọn (như ví dụ trên thì nó luôn ở B10 và C10 đúng không)

Ví dụ là... ví dụ! Nó chỉ mang tính minh họa để chúng ta dễ tiếp cận một vấn đề mới. Điều quan trọng là bản chất sự việc, là cái tổng quát mà chúng ta rút ra được từ chúng.
Đoạn code sau đúng theo ý bạn, nhưng nó cũng vẫn là ví dụ!
;;;----------------------------------------------------------------------
(defun C:VD4()
(putcell "B10" "How")
(putcell "E10" "are you?")
(setq mycell (getstring "\nCell address:"))
(putcell mycell "I'm fine, thank you!")
)
;;;----------------------------------------------------------------------

Góp ý: Có lẽ bạn nên dành thời gian thích đáng để tự lập những chương trình lisp cơ bản. Khi đã có nền tảng tương đối vững chắc, bạn quay lại cái này sẽ thấy rất dễ dàng.
  • 2

#84 phutho86

phutho86

    biết pan

  • Members
  • Pip
  • 9 Bài viết
Điểm đánh giá: 2 (bình thường)

Đã gửi 20 February 2008 - 10:17 PM

em thấy các bác sử dụng rất nhiều lệnh lạ mà em không biết, bác có tài liệu nào nói về cách sử dụng các lệnh đó không?send cho em với, thanks
  • 0

#85 tienlagiay_dxt

tienlagiay_dxt

    biết lệnh trim

  • Members
  • PipPipPip
  • 191 Bài viết
Điểm đánh giá: 185 (tàm tạm)

Đã gửi 21 February 2008 - 09:31 AM

em thấy các bác sử dụng rất nhiều lệnh lạ mà em không biết, bác có tài liệu nào nói về cách sử dụng các lệnh đó không?send cho em với, thanks

Không biết lệnh lạ theo ý bạn là sao
Mình nghĩ chắc là các lệnh trong lisp, đó là các lệnh do người viết lisp tự đặt ra nên hông giống ai :)
  • 0

#86 dacvien2007

dacvien2007

    biết vẽ polygon

  • Members
  • PipPip
  • 75 Bài viết
Điểm đánh giá: 10 (tàm tạm)

Đã gửi 21 February 2008 - 09:33 PM

Để làm gì hả bạn?

Qua phần giới thiệu xuất giửa Acad sang Excel
Em muốn nhờ anh giúp cho việc xuất số liệu sang Excel cua Cad
Như em có bản vẽ san nền có cao độ tự nhiên ở các mắt lưới, muốn xuất các text đó sang cột dọc ví như từ ô A1....An theo cột dọc A, từ ô B1....Bn theo cột dọc B của Excel phải làm như sao? yêu cầu bấm vào số text. để tính ra cao độ trung bình của từng Ô. ví dụ Sheet 1 CDTN
Và bấm số diện tích để chuyển sang Ô Excel để dùng tính khối lượng, Sheet 2 Khốiluong ô
Em xin nhờ anh giúp.
  • 0

#87 tvduc

tvduc

    biết vẽ line

  • Members
  • PipPip
  • 22 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 28 February 2008 - 11:40 PM

Mình nhờ tất cả các bạn quan tâm đến chủ đề này một việc: kiểm tra giúp đoạn lisp sau có chạy được với mọi version của Acad lẫn Excel hay không (đặc biệt chú trọng đến version của Excel......

TEST ; error: no function definition: GET_XL
cad 2008
excel 2003
  • 0

#88 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 29 February 2008 - 11:52 AM

TEST ; error: no function definition: GET_XL
cad 2008
excel 2003

Cám ơn bạn đã quan tâm. Theo thông báo thì Acad không hiểu function GET_XL, nghĩa là trình lisp không hoàn thành việc load vào memory đúng cú pháp, chưa thể kết luận được. Nguyên nhân bạn Nộ Thiên đã nói trên rồi, việc mã hoá ký tự b đứng kề dấu ) của diễn đàn bị sai lệch.
Bạn vui lòng download lại file này và thử lại, sau đó báo kết quả nhé?

http://www.esnips.co...6d5/data_excel2
  • 0

#89 xaydungcauduong

xaydungcauduong

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 10 March 2008 - 01:46 AM

Tôi có một số ý kiến về việc xuất tọa độ và ghi chú trong phần trắc địa:(Làm tay bo không sử dụng chương trình chuyên dùng)
1. Việc xuất tọa độ và cao độ hoặc ghi chú của các điểm từ file Excel qua Cad là khá đơn giản theo tôi không cần phải lập riêng file Autolisp để sử lý số liệu (mất thời gian). -> Có thể viết luôn trên Excel và sau đó paste qua Cad.
2. Đối với anh em chưa thạo lisp có thể lập một file mẫu Excel từ đó có thể coppy và paste công thức để dùng cho các công trình khác nhau.
Mẫu cơ bản cần có:
- Xuất tọa độ của một điểm (đã biết tọa độ x,y) hặc insert một Block (khi đó Point của bạn có được hình dạng bất kỳ mà bạn muốn, ứng dụng rộng ra bạn có thể đưa được các loại địa vật mà bạn đã đo được trên thực địa)
- Xuất một dòng Text (đã biết nội dung dòng text và vị trí cần thiết để đặt dòng text)
*** 2 ý trên có thể thay bằng việc Insert một Block có thuộc tính ***
- Vẽ đường line hoặc Pline qua các điểm
.....
3. Bạn đo ngoài hiện trường bằng nhiều phương pháp khác nhau nhưng chung quy lại vẫn có thể đưa về dạng tọa độ (vậy tại sao không làm việc này trong Excel) rồi lại làm như khi ta đã có tọa độ.


Trên đây là một số ý kiến nhỏ của tôi để anh em cùng nghiên cứu và thảo luận...
  • 0

#90 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 10 March 2008 - 08:56 AM

Tôi có một số ý kiến về việc xuất tọa độ và ghi chú trong phần trắc địa:(Làm tay bo không sử dụng chương trình chuyên dùng)
1. Việc xuất tọa độ và cao độ hoặc ghi chú của các điểm từ file Excel qua Cad là khá đơn giản theo tôi không cần phải lập riêng file Autolisp để sử lý số liệu (mất thời gian). -> Có thể viết luôn trên Excel và sau đó paste qua Cad.
2. Đối với anh em chưa thạo lisp có thể lập một file mẫu Excel từ đó có thể coppy và paste công thức để dùng cho các công trình khác nhau.
Mẫu cơ bản cần có:
- Xuất tọa độ của một điểm (đã biết tọa độ x,y) hặc insert một Block (khi đó Point của bạn có được hình dạng bất kỳ mà bạn muốn, ứng dụng rộng ra bạn có thể đưa được các loại địa vật mà bạn đã đo được trên thực địa)
- Xuất một dòng Text (đã biết nội dung dòng text và vị trí cần thiết để đặt dòng text)
*** 2 ý trên có thể thay bằng việc Insert một Block có thuộc tính ***
- Vẽ đường line hoặc Pline qua các điểm
.....
3. Bạn đo ngoài hiện trường bằng nhiều phương pháp khác nhau nhưng chung quy lại vẫn có thể đưa về dạng tọa độ (vậy tại sao không làm việc này trong Excel) rồi lại làm như khi ta đã có tọa độ.


Trên đây là một số ý kiến nhỏ của tôi để anh em cùng nghiên cứu và thảo luận...


Nếu chỉ với mục đích trên thì không có vấn đề gì, làm thế nào cũng được, tuỳ thói quen và sở trường của mỗi người, miễn là đạt hiệu quả công việc. Cách làm của bạn cũng được khá nhiều người dùng, nhất là với các bạn thích "chơi" với Excel.
Tuy nhiên, nếu có thể làm chủ được hoàn toàn việc xuất nhập dữ liệu cả 2 chiều: Excel->Cad và Cad->Excel (bằng Lsp, VBA hay Arx thì cũng tuỳ mỗi người), bạn có thể lập nên những ứng dụng hiệu quả hơn thế rất nhiều.
Lý do mất thời gian lập trình của bạn không thuyết phục. Mất thời gian chỉ 1 lần nhưng tiết kiệm được thời gian nhiều lần sau đó. Ngoài ra, nếu bạn có thể share chương trình của mình cho nhiều người khác thì sự mất thời gian đó cũng xứng đáng!
  • 1

#91 xaydungcauduong

xaydungcauduong

    Chưa sử dụng CAD

  • Members
  • Pip
  • 2 Bài viết
Điểm đánh giá: 0 (bình thường)

Đã gửi 10 March 2008 - 10:05 AM

Nếu chỉ với mục đích trên thì không có vấn đề gì, làm thế nào cũng được, tuỳ thói quen và sở trường của mỗi người, miễn là đạt hiệu quả công việc. Cách làm của bạn cũng được khá nhiều người dùng, nhất là với các bạn thích "chơi" với Excel.
Tuy nhiên, nếu có thể làm chủ được hoàn toàn việc xuất nhập dữ liệu cả 2 chiều: Excel->Cad và Cad->Excel (bằng Lsp, VBA hay Arx thì cũng tuỳ mỗi người), bạn có thể lập nên những ứng dụng hiệu quả hơn thế rất nhiều.
Lý do mất thời gian lập trình của bạn không thuyết phục. Mất thời gian chỉ 1 lần nhưng tiết kiệm được thời gian nhiều lần sau đó. Ngoài ra, nếu bạn có thể share chương trình của mình cho nhiều người khác thì sự mất thời gian đó cũng xứng đáng!


Việc Mất thời gian chỉ tôi chỉ muốn nêu trong trường hợp bài toán cụ thể này vì chỉ dùng các lệnh đơn giản. Đương nhiên tôi đồng ý với bạn viết chương trình, đặc biệt là những việc cần sử lý phức tạp thì cần phải dùng chương trình là tốt nhất.
  • 0

#92 ducmanh_gha

ducmanh_gha

    biết zoom

  • Members
  • Pip
  • 10 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 20 March 2008 - 11:03 PM

Thua cac bac em co 1 bai toan nhu the nay: Tinh toan so luong coc tu excel roi xuat ban ve mat bang bo tri coc ra autocad.Mong cac bac giup cho
  • 0

#93 ducmanh_gha

ducmanh_gha

    biết zoom

  • Members
  • Pip
  • 10 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 26 March 2008 - 10:10 AM

giúp em: Nhập số liệu từ excel rồi xuất bản vẽ sang autocad
http://www.cadviet.c...es/bai_toan.doc
email : Ducmanhgha09@gmail.com
  • 0

#94 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 4105 Bài viết
Điểm đánh giá: 4495 (đỉnh cao)

Đã gửi 26 March 2008 - 01:51 PM

giúp em: Nhập số liệu từ excel rồi xuất bản vẽ sang autocad
http://www.cadviet.com/upfiles/bai_toan.doc
email : Ducmanhgha09@gmail.com

Bạn hãy post lên 2 file.

1 file là file Excel đầu vào đã kết xuất ra định dạng CSV.
1 file là file CAD kết quả mà bạn mong muốn sẽ nhận được từ file đầu vào.

file word của bạn quá ít thông tin.
  • 0

#95 ducmanh_gha

ducmanh_gha

    biết zoom

  • Members
  • Pip
  • 10 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 03 April 2008 - 08:39 PM

http://www.cadviet.c...es/ung_dung_nen
đây là file VBA em mới làm xong .mọi người xem rồi cho ý kiến
  • 0

#96 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 05 April 2008 - 03:35 PM

http://www.cadviet.com/upfiles/ung_dung_nen
đây là file VBA em mới làm xong .mọi người xem rồi cho ý kiến

Bạn kiểm tra lại xem, không down được!
  • 0

#97 ducmanh_gha

ducmanh_gha

    biết zoom

  • Members
  • Pip
  • 10 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 09 April 2008 - 04:27 PM

http://www.cadviet.c...ng_dung_nen.rar
ban xem thu
  • 0

#98 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 09 April 2008 - 05:21 PM

http://www.cadviet.c...ng_dung_nen.rar
ban xem thu

Kết quả chạy OK. Mình có vài góp ý:
1) Đây là bài toán rất đơn giản với ngôn ngữ lisp. Đoạn lisp sau cho kết quả tương đương với cái bạn đã làm. Appload, gõ lệnh COC, đáp ứng các yêu cầu của chương trình:

(defun C:COC( / H C D Kc Km p1 X Y p2 p3 oldos)
(setq
H (getint "\nSo hang:")
C (getint "\nSo cot:")
D (getreal "\nDuong kinh coc:")
Kc (getreal "\nKhoang cach cac coc:")
Km (getreal "\nKhoang cach tu mep be den tim coc:")
p1 (getpoint "\nBase point:")
X (+ (* (- C 1) Kc) (* 2 Km))
Y (+ (* (- H 1) Kc) (* 2 Km))
p2 (list (+ (car p1) X) (+ (cadr p1) Y))
p3 (list (+ (car p1) Km) (+ (cadr p1) Km))
oldos (getvar "osmode")
)
(setvar "osmode" 0)
(command "rectangle" p1 p2)
(command "circle" p3 (/ D 2))
(command "array" (entlast) "" "R" H C Kc Kc)
(setvar "osmode" oldos)
(princ)
)


2) Nếu bạn có ý định làm cái này để nghiên cứu và phát triển thêm nhiều ứng dụng phức tạp hơn theo hướng: dùng các công cụ Excel để tính toán và xuất kết quả sang CAD thì mình đề nghị bạn nên chăm chút hơn về hình thức của bảng Excel. Thiết kế bố trí lại các cell, sử dụng màu sắc thật bắt mắt như là một Application. Ngoại trừ các cell để user nhập liệu, các cell còn lại bạn lock toàn bộ, không cho user chỉnh sửa gì. Sau khi nhập liệu, dùng command_button để xuất kết quả sang CAD.
Phát triển ứng dụng theo kiểu này cũng là một hướng rất hay. Chương trình MitCalc chuyên về tính toán thiết kế các chi tiết máy cơ khí là một ví dụ điển hình.
  • 0

#99 ducmanh_gha

ducmanh_gha

    biết zoom

  • Members
  • Pip
  • 10 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 11 April 2008 - 09:58 PM

thực ra minh mới bắt tay vào làm VBA nhưng thấy rất hay .Đáng để anh em kỹ thuật ứng dụng vào công viêc của mình
Đây là một file hoàn thiện hơn bao gồm măt bằng và mặt đứng của bệ cọc
Với thông số đầu vào là đk cọc,số hàng số cột,chiều dài cọc và chiều cao bệ cọc
bản vẽ sẽ được tự động vẽ trong autocad
http://www.cadviet.c..._dung_nen_1.rar
  • 0

#100 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 12 April 2008 - 02:17 PM

thực ra minh mới bắt tay vào làm VBA nhưng thấy rất hay .Đáng để anh em kỹ thuật ứng dụng vào công viêc của mình
Đây là một file hoàn thiện hơn bao gồm măt bằng và mặt đứng của bệ cọc
Với thông số đầu vào là đk cọc,số hàng số cột,chiều dài cọc và chiều cao bệ cọc
bản vẽ sẽ được tự động vẽ trong autocad
http://www.cadviet.c..._dung_nen_1.rar

Mình có vài góp ý sau:

1) Nội dung cụ thể bạn làm mình không quan tâm vì nó chẳng phải chuyên ngành của mình. Ngoài ra, các chương trình VB nói chung có một nhược điểm chí mạng: phụ thuộc quá nhiều vào cái đám Libraries -> phụ thuộc vào version của Excel, VB lẫn Acad. Điều đó có nghĩa là, cái bạn làm chạy rất tốt trên máy bạn nhưng khi share cho ai đó thì chưa chắc họ dùng được. Ví dụ, bản thân mình muốn thử chương trình của bạn cũng phải vào Tools - References khai báo lại AutoCAD Type Library. Nếu không, chương trình cứ báo error!
Chính vì thế, đã từ lâu mình không có hứng thú lập trình bằng VB nữa mà chuyển sang "chơi" với Lisp.
Nếu bạn có ý phát triển theo hướng này thì nên chú ý đến vấn đề Version và Libraries

2) Về hình thức, bạn đừng bố trí các cell lung tung như vậy mà tập trung nó lại theo một trật tự hợp lý. Trong đó, các cell dành cho nhập liệu gom vào 1 chỗ. Ví dụ như hình sau:

Hình đã gửi

Trong đó:
- Các cells màu xanh lá cây là dành cho user nhập liệu
- Tất cả các cells khác, sau khi gán công thức và hoàn thiện thì lock chúng lại (dùng tính năng protection của Excel). User không thể sửa đổi bất cứ cái gì trong các cells này (nội dung, hình thức lẫn vị trí)
- Các cells ghi kết quả trung gian, ví dụ như kết quả toạ độ các điểm, cho chúng Hide luôn
- Sau khi nhập liệu, user bấm "Send to AutoCAD" là toàn bộ kết quả được export sang CAD. Họ không cần biết Macro hay Visual Basic là cái quỷ quái gì!
Như vậy, file Excel của bạn có dáng dấp của một Application hoàn chỉnh, sử dụng thân thiện và hiệu quả hơn, không bao giờ xảy ra tình trạng user thao tác sai làm mất các công thức đã được gán.
Mà cho dù bạn không có ý phổ biến, tự chế tự dùng đi nữa, chính bạn cũng cảm thấy thoải mái và hiệu quả hơn khi sử dụng.

3) Về cung cách coding, bạn đừng viết một mạch từ trên xuống dưới như vậy mà nên chia nhỏ chương trình ra thành nhiều sub, mỗi sub chỉ nên có 1 hoặc vài chức năng nào đó thôi. Những sub có khả năng lặp đi lặp lại trong nhiều chương trình thì nên khái quát hoá chúng (không chứa nội dung cụ thể của 1 bảng Excel cụ thể nào), tạo thành Public Sub, lưu ở cấp độ Modules. Làm như vậy, bạn sẽ dễ check lỗi khi chạy thử cũng như đỡ vất vả hơn khi thiết kế các chương trình lớn và phức tạp hơn.
  • 0