Delphi 操作Word(统计字数)

摘要:
迫切需要解决的问题是如何使用delphi计算Word中的单词数。此外,我想了解更多关于Word的操作。例如,ole和TWordApplication之间的重点是什么,它们之间的区别是什么…TWordApplication组件的方式中有代码提示,但有许多功能无法使用。此外,在调用Word的某些方法时,不能省略默认参数,并且不能将参数写入软件。单词计数是一个特殊的内置对话框,不能用宏记录。

急待解决的问题就是如何用delphi实现word中的统计字数
另外想多了解一些关于操作word的相关内容
比如用ole动态创建的和TWordApplication的偏重点在哪里,有什么不同等等……

 
用OLE的方法控制Word几乎和VBA一样,可以控制Word的所有功能,缺点是没有代码提示,要参照Word的帮助和VBA。

用TWordApplication组件的方式有代码提示,但有很多功能用不了,而且在调用Word的一些方法时,不能省略默认的参数,写参数写到手软。

Word里面的字数统计是特殊的内置对话框,用宏是录制不下来的。

var
    WordApp,WordDoc:OleVariant;

begin
    WordApp:=CreateOleObject( 'Word.Application ');
    WordDoc:=WordApp.Documents.Open( 'f:\Test.Doc ');
    WordApp.Visible:=True;
    Memo1.Lines.Add( '字数 '+InttoStr(WordDoc.Words.Count));
    Memo1.Lines.Add( '字符数(包括空格) '+InttoStr(WordDoc.Characters.Count-WordDoc.Paragraphs.Count));
//
//   退出Word
//
end;

多谢楼上

上面的程序包括空格的统计结果是正确的,但不包含空格的WordDoc.Words.Count跟word里面的结果还是不一样,而且差的很多,能不能再帮忙看看,谢谢

字数统计里关于字数的有三项,一是字数,二是字符数(不计空格),三是字符数(计空格)

Memo1.Lines.Add( '字数 '+InttoStr(WordDoc.Words.Count));
是对应 "字数统计 "对话框中 "字数 "那一项,即第一项,意思是 "包括空格的字数 ",不是不包括空格.在我机上测试的时候没有问题啊,回头我再试一试.

Memo1.Lines.Add( '字符数(包括空格) '+InttoStr(WordDoc.Characters.Count-WordDoc.Paragraphs.Count));对应的是第三项,即 "包括空格的字符数 "

至于第二项我也不知道怎么求.如果一定要弄的话,我只有一个笨办法就是每个字符判断是不是空格,计出空格数后再从字符总数中扣了.

退出代码:

WordDoc.Saved:=True;     //不保存文件.如果不保存设Saved为真,否则为假.
WordDoc.Close;
WordApp.Quit;
WordDoc:=Unassigned;


回头试了一下字数那里是有问题


试了很久终于搞定了,呵呵。微软的帮助看来还是有些讲得不清楚。下面是完整的代码。

uses   ComObj;

const
    wdDialogToolsWordCount   =   $000000E4;

var
    WordApp,WordDoc,WordDialog:OleVariant;

begin
    WordApp:=CreateOleObject( 'Word.Application ');
    WordDoc:=WordApp.Documents.Open( 'E:\Test.Doc ');
//     WordApp.Visible:=True;
    WordDialog:=WordApp.Dialogs.Item(wdDialogToolsWordCount);
    Memo1.Lines.Add( '字数: '+InttoStr(WordDialog.Words));
    Memo1.Lines.Add( '字符数(不计空格) '+InttoStr(WordDialog.Characters));
    Memo1.Lines.Add( '字符数(计空格) '+InttoStr(WordDialog.CharactersIncludingSpaces));
    WordDoc.Saved:=True;
    WordDoc.Close;
    WordApp.Quit;
    WordDialog:=Unassigned;
    WordDoc:=Unassigned;
    WordApp:=Unassigned;
end;

这些结果类的内置对话框好像总要执行一下,否则它的数值就不能保证。

在WordDialog:=WordApp.Dialogs.Item(wdDialogToolsWordCount);的后面加上一句:

    WordDialog.Execute;

就可以了。

免责声明:文章转载自《Delphi 操作Word(统计字数)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux系统启动U盘制作工具External Tools下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Delphi操作Excel大全

转自上帝的鱼--专栏 cdsn 个人收藏:Delphi 控制Excel(一) 使用动态创建的方法首先创建 Excel 对象,使用ComObj:var ExcelApp: Variant;ExcelApp := CreateOleObject( 'Excel.Application' );1) 显示当前窗口:ExcelApp.Visible := True;...

Delphi开发Linux版的kbmMW Server

项目需要,必须在CentOS上运行应用服务器,不得矣,已经三天的时间,终于把windows版的kbmMW Server运行到CentOS上了。一路坎坷,Linux从0开始,多亏xalion等朋友们相助,能出了第一个结果。 很早就想尝试用Linux做服务器,但迟迟没得动手,想不到最终还是现实逼的迫不得矣,这三天,从安装CentOS 7,再学习简单的命令,搭建...

JS调用Delphi编写的OCX控件

原文:http://www.mamicode.com/info-detail-471283.html 一、使用Delphi XE2编写OCX控件   生成OCX工程:   1、File-New-Other,在New Items对话框中选择Delphi Projects-ActiveX-ActiveX Library   2、File-New-Ot...

【转】DELPHI 线程类

原文地址:http://yyimen.blog.163.com/blog/static/179784047201211811178223/ Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就...

DELPHI事务

--测试环境createtable table1(id intprimarykey)insert table1 select1union  all    select2--查看表select*from table1--操作A(执行错误后,事务没有回滚)begintrandeleteFrom table1 where id=1Insertinto A(Fie...

delphi PDFium介绍

PDFium介绍 概述 Delphi 和 C++ Builder 组件,用于查看、导航、文本提取和编辑 PDF 文件。 特征 使用 PDFium 开源 PDF 渲染引擎 支持 Delphi/C++ Builder 5 - 10.3 和 Lazarus 2.0.2 组件 TPdf 使用 Tpdf 组件打开、导航、提取文本和编辑 PDF 文档。 TPdfV...