'插入表格
Sub setTable()
  Set myRange = ActiveDocument.Range(Start:=2, End:=2)
  ActiveDocument.Tables.Add Range:=myRange, NumRows:=3, NumColumns:=4
End Sub
'取得Word常规字符串
Sub getText()
  Set myRange = ActiveDocument.Range(Start:=0, End:=4)
  MsgBox myRange.Text
End Sub
'取得Word 表格中的数据
Sub getTableCellText()
  Dim s
    
  For i = 1 To ActiveDocument.Tables.Count
     For iRow = 1 To ActiveDocument.Tables(i).Rows.Count
       For icol = 1 To ActiveDocument.Tables(i).Columns.Count
         Set myCell = ActiveDocument.Tables(i).Cell(Row:=iRow, Column:=icol)
         s = s & Mid(myCell.Range.Text, 1, Len(myCell.Range.Text) - 2)
       Next icol
     Next iRow
  Next i
  
  MsgBox s
End Sub
Cell的属性RowIndex和ColIndex来取得某格单元格在表中的行列号
==========================  Delphi  ===================================
    WordApp: TWordApplication;
    WordDoc: TWordDocument;
    DocInx,oFileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,
    PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat: OleVariant;
    myRange:Range;
    myCell:Cell;
    myRow:Row; myCol:Column;
    if not Assigned(WordApp) then                          // ===== 创建对象 =====
    begin
      WordApp:= TWordApplication.Create(nil);
      WordApp.Visible := false;
    end;
    if not Assigned(WordDoc) then
    begin
      WordDoc:= TWordDocument.Create(nil);
    end;
    DocInx:=1;
    oFileName := InFile;
    oReadOnly:=true;
    CfCversions := EmptyParam;
    AddToRctFiles:= EmptyParam;
    PswDocument:= EmptyParam;
    PswTemplate:= EmptyParam;
    oRevert:= EmptyParam;
    WPswDocument:= EmptyParam;
    WPswTemplate:= EmptyParam;
    oFormat:= EmptyParam;                                  // ===== 打开文件 =====
    WordApp.Documents.open(oFileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,
                           PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat);
    WordDoc.ConnectTo(WordApp.Documents.Item(DocInx));     // ===== 关联文件 =====
    //取整个文本的字符内容,包含表格
    s := WordDoc.Range.text;  
    //取 1 -- 4 位的字符 ,包含表格 
    myRange:=WordDoc.Range;
    myRange.Start:=0;
    myRange.End_ :=4;
    //方法(1)==> 规则表
    For i := 1 To WordDoc.Tables.Count do
    begin
      For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do  //第 i 个表 iRow行
      begin
        For icol := 1 To WordDoc.Tables.Item(i).Columns.Count do //第 iCol列
        begin
          myCell:=WordDoc.Tables.Item(i).Cell(iRow,icol);
          memo1.Lines.add(myCell.Range.Text);
        end;
      end;
    end;
    
   
    //方法(2)==> 不规则表:只有横向合并时
    For i := 1 To WordDoc.Tables.Count do               //第 i 个表
    begin
      For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do
 &nbs
Delphi 与 Word_VBA第2部分:
p;    begin
        myRow:=WordDoc.Tables.Item(i).Rows.Item(iRow);  //第 iRow 行
        For icol := 1 To myRow.Cells.Count do           //第 iCol列
        begin
          myCell:= myRow.Cells.Item(iCol) ;
          memo1.Lines.add(myCell.Range.Text);
        end;
      end;
    end;
    //方法(3)==> 不规则:横向、纵向合并时
    For i := 1 To WordDoc.Tables.Count do
    begin
        for j := 1 To WordDoc.Tables.Item(i).Range.Cells.Count do
        begin
          myCell := WordDoc.Tables.Item(i).Range.Cells.Item(j);
          memo1.Lines.add(myCell.Range.Text);
        end;
    end;
    
    //合并第一、二列
        iStart:=WordDoc.Tables.Item(i).Cell(1,1).Range.Start;
        myCol:= WordDoc.Tables.Item(i).Columns.Item(2);
        iEnd:=myCol.Cells.Item(myCol.Cells.Count).Range.End_;
        myRange:=WordDoc.Range;
        myRange.Start:=iStart;
        myRange.End_ :=iEnd;
        myRange.Cells.Merge;
    if Assigned(WordDoc) then                           // ===== 关闭文件 =====
    begin
      WordDoc.Close;
      WordDoc.Disconnect;
      WordDoc.Destroy;
      WordDoc := nil;
    end;
    if Assigned(WordApp) then                           // ===== 关闭Word =====
    begin
      WordApp.Quit;
      WordApp.Disconnect;
      WordApp.Destroy;
      WordApp := nil;
    end;
/////////////////////////////    
    For i := 1 To WordDoc.Tables.Count do   //第 i 个表
    begin
      For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do
        for iCol:=1 to WordDoc.Tables.Item(i).Columns.Count do
          myCell:=WordDoc.Tables.Item(i).Cell(iRow,iCol);    //取[iRow,iCol]列值    
    end;

