echo07
Nguyệt Hà
- Tham gia
- 24/8/07
- Bài viết
- 436
- Được thích
- 318
Em cần code để xuất dữ liệu (Text) từ Autocad ra Excel, em cop được đoạn code này ở bên Cadviet.
Nghe nói mã lệnh VBA này gọi Excel lên, sau đó add một Shet và saveas với tên file là Attribute.xls sau đó quét qua tất cả các đối tượng của AutoCAD, tìm các block, kiểm tra xem nó có Attribute không, nếu có thì viết giá trị của từng attribute vào các ô của excel. Mỗi giá trị một ô, mỗi block một dòng. Sau đó thì close chương trình Excel.
Nhưng em chạy thử thì Cad báo lỗi. Thật sự em k biết về VBA nên chịu chết. Các cao thủ chỉ giùm em nha, nhân tiện em up file cad lên với yêu cầu trong đó. các bác vui lòng chỉ giáo. Thanks.
Mã:
[SIZE="2"]
[B]Sub Ch12_Extract()[/B]
Dim Excel As Excel.Application
Dim ExcelSheet As Object
Dim ExcelWorkbook As Object
Dim RowNum As Integer: Dim Header As Boolean
Dim elem As AcadEntity: Dim Array1 As Variant
Dim Count As Integer
[COLOR="Blue"]' Launch Excel.[/COLOR]
Set Excel = New Excel.Application
[COLOR="Blue"]' Create a new workbook and find the active sheet.[/COLOR]
Set ExcelWorkbook = Excel.Workbooks.Add
Set ExcelSheet = Excel.ActiveSheet
ExcelWorkbook.SaveAs "Attribute.xls"
RowNum = 1: Header = False
[COLOR="Blue"]' Iterate through model space finding[/COLOR]
[COLOR="Blue"]' all block references.[/COLOR]
For Each elem In ThisDrawing.ModelSpace
With elem
[COLOR="Blue"]' When a block reference has been found,[/COLOR]
[COLOR="Blue"]' check it for attributes[/COLOR]
If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then
If .HasAttributes Then
[COLOR="Blue"]' Get the attributes[/COLOR]
Array1 = .GetAttributes
[COLOR="Blue"]' Copy the Tagstrings for the[/COLOR]
[COLOR="Blue"]' Attributes into Excel[/COLOR]
For Count = LBound(Array1) To UBound(Array1)
If Header = False Then
If StrComp(Array1(Count).EntityName, _
"AcDbAttribute", 1) = 0 Then
ExcelSheet.Cells(RowNum, _
Count + 1).value = _
Array1(Count).TagString
End If: End If
Next Count
RowNum = RowNum + 1
For Count = LBound(Array1) To UBound(Array1)
ExcelSheet.Cells(RowNum, Count + 1).value _
= Array1(Count).textString
Next Count
Header = True
End If: End If
End With
Next elem
Excel.Application.Quit
[B]End Sub [/B][/SIZE]
Nghe nói mã lệnh VBA này gọi Excel lên, sau đó add một Shet và saveas với tên file là Attribute.xls sau đó quét qua tất cả các đối tượng của AutoCAD, tìm các block, kiểm tra xem nó có Attribute không, nếu có thì viết giá trị của từng attribute vào các ô của excel. Mỗi giá trị một ô, mỗi block một dòng. Sau đó thì close chương trình Excel.
Nhưng em chạy thử thì Cad báo lỗi. Thật sự em k biết về VBA nên chịu chết. Các cao thủ chỉ giùm em nha, nhân tiện em up file cad lên với yêu cầu trong đó. các bác vui lòng chỉ giáo. Thanks.
By hai2hai: Tất cả những tiêu đề không rõ ràng như: "Giải thích giùm code" trong box này từ nay trở về sau sẽ bị xóa thẳng chứ ko được rename lại như lần này đâu. Mọi người chú ý là ko trả lời bài vi phạm nội quy nhé.
File đính kèm
Chỉnh sửa lần cuối bởi điều hành viên: