2016-01-14 52 views
0

我在Microsoft Word的VBA中遇到了一些問題。我想在文檔文件中添加多個表格。第一個工作正常。當我嘗試添加第二個它說索引2的tabel不會退出。 你能給我一些幫助嗎? 感謝VBA:在documnet中插入多個表

這裏是我的代碼:

Dim oDoc As Document 
Dim oRng As Range 


Set oDoc = ActiveDocument 
Set oRng = oDoc.Range(0, 0) 




'Tabel 1 
oDoc.Tables.Add Range:=oRng, NumRows:=3, NumColumns:=2 


oDoc.Tables.Item(1).Range.AutoFormat 
oDoc.Tables.Item(1).Borders.OutsideLineStyle = wdLineStyleSingle 
oDoc.Tables.Item(1).Borders.InsideLineStyle = wdLineStyleSingle 
oDoc.Tables.Item(1).Range.Paragraphs.SpaceBefore = 12 
oDoc.Tables.Item(1).Range.Paragraphs.SpaceAfter = 0 
oDoc.Tables.Item(1).Range.Paragraphs.Alignment = wdAlignParagraphLeft 
oDoc.Tables.Item(1).Range.Font.Size = 11 
oDoc.Tables.Item(1).Range.Font.Name = "Arial" 
oDoc.Tables.Item(1).AutoFitBehavior (wdAutoFitContent) 
oDoc.Tables.Item(1).Rows.Alignment = wdAlignRowCenter 
oDoc.Tables.Item(1).Cell(1, 1).Range.Text = "Code" 
oDoc.Tables.Item(1).Cell(2, 1).Range.Text = "Issue" 
oDoc.Tables.Item(1).Cell(3, 1).Range.Text = "Date" 
oDoc.Tables.Item(1).Cell(1, 2).Range.Text = "GEURIW-PM1-TN-02" 
oDoc.Tables.Item(1).Cell(2, 2).Range.Text = "0.1" 
oDoc.Tables.Item(1).Cell(3, 2).Range.Text = "20/12/2015" 
oDoc.Paragraphs.Add 

Set aRange = ActiveDocument.Paragraphs(1).Range 
oDoc.Tables.Add Range:=Range(0.1, 0.1), NumRows:=1, NumColumns:=1 
oDoc.Tables.Item(2).Borders.OutsideLineStyle = wdLineStyleSingle 
oDoc.Tables.Item(2).Cell(1, 1).Range.InsertBefore "GNSS ENVIRONMENT AND USER REQUIREMENTS CHARACTERISATION ON THE DANUBE RIVER" 
oDoc.Tables.Item(2).Cell(1, 1).Range.Bold = True 
oDoc.Tables.Item(2).Cell(1, 1).Range.Font.Size = 18 
oDoc.Tables.Item(2).Cell(1, 1).Range.Font.Name = "Trebuchet MS" 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(1).Format.Alignment = wdAlignParagraphCenter 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(1).SpaceBefore = 10 
oDoc.Tables.Item(2).Cell(1, 1).Range.InsertAfter vbCrLf + "GEURIW" 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(2).Format.Alignment = wdAlignParagraphCenter 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(2).Range.Font.Size = 26 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(2).SpaceBefore = 10 
oDoc.Tables.Item(2).Cell(1, 1).Range.InsertAfter vbCrLf + "DATA PROCESSING METHODOLOGY" 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(3).Format.Alignment = wdAlignParagraphCenter 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(3).Range.Font.Size = 18 
oDoc.Tables.Item(2).Cell(1, 1).Range.Paragraphs(3).SpaceBefore = 10 

回答

0

下面的代碼行可能是第一個表格的第一個單元格內:

Set aRange = ActiveDocument.Paragraphs(1).Range 

表中的所有細胞至少有一個段落,它們是ActiveDocument.Paragraphs的一部分。我從你的問題描述中推測,這不是你想要的 - 你想要一個接一個的表。在這種情況下:

oDoc.Paragraphs.Add 
Set aRange = ActiveDocument.Paragraphs.Last.Range 

定位文檔中的最後一段。你還要小心第一個表格後面有兩個段落標記(如果這是一個相對較新的Word版本,那麼當你添加一個段落時,可能不會有早期版本)。如果第二個表要插入緊接第一個表後面的段中,則這兩個表將自動「合併」到一個表中。

+0

現在我明白了。謝謝你的幫助。有用! – Eddie