2008年12月9日 星期二

將標註的測量值傳送到 Excel 活頁簿內

'執行下列的巨集會要求選取圖面上的物件,選完後會將「線性標註」及「對齊式標註」的測量值傳到一個新的 Excel 活頁簿內。

Sub SendDIM2Excel()
    Dim ssel As AcadSelectionSet
    Dim ett As AcadEntity
    Dim FilterType(0) As Integer
    Dim FilterData(0) As Variant
    FilterType(0) = 0
    FilterData(0) = "DIMENSION"
    On Error Resume Next
    ThisDrawing.SelectionSets("Test").Delete
    On Error GoTo 0
    Set ssel = ThisDrawing.SelectionSets.Add("Test")
    ssel.SelectOnScreen FilterType, FilterData
    If ssel.Count > 0 Then
        Dim xlapp As Object
        Dim xlbook As Object
        Dim rng As Object
        Set xlapp = CreateObject("Excel.Application")
        Set xlbook = xlapp.Workbooks.Add
        xlapp.Visible = True
        For Each ett In ssel
            If ett.ObjectName = "AcDbAlignedDimension" Or ett.ObjectName = "AcDbRotatedDimension" Then
                Set rng = xlbook.Sheets(1).Range("A65536").End(-4162).Offset(1, 0)
                rng = ett.ObjectName
                rng.Offset(0, 1) = ett.Measurement
            End If
        Next
    Set xlapp = Nothing
    Set xlbook = Nothing
    Set rng = Nothing
    End If
    ssel.Delete
    Set ssel = Nothing
    Set ett = Nothing
End Sub