Delphi 与 Word_VBA的更多相关文章

  1. 学习笔记:7z在delphi的应用

    最近做个发邮件的功能,需要将日志文件通过邮件发送回来用于分析,但是日志文件可能会超级大,测算下来一天可能会有800M的大小.所以压缩是不可避免了,delphi中的默认压缩算法整了半天不太好使,就看了看 ...

  2. delphi连接sql存储过程

    针对返回结果为参数的 一. 先建立自己的存储过程 ALTER PROCEDURE [dbo].[REName] ) AS BEGIN select ROW_NUMBER() over(order by ...

  3. delphi 2010与delphi XE破解版的冲突

    在系统中同时安装了Dephi 2010LITE版与Delphi XE lite后,总是会有一个有问题 是因为两者都是读取C:\ProgramData\Embarcadero目录下的license文件, ...

  4. [Delphi] Delphi版本号对照

    VER300    Delphi Seattle / C++Builder Seattle    23    230    (Delphi:Win32/Win64/OSX/iOS32/iOS64/An ...

  5. delphi tidhttp 超时设置无效的解决方法

    现在delphi都发布到xe8了,tidhttp还有缺陷,那就是超时设置在没有网络或者连不上服务器的时候是无效的,不管你设置为多少都要10-20秒.connectTimeout和readTimeout ...

  6. Delphi Code Editor 之 编辑器选项

    Delphi Code Editor 之 编辑器选项 可从Code Editor的右键菜单中选择“Properties”菜单项来查看编辑器选项.也可以从主菜单[Tools | Editor Optio ...

  7. Delphi使用ADO进行数据库编程

    Delphi是一个可视化的编程工具,ADO编程也是这样,所以话不多言,直接通过代码.截图和语言来说明. 我的数据库是Oracle,为了测试,先建一个表:create table practice(un ...

  8. 怎么使用Delphi获取当前的时间,精确到毫秒

    先介绍一个可能比较常用的方法,获取当前时间 var datetime: string; begin datetime:= FormatDateTime('yyyy-mm-dd hh:mm:ss', N ...

  9. Delphi在创建和使用DLL的时候如果使用到string,请引入ShareMem单元

    当使用了长字符串类型的参数.变量时,如string,要引用ShareMem. 虽然Delphi中的string功能很强大,但若是您编写的Dll文件要供其它编程语言调用时,最好使用PChar类型.如果您 ...

随机推荐

  1. pop回到之前的某一个页面

    循环遍历 - (void)backHome:(UIButton *)button { self.navigationController.navigationBarHidden = NO; 4 Cas ...

  2. Luogu 1764 翻转游戏 - 枚举 + 搜索

    题目描述 kkke在一个n*n的棋盘上进行一个翻转游戏.棋盘的每个格子上都放有一个棋子,每个棋子有2个面,一面是黑色的,另一面是白色的.初始的时候,棋盘上的棋子有的黑色向上,有的白色向上.现在kkke ...

  3. 11. pt-heartbeat

    pt-heartbeat [OPTIONS] [DSN] --update|--monitor|--check|--stop ------------------------------------- ...

  4. Python之路(第二篇):Python基本数据类型字符串(一)

    一.基础 1.编码 UTF-8:中文占3个字节 GBK:中文占2个字节 Unicode.UTF-8.GBK三者关系 ascii码是只能表示英文字符,用8个字节表示英文,unicode是统一码,世界通用 ...

  5. 设计服务类网站原型模板分享——Fortyseven

    Fortyseven是一个设计服务网站,设计理念是帮助企业设计出赚钱的品牌和网站.该网站图文排版配色都很不错,很有欧美复古风,多采用大图结合文案排版. 本原型由国产Mockplus(原型工具)和iDo ...

  6. m序列c语言实现

    演示,不是算法 void m4() { int a[4]={1,0,0,1}; int m[15]; int temp; for(int i=0;i<15;i++){ m[i] = a[0]; ...

  7. openssl RSA基本加密解密

    #include <stdio.h> #include <string.h> #include <stdlib.h> #include <openssl/bn ...

  8. Hibernate validator的一些额外特性

    分组验证及分组顺序 如果我们想在新增的情况验证id和name,而修改的情况验证name和password,怎么办? 那么就需要分组了. 首先定义分组接口://分组接口就是两个普通的接口,用于标识,类似 ...

  9. Java在dos界面运行java源文件编译成功,但运行虚拟机时出现错误:“找不到或无法加载主类”的问题

    (一)首先检查环境变量配置有没有问题, 1PATH为%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 2CLASSSPATH为.;%JAVA_HOME%\lib\dt.jar; ...

  10. 关于SSH中tomcat下中文名称图片不显示的问题

    最近做一个SSH框架的项目,用tomcat发布,需要上传图片到指定路径,然后再将图片显示在页面上.有一个问题:如果是英文名称的图片,就正常显示,可如果是中文的,它就是显示不出来,于是乎,在网上各种百度 ...