我是使用Delphi的Ole word自動化的新手。我有一個示例文件,裏面有很多表格。我可以通過查找單詞中的形狀並在其中插入值來插入圖像。但我無法找到一個特定的表並使用delphi更新一些值。有沒有辦法?謝謝 !如何在word中查找表格並使用delphi更新表格中的值
回答
我假設你問的主要是如何找到表格,而不是如何改變表格的內容。如何做到這一點取決於你想用來找到感興趣的表的標準。
表面上,你應該能夠使用MS Word的Selection對象的Goto方法導航到給定的表格。但是,由於Goto沒有找到正確的表格,因此在檢測操作失敗時會出現問題(請參閱此答案的結尾處)。
如果感興趣的表格在文檔中由識別文本標籤開頭,那麼您可以簡單地搜索該標籤,如果找到,則從該標籤中向前導航,就像在示例標籤「Table3」後面找到該表格一樣, :
procedure TForm1.Button4Click(Sender: TObject);
var
AFileName : String;
MSWord,
Document : OleVariant;
Found : WordBool;
begin
AFileName := 'd:\aaad7\officeauto\Tables.Docx';
MSWord := CreateOleObject('Word.Application');
MSWord.Visible := True;
Document := MSWord.Documents.Open(AFileName);
MSWord.Selection.Find.Text :='Table3';
Found := MSWord.Selection.Find.Execute;
if Found then begin
MSWord.Selection.MoveDown(Unit:=wdLine, Count:=1);
end;
end;
正如所寫,「if Found ...」塊只是將光標放在表的第一個單元格的第一個字符上。一旦進入桌面,您可以隨意更改其內容。
如果您想了解如何從宏這樣做表格單元格中插入圖像,轉到開發人員選項卡上的Word的絲帶,錄製宏,你想要做什麼,然後用編輯彈出窗口來查看它 - 通常很容易,然後將它粘貼到Delphi中並將其編輯爲等效的Delphi代碼。尋找你想要的表格的其他方法也一樣 - 記錄一個宏然後翻譯它。
要找到第N個表的文檔,栽在其左上角單元格光標,你可以這樣做:
procedure TForm1.Button2Click(Sender: TObject);
var
AFileName : String;
MSWord,
Document,
Tables,
Table : OleVariant;
TableNo : Integer;
begin
AFileName := 'd:\aaad7\officeauto\Tables.Docx';
MSWord := CreateOleObject('Word.Application');
MSWord.Visible := True;
Document := MSWord.Documents.Open(AFileName);
TableNo := 3;
Tables := Document.Tables;
if TableNo <= Tables.Count then begin
Table := Tables.Item(TableNo);
Table.Select;
MSWord.Selection.MoveLeft(Unit:=wdCharacter, Count:=1);
end;
end;
順便說一下,在Word的查找對話框中,Goto
選項卡上,有Table
進入在Go to what
列表框中。你可以在代碼中使用類似於
MSWord.Selection.GoTo(What:= wdGoToTable, Which:=wdGoToFirst, Count:=3);
問題在於如何檢查代碼是否成功與Find不同,它返回一個WordBool
,Goto返回一個Range對象。如果您嘗試使用它在僅包含2個表的文檔中轉到第10個表格,則不會引發錯誤,但返回的範圍是文檔中的最後一個表格。我還沒有找到一種方法來檢查返回的Range是否成功,而不檢查某些與可能使用Find找到的表相關的文本。當然,如果文檔保證包含您要查找的表格,Goto的這個問題可能不需要關注您。
也許是這樣的:
Word.ActiveDocument.Tables.Item(1)。細胞(1,1).Range.Text:= '一些文本';
- 1. 在word中查找表格並在該表格中使用java編寫
- 2. 在表格行中查找值,如果存在,請更新它
- 3. 使用不同數據庫中表格的值更新表格
- 4. 更新查詢 - 從表格中總結出一個值,表格中的值
- 5. 如何使用interop更改Word文檔中表格的方向?
- 6. 如何查找記錄數量並更新另一個表格?
- 7. 更改VBA中合併表格單元格的寬度(Word 2010)
- 8. 在Richtextbox中查找並遍歷表格
- 9. 使用Apache Poi解析Word文檔中表格中的表格
- 10. 在Google表格中使用查找
- 11. 如何更新嵌套查詢中使用的表格?
- 12. 如何在創建表格後更新表格中的列?
- 13. 更新查詢返回false使用表格中的預設值
- 14. 如何使用HTML表單使用XML值更新html表格?
- 15. 如何在表格中查找單詞?
- 16. 如何在大圖中查找表格?
- 17. 在Word 2010中使用VBA更改表格中的列寬
- 18. SQL:更新表格中的表格
- 19. Lua:如何在表格中查找表格(或對象)
- 20. 如何更新jquery中的表格單元格值
- 21. 在Delphi中創建表格
- 22. 如何使用jQuery更新表格單元格值
- 23. 使用php查找並張貼表格
- 24. 如何在PrimeFaces中更新表格layoutUnit
- 25. 如何在sqlite中更新表格android
- 26. 如何使用OpenOffice Java API更新Word文檔中的嵌入式Excel表格?
- 27. 在一個表格中使用觸發器並更新其他表格
- 28. 在一個表格中使用觸發器並更新另一個表格
- 29. 在c#中使用word interop在word表格中添加文本
- 30. 使用GET值的Django更新表格
我敢肯定,有很多例子只是一個網絡搜索 –
感謝您的答覆,但所有我不幸找到的那些人,創建一個新表,並填寫它們,但不是找到現有的表並更新它們 –
看看Deborah Pate的自動化頁面,特別是[Word表格](http://www.djpate.freeserve.co.uk/AutoWord.htm#Tables)。 –