2013-04-23 42 views
1

我正在掃描包含表格內部和外部的列表元素的文檔。一旦我找到一個列表元素,我將它的層次結構編號和與它相關的文本導出到Excel中。我的掃描是基於列表元素而不是專門的表格。確定哪個表ListParagraph元素出現在Word VBA中

在某些情況下,list元素將出現在表的第一列中,並且與其關聯的文本將出現在該表的任意數目的後續列中。在一些表格中有合併單元格,所以我需要確定表格當前行中的列數。

我不斷收到運行時錯誤'438':對象不支持該屬性或線路tCol = oLI.Range.Tables(1).Rows(oCurrentRow).Columns.Count上的方法,我不知道爲什麼。

Set xlApp = CreateObject("Excel.Application") 
xlApp.Visible = True 
Set xlWB = xlApp.Workbooks.Add ' create a new workbook 
With xlWB.Worksheets(1) 
    For Each oList In ActiveDocument.Lists 
     For Each oLI In oList.ListParagraphs 
      .Cells(i, 1) = oLI.Range.ListFormat.ListString 
      If oLI.Range.Information(wdWithInTable) = True Then 
       '#DETERMINE WHICH TABLE TO LOOK IN 
       oCurrentRow = oLI.Range.Cells(1).RowIndex 
        'Determine which Row in the Table to look in 
       tCol = oLI.Range.Tables(1).Rows(oCurrentRow).Columns.Count 
        'Determine how many Columns the Table contains 
       Debug.Print tCol 
       For j = 2 To tCol 
        .Cells(i, j) = oLI.Range.Tables(1).Cell(oCurrentRow, j) 
       Next j 
      Else 
       .Cells(i, 2) = oLI.Range.Text 
      End If 
      i = i + 1 
     Next oLI 
    Next oList 
End With 

回答

0

這裏沒有對象Columns。您可以使用

...Rows(oCurrentRow).Cells.Count 

獲取行中單元格的數量。或者,更好的是,您可以通過For Each來循環訪問單元格,而不需要對它們進行計數。

Sub LoopCells() 

    Dim tbl As Table 
    Dim tCell As Cell 

    Set tbl = ThisDocument.Tables(1) 

    For Each tCell In tbl.Rows(1).Cells 
     Debug.Print tCell.Range.Text 
    Next tCell 

End Sub 
+0

謝謝,我在前一段時間發現了自己愚蠢的錯誤,但由於我是新手,無法發佈它。 我可以使用上面提出的方法,但它仍然需要額外的功能,因爲如上所述,我使用計數器向表格中的每列右移。 雖然再次感謝! – Eagles5iveBC 2013-04-23 19:35:11

相關問題