2009-09-21 8 views
2

나는 테이블을 생성하고 즉시 워드로 작성합니다. 나는 두 번째 테이블이 내 첫 번째 테이블의 첫 번째 셀 안에 쓰여진다는 것을 알기 위해 데이터를 한 마디로 쓸 때마다 얼마나 많은 테이블이 있는지 알지 못한다. 세 번째 테이블이 있다면 두 번째 테이블의 첫 번째 셀 안에 놓입니다.프로그래밍 방식으로 Word에서 테이블 만들기

커서를 테이블 밖으로 옮기는 방법이 있습니까? 나는 각 테이블과 함께 새로운 범위를 만들려고 시도했지만 동일한 일이 발생합니다.

또한 tbl.Range.InsertParagraphAfter() 나는 Relocate 방법을 사용했다 와서 가장 가까운

같은 것들을 시도하지만,이 두 테이블했다. 벤

답변

2

이 똑같은 문제가 있었는데 Range를 테이블 범위의 끝으로 축소 한 다음 줄 바꿈을 삽입하고 다시 축소 한 다음 새 테이블을 삽입해야한다는 것을 알게되었습니다.

다음은 테이블과 책갈피를 사용하는 코드입니다.이 코드는 네이티브 VSTO 호스트 책갈피를 사용하고 VSTO 호스트 책갈피에 클릭 핸들러를 추가하는 방법을 보여주기위한 것이지만 대신 코드의 일부만 필요할 수도 있습니다.

With tbRange 
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd) 
.InsertParagraphAfter() 
.Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd).Select() 
End With 

아래를 찾으십시오. 테이블 내 중첩을 허용하지 않아야합니다.

Sub Assign3TablesToNativeBookmarks() 
     'this is the native Word bookmark 
     Dim bm As Word.Bookmark 
     Dim tb As Word.Table 
     Dim tbRange As Word.Range 
     Dim i As Integer 
     For i = 1 To 3 
      bm = Me.Bookmarks.Add(Name:="nestedBookmark" & CStr(i), _ 
            Range:=ThisApplication.Selection.Range) 
      tb = bm.Range.Tables.Add(Range:=bm.Range, NumRows:=2, NumColumns:=2) 
      With tb 
       .Style = "Table Grid" 
       tbRange = .Range 
       With tbRange 
        .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd) 
        .InsertParagraphAfter() 
        .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd).Select() 
       End With 
       bm = Me.Bookmarks.Add(Name:="nestedbookmark" & CStr(i), Range:=.Range) 
      End With 
     Next 
     Dim bmMain As Word.Bookmark 
     Dim mainBookmarkRange As Word.Range 
     Dim mainBookmarkRangeStart As Integer 
     Dim mainBookmarkRangeEnd As Integer 
     mainBookmarkRangeStart = Me.Bookmarks(1).Start 
     mainBookmarkRangeEnd = Me.Bookmarks(Me.Bookmarks.Count).End 
     mainBookmarkRange = Me.Range(Start:=mainBookmarkRangeStart, End:=mainBookmarkRangeEnd) 
     bmMain = Me.Bookmarks.Add(Name:="mainBookmark", Range:=mainBookmarkRange) 
    End Sub 
    Sub Assign3TablesToHostControlBookmarks() 
     'Word host control of Bookmark 
     'bookmarks must be destroyed before resetting the object 
     'added handler 
     Dim bm As Microsoft.Office.Tools.Word.Bookmark 
     'different from the interop one 
     Dim tb As Word.Table 
     Dim tbRange As Word.Range 
     Dim i As Integer 
     For i = 1 To 3 
      bm = Me.Controls.AddBookmark(range:=ThisApplication.Selection.Range, _ 
             Name:="nestedBookmark" & CStr(i)) 
      tb = bm.Range.Tables.Add(Range:=bm.Range, NumRows:=2, NumColumns:=2) 
      With tb 
       .Style = "Table Grid" 
       tbRange = .Range 
       With tbRange 
        .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd) 
        .InsertParagraphAfter() 
        .Collapse(Direction:=Word.WdCollapseDirection.wdCollapseEnd).Select() 
       End With 
       bm.Delete() 
       'this deletes the bookmark before it can be recreated 
       bm = Me.Controls.AddBookmark(range:=.Range, Name:="nestedBookmark" & CStr(i)) 
       AddHandler bm.Selected, AddressOf bm_Selected 
       'handler added 
      End With 
     Next 
     Dim bmMain As Microsoft.Office.Tools.Word.Bookmark 
     Dim mainBookmarkRange As Word.Range 
     Dim mainBookmarkRangeStart As Integer 
     Dim mainBookmarkRangeEnd As Integer 
     mainBookmarkRangeStart = Me.Bookmarks(1).Start 
     mainBookmarkRangeEnd = Me.Bookmarks(Me.Bookmarks.Count).End 
     mainBookmarkRange = Me.Range(Start:=mainBookmarkRangeStart, End:=mainBookmarkRangeEnd) 
     bmMain = Me.Controls.AddBookmark(range:=mainBookmarkRange, Name:="mainBookmark") 
    End Sub 
    Private Sub bm_Selected(ByVal sender As Object, ByVal e As Microsoft.Office.Tools.Word.SelectionEventArgs) 
     MessageBox.Show("Hey, you have selected bookmark: " & sender.Name & ". " & _ 
         "You did this at " & FormatDateTime(Date.Now(), DateFormat.LongTime)) 
    End Sub 
1

가장 쉬운 방법은 단어에 테이블을 삽입 할

덕분에 HTML 테이블을 생성 한 다음 커서가있는 지점에서 파일에이를 삽입하는 것입니다.

엄청나게 어려운 단어 interop 기능의 대부분을 사용하지 않고 임의로 복잡한 중첩 테이블을 쉽게 만들 수 있습니다.

+0

이미 테이블을 추가하기위한 모든 코드가 있습니다. 커서가 생성되면 테이블 외부로 커서를 이동시키는 문제가 있습니다. 각 테이블을 중첩하지 않고 개별 테이블로 만듭니다. – Ben

0

각 테이블을 새로 넣을 곳은 어디입니까? 문서 끝에? Document.Content 끝에 새 표를 시작하십시오.

+0

이전 테이블 아래. 새 단어 문서를 연 다음 표를 추가하기 시작합니다. 나는 그들에게 다른 사람들 아래 하나가되고 싶다. – Ben

관련 문제