2012-01-06 2 views
1

행을 추가하려고하는 워드 문서에 테이블이 있습니다. 이 추가 행은 템플리트 역할을하는 테이블의 첫 x 째 행과 동일해야합니다.템플릿 행을 사용하여 테이블에 행 추가

내 테이블의 첫 번째 행이 정확히 하나 있다고 가정 해 보겠습니다. 이제 동일한 사양의 새 행을 추가 한 다음 3 개의 열을 모두 병합하고 싶습니다. 그 아래에 추가 행을 추가하고 싶지만 첫 번째 행과 같은 3 개의 열이 다시 있습니다. 내가 시도한 것 :

Dim oTemplateRow As Word.Row 
Set oTemplateRow = oTable.Rows(1) 
oTemplateRow.Range.Copy 
' adds a row like the template one 
oTable.Rows.Last.Range.Paste 

지금까지는 그렇게 좋았습니다. 그러나 이제 해당 줄의 셀을 병합 한 다음 붙여 넣기를 반복하면 이전에 추가 된 셀보다 앞에이 표시됩니다. 이전의 범위가 축소 되어도 - 이것은 내가 이해할 수없는 것입니다.

oTable.Rows.Last.Cells.Merge 
oTable.Rows.Last.Range.Collapse Direction:=wdCollapseEnd 
oTable.Rows.Last.Range.Paste 
oTable.Rows.Last.Range.Collapse Direction:=wdCollapseEnd 

도움을 주시면 감사하겠습니다.

답변

2

나는 이제 내 자신의 질문에 대답 할 수있는 것처럼 보입니다. 가장 우아한 해결책은 아닐지라도 내 문제를 해결합니다. 초기 행을 작성한 후에 oTable.Rows.Add 을 사용 했으므로 아래에 정확한 사본이 작성됩니다. 행을 추가해야하는 경우 해당 프로세스를 반복하고 마지막 행까지 계속 작업합니다.

Private Function addRow(ByRef oRow As Word.Row, Optional iNumberColumns As Integer = 3) 
    ' add a row to the end, then work on the one before that 
    oTable.Rows.Add 
    Set oRow = oTable.Rows(oTable.Rows.Count - 1) 
    ' if number of columns is 1 merge 2 to 4, if 2 merge 3 to 4 
    Select Case iNumberColumns 
     Case 1 
      oRow.Cells(2).Merge MergeTo:=oRow.Cells(4) 
     Case 2 
      oRow.Cells(3).Merge MergeTo:=oRow.Cells(4) 
    End Select 
End Function 

조금 길어질 수도 있지만 저에게는 효과적 일 수 있습니다. 감사 인사 스테판

관련 문제