2009-07-17 85 views
2

我想在WORD表格裏面製作表格。當然在最後的節目中它將是dinamical,這不是在這個樣本。OLE自動化 - WORD表格(德爾福)

這是我的示例代碼。

var 
    aTable, bTable, cTable : OLEVariant; 
begin 
    m_WordApplication := CreateOleObject('Word.Application') ; 
    m_WordDocument := m_WordApplication.Documents.Add; 

    aTable := m_WordDocument.Tables.Add(m_WordApplication.Selection.Range, 2, 1); 
    aTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle; 
    aTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle; 
    aTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle; 
    aTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle; 

    bTable := m_WordDocument.Tables.Add(aTable.Cell(1, 1).Range, 2, 1); 
    bTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle; 
    bTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle; 
    bTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle; 
    bTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle; 

    cTable := m_WordDocument.Tables.Add(aTable.Cell(2, 1).Range, 3, 1); 
    cTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle; 
    cTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle; 
    cTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle; 
    cTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle; 

    m_WordDocument.SaveAs('C:/test.doc', False) ; 
    m_WordApplication.Quit(False); 

首先我把上的光標的位置的新表(2行,第1列),然後我試圖把第二表在細胞(1,1)和第三個中的細胞(2,1)第一張桌子。第二個表也有2行和1列,但第三個表有3行和1列。但不是我想要什麼我得到第二個和第三個桌子只有一行,不管我是否在他的單元格中輸入了某些東西,我總是隻看到放在該表格中的最後一個字符串。

甚至更​​多,如果我把1行和2列表放在第一個表內,那麼一切都是正常的。

你能幫助我嗎?

感謝,韓城

+0

也許你可以編輯您的文章,使之更可讀。 (最重要的是:正確拼寫) – 2009-07-17 06:10:09

+2

此外,我強烈建議(使用OleVariants =)使用早期綁定(=使用界面從導入Word_TLB),其中在這樣的後期綁定具有許多優點 – 2009-07-17 06:26:06

回答

3

當你在代碼中創建這些表的問題,請執行下列操作:

  • 打開Word
  • 記錄新宏
  • 在錄製,打造你想要的表,然後停止錄製。
  • 查看宏代碼的Visual Basic編輯器,並嘗試把這種對OLE自動化代碼(這並不難,這幾乎是相同的)
0
aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle; 
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle; 

你將不得不爲BTABLE & cTable這樣做。

當您添加超過100行/列,它需要邊框分離它(即從另一個或分離1列從彼此分開1行)。

希望這會有所幫助。