Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как экспортировать таблицу в MS Word в TStringGrid?

01.01.2007
uses 
 
ComObj;
 
procedure TForm1
.Button1Click(Sender: TObject);
const
 
AWordDoc = 'C:\xyz\testTable.doc';
var
 
MSWord, Table: OLEVariant;
  iRows
, iCols, iGridRows, jGridCols, iNumTables, iTableChosen: Integer;
 
CellText: string;
 
InputString: string;
begin
 
try
   
MSWord := CreateOleObject('Word.Application');
 
except
   
// Error....
   
Exit;
 
end;
 
 
try
   
MSWord.Visible := False;
   
MSWord.Documents.Open(AWordDoc);
 
   
// Get number of tables in document
    iNumTables
:= MSWord.ActiveDocument.Tables.Count;
 
   
InputString := InputBox(IntToStr(iNumTables) +
     
' Tables in Word Document', 'Please Enter Table Number', '1');
   
// Todo: Validate string for integer, range...
    iTableChosen
:= StrToInt(InputString);
 
   
// access table
   
Table := MSWord.ActiveDocument.Tables.Item(iTableChosen);
   
// get dimensions of table
    iCols
:= Table.Rows.Count;
    iRows
:= Table.Columns.Count;
   
// adjust stringgrid columns
    StringGrid1
.RowCount := iCols;
    StringGrid1
.ColCount := iRows + 1;
 
   
// loop through cells
   
for iGridRows := 1 to iRows do
     
for jGridCols := 1 to iCols do
     
begin
       
CellText := Table.Cell(jGridCols, iGridRows).Range.FormattedText;
       
if not VarisEmpty(CellText) then
       
begin
         
// Remove Tabs
         
CellText := StringReplace(CellText,
           
#$D, '', [rfReplaceAll]);
         
// Remove linebreaks
         
CellText := StringReplace(CellText, #$7, '', [rfReplaceAll]);
 
         
// fill Stringgrid
          Stringgrid1
.Cells[iGridRows, jGridCols] := CellText;
       
end;
     
end;
   
//..
 
finally
   
MSWord.Quit;
 
end;
end;

Взято с сайта https://www.swissdelphicenter.ch/en/tipsindex.php