Delphi中控制VBA 宏

如何在Delphi里面利用WordVBA代码进行一些总结。
1
  生成VBA代码。Word本身具有很强的可扩展性,尤其是支持用户自定义功能,其实现
的主要方式就是通过VBA代码来实现的。在工具->->Visual Basic编辑器里面就可以看
到具体的宏代码,可以直接进行编辑。而且还可以使用录制宏的功能自动生成宏代码。方法是
选择工具->->录制新宏,然后执行自己想通过程序实现的功能,如存盘、打印等功能,
此时Word一边执行你要实现功能,一边将你的操作生成了一个宏,在实现功能后,可以选择
工具->->VisualBasic编辑器,查看生成的宏代码。

例如:我们要将文档中的讨论全部替换成研讨
a
  点击工具->->录制新宏,直接点击确定,默认的宏保存到了Normal.dot系统公
用模板里面。
b
  点击编辑->查找,出现弹出对话框,输入查找和替换的字,点确定。进行替换。
c
  结束宏的录制,点击结束按钮。
d
  F11或者工具->->Visual Basic 编辑器,查看宏代码。缺省查看Normal里面
的模块里面的NewMacros模块。
以下是生成的宏代码:
Sub Macro1()
'
' Macro1 Macro
'
宏在 2002-2-1 yzhshi 录制
'
   Selection.Find.ClearFormatting
   Selection.Find.Replacement.ClearFormatting
   With Selection.Find
       .Text = "
讨论"
       .Replacement.Text = "
研讨"
       .Forward = True
       .Wrap = wdFindContinue
       .Format = False
       .MatchCase = False
       .MatchWholeWord = False
       .MatchByte = True
       .MatchWildcards = False
       .MatchSoundsLike = False
       .MatchAllWordForms = False
   End With
   Selection.Find.Execute Replace:=wdReplaceAll
End Sub
2
  精简宏代码。通常,生成的宏代码有很多语句对你要实现的功能来说都是多余的。我们要
做的就是如何找到我们需要的代码。此时我们查看具体的代码,剔除明显没有用途的代码,然后光
标停留在宏上面,按F5执行,看是否实现功能,逐步精简,得到最小代码。此步骤可参考Word
VBA
帮助来判断代码是否有用。

如上例,精简下来,剩下以下代码。
Sub Macro1()
   Selection.Find.ClearFormatting
   Selection.Find.Replacement.ClearFormatting
   With Selection.Find
       .Text = "
讨论"
       .Replacement.Text = "
研讨"
   End With
   Selection.Find.Execute Replace:=wdReplaceAll
End Sub

3  转换成Delphi代码。这一步其实很简单,对于VBA代码,只需要在前面添加Word的句柄或者
文档的句柄或者文档的句柄.Application就可以直接操作了。
例:逐句翻译:(Word_HandleWord的句柄)
VB     Selection.Find.ClearFormatting
Delphi  Word_Handle.Selection.Find.ClearFormatting;

VB     Selection.Find.Replacement.ClearFormatting
Delphi  Word_Handle.Selection.Find.Replacement.ClearFormatting;
以上两句简单添加上Word的句柄就可以了。

VB     With Selection.Find
             Text = "
讨论"
             Replacement.Text = "
研讨"
End With
Delphi  Word_Handle.Selection.Find.Text := '讨论';
 Word_Handle.Selection.Find.Replacement.Text := '
研讨';
以上几句因为Delphi不支持VariantWith结构,所以分开写。同时转换成Delphi语法。

VB    Selection.Find.Execute Replace:=wdReplaceAll
Delphi Word_Handle.Selection.Find.Execute(Replace:=2);
上面一句存在一个小技巧,如何找到常量wdReplaceAll的数值为2
这里有几个办法,
一:直接use Word2000或者word97单元,那么直接使用常量wdReplaceAll就可以了;
二:到Word2000.pas或者Word97.pas里面查找wdReplaceAll的数值;
三:直接使用VBA代码见wdReplaceAll的数值显示出来。办法是写一个小过程,然后执行,如下:
Sub ShowValue()
 MsgBox wdReplaceAll
End Sub

最后补充一下,很多关于Word的东西可以从WordVBA帮助里面获得。具体文件在
?:/Program files/Microsoft Office/Office10/2052(XP)
下,VBAWD10.CHM,其他版本路径基本类似。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值