回 帖 发 新 帖 刷新版面

主题:VFP的GRID特别显示和操作WORD-EXCEL示例

曾有编程爱好者多次求我帮做Word模板,填写资料。当时也找不到资料。只告诉他
要写资料的那一页用EXCEL,因EXCEL的参考资料多。后见他在多个论坛求助,未见解决。
刚好闲点,花点时间研究了一下WORD,终于知道怎样如控制EXCEL一样来控制WORD。
写成例子贴出来与大家共享,都有两方法,一是直接用代码编程创建文档,另是在WORD或
EXCEL中作好模板,用模板创建,添写资料。我中意后者。
  另附 GRID 模仿DELPHI的显示

总结以下几点,就可更加发挥:

一、要实现的目的,先在WORD或EXCEL中录制宏。然后根据宏来修改做成VFP的代码。

二、对象的属性不同。
    a、WORD ,
      1、 凡有selection的为应用程序属性
          OleWord=CREATEOBJECT('word.application')  &&创建word目标
          OleWord.Selection
         **** Word多数用它**********
          OleWord.quit &&退出word
       2、OleWord.Documents
          OleWord.Documents.add() &&增加新的word文档,有路径文件名是以它作模板打开
          OleWord.Documents.open("D:\test.doc") &&打开指定的文件
          OleWord.Documents.close(.F.) &&关闭所有打开的文档不保存,不要.F.,调出对话框
       3、页面设置OleWord.ActiveDocument.PageSetup
       4、OleWord.ActiveDocument
          OleWord.ActiveDocument.Save &&保存
          OleWord.ActiveDocument.SaveAs("D:\test.doc") &&最简单的另存
          OleWord.ActiveDocument.close &&关闭当前word文档

   b、EXCEL
      1、凡有selection的为应用程序属性
         XLApp=CREATEOBJECT('Excel.application')
         XLApp.Selection
         XLApp.quit  &&退出Excel
      2、XLApp.WorkBooks
         XLApp.WorkBooks.Add( ) &&增加新的EXCEL,加有路径文件名是以它作模板打开
         XLApp.Workbooks.Open("D:\test.xls")  && 打开指定工作簿
         XLApp.Workbooks.close(.F.)  &&关闭所有打开的工作簿不保存,不要.F.,调出对话框
      3、页面设置 XLApp.ActiveSheet.PageSetup
      4、XLApp.ActiveSheet
       ********Excel多数用它与Word不同**********
      5、XLApp.ActiveWorkbook
         XLApp.ActiveWorkbook.Save  &&保存 
         XLApp.ActiveWorkbook.SaveAs("D:\ABC\22.xls") &&另存为
         XLApp.ActiveWorkbook.close   &&关闭当前工作簿
三、WORD/EXCEL宏与VFP表示方法不同   

  a、WORD打开
   OleWord.Documents.open("D:\test.doc",.F.,.F.,.F.,'456','123',.F.,'','',.F.) &&根据宏函数改,与保存不同方式,456为打开密码,123为只读密码

*宏函数 Documents.Open FileName:="temp.doc", ConfirmConversions:=False, ReadOnly:= _
*        False, AddToRecentFiles:=False, PasswordDocument:="456", PasswordTemplate _
*        :="123", Revert:=False, WritePasswordDocument:="123", WritePasswordTemplate _
*        :="", Format:=wdOpenFormatAuto
  b、EXCEL只读保护
          XLApp.ActiveSheet.protect('123') &&用123密码锁起只读 
          XLApp.ActiveSheet.unprotect('123')  &&用123密码解锁   

*宏函数(用123密码只读锁)  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
* 用123密码解锁          ActiveSheet.Unprotect           

                                             
                                          徐 军        xj@meyerdyeing.com
                                    2005/11/06    

示例:
http://upload.programfan.com/upfile/20051122194626.rar

回复列表 (共37个回复)

31 楼

版主,你好!
首先感谢您的无私奉献!
看到你这么高的水平我想请教一个问题,那就是:
在VF 中如何查找并替换WORD中的内容呢?
用WORD中的替换宏命令VF提示错误。
望您能不吝赐教。

32 楼

WAIT windows("起动WORD文档替换文本,请稍等....") NOWAIT AT MROW(Thisform.Name,3),MCOL(Thisform.Name,3)
OleWord=CREATEOBJECT('word.application')  &&创建word目标
OleWord.Visible=.T.  &&word隐藏,为.F.可在后台操作
cDirFile="C:\Documents and Settings\yx\My Documents\中华人民共和国出入境检疫.doc"  &&你的WORD文档(要绝对路径)
OleWord.Documents.add(cDirFile) &&打开文档


WITH  OleWord.Selection.Find
     .ClearFormatting
     .Text = "中文" &&要查找的文本
     .Forward =.T.
     .Wrap=1
     .Execute
ENDWITH

lFind=OleWord.Selection.Find.found
OleWord.Selection.Text="Test" &&查找后替换的文本

DO WHILE lFind   &&调用替换不成功,改用查找替换do while方法
    WITH  OleWord.Selection.Find  &&以下不重复就不替换
         .ClearFormatting
         .Text = "中文" &&要查找的文本
         .Forward =.T.
         .Wrap=1
        .Execute
   ENDWITH
    lFind=OleWord.Selection.Find.found
    OleWord.Selection.Text="Test"  &&查找后替换的文本
ENDDO  
MESSAGEBOX("替换完毕.")

33 楼

頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂██████████頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂████████████████頂頂頂頂
頂頂頂頂頂頂頂頂頂頂████頂頂██████████頂頂頂頂頂頂頂頂頂
頂頂頂頂頂頂████████頂頂██頂頂頂████頂頂頂頂頂頂頂頂頂頂
頂█████████████頂頂頂頂頂頂頂███頂頂頂頂頂頂頂頂頂頂頂
頂███████████頂頂頂頂頂頂頂頂█████████頂頂頂頂頂頂
頂頂█████████頂頂頂頂頂頂頂頂████████████頂頂頂頂
頂頂頂█頂頂頂████頂頂頂頂頂頂████頂頂頂頂頂█████頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂頂██頂頂頂█頂頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂頂██頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂頂██頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂██頂頂頂██頂頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂██頂頂頂██頂頂頂頂███頂頂頂頂頂
頂頂頂████████頂頂頂頂頂頂█頂頂██頂頂頂頂████頂頂頂頂頂
頂頂頂頂███████頂頂頂頂頂頂頂頂頂██頂頂█頂頂頂██頂頂頂頂頂
頂頂頂頂頂頂█████頂頂頂頂頂頂頂頂███頂頂████頂頂頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂頂頂████頂頂頂██████頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂█████頂頂頂頂頂██████頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂████頂頂頂頂頂頂頂頂█████頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂█████頂頂頂頂頂頂頂頂頂頂████頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂██頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂██頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂

34 楼

例子下载不了!

35 楼

你下载以下的一样
http://www.programfan.com/club/showbbs.asp?id=134334

36 楼


大哥,好厉害啊!  我现在在用foxpro做一个进销存系统,唉,老出错.什么时间能达到您的水平呀

37 楼


好贴,顶

我来回复

您尚未登录,请登录后再回复。点此登录或注册