注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

宝贝小屋

生活 工作 学习

 
 
 

日志

 
 

实用的VFP与EXCEL交互编程  

2010-12-19 10:27:36|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

*!* 81.实用的VFPEXCEL交互编程
摘要:本文介绍了几种实用的VFPEXCEL交互编程的方法与实例,将VFP强大的数据处理功能与EXCEL优异的制表功能有机地结合起来,大大增强了软件的应用效果。
关键词:VFPEXCELDDEOLE、交互编程。
Some Cross_Programming Methods Between VFP And EXCEL
Zou yiming(Gansu Lanzhou Section Of Instruments Lanzhou Petrochemical Staff College)
Abstract: The author introduces us In This Paper Some practical methods And instance Of cross_programming Between VFP And EXCEL . It extremely improves their performances By combining VFP's data processing functions with EXCEL's excellent tabulation functions.
Key Words: VFP
EXCELOLEDDECross-Programming
VFP(Visual Foxpro)
是一种关系型数据库管理系统,由于其强大的数据处理能力及良好的兼容性,使其成为数据库应用程序开发人员的强有力工具,而EXECL则是一种优秀的电子表格处理软件,在兼容性、操作界面、公式运算、图表等方面有着独到的优势。上述两种软件在各自的应用领域均得到广泛的应用,同时上述两种软件还具有良好的交互编程能力,为两者相辅相成、取长补短奠定了良好的基础。
本文将结合具体实例介绍几种VFPEXCEL交互编程的方法,每种方法虽然实现手段各异,但功能相仿。其功能可简述如下:VFP数据表学生成绩表.DBF”中含学生姓名语文数学......等字段,示例程序将从EXCEL工作簿“VFP交互.XLS”之工作表查询中用书签课程名指定的单元取得欲查询的课程名称,然后在数据表学生成绩表.DBF”中自动搜索,以找到该门课程不及格的同学名单,最后传送至原EXCEL工作薄形成新的工作表单,同时,新工作表还将以该课程名命名。
下列程序均在VFP50EXCEL97中调试通过。因篇幅所限,程序中的错误处理部分略去。
一、EXECL驱动VFP
EXECL
内置的VBA语言(Visual Basic For Application)为EXECL功能的扩展提供了便利的手段,用户可使用该语言直接驱动VFP完成数据检索等功能。
程序首先生成一个VFP对象,然后用VFPDoCmd方法执行VFP摸索命令串,其摸索结果再借助于VFPDateToClip方法拷贝至剪切板,最后VBA将其粘贴至工作表的正确位置。
Sub FoxTest()
Dim oFox As Object
Dim SLesson As String
Dim SCommand As String
Set oFox = Createobject("VisualFoxPro.Application") '
启动VFP,生成VFP对象
Sheets("
查询").Select
SLesson = Range("
课程名") '在名为课程名的单元格中得到欲查询的课程名称
Sheets.Add '
产生新的工作表单
ActiveSheet.Name = Slesson '
指定工作表单的名称与课程名称相同
SCommand = "SELECT
学号,语文,数学 FROM d:\vfp\学生成绩表 WHERE "+ SLesson + "<60 INTO CURSOR TEMP" '形成VFP查询命令串
oFox.DoCmd Scommand '
执行VFP命令串
oFox.DataToClip "temp", , 3 '
将搜索结果以文本方式拷贝至剪切板
Range("a1:a1").Select '
指向拷贝目标区域左上角单元
ActiveSheet.Paste '
粘贴搜索结果
End Sub
为便于使用,作者在EXECL中自制了一名为搜索的工具栏及一名为开始搜索的按钮,并将上述宏程序段与自制按钮相关联,按下此按钮即可运行程序并在EXCEL中得到要求的数据。
制作工具栏及按钮的方法如下:
1.
工具”/“自定义菜单,出现自定义对话框;
2.
选择工具栏页框,然后按下新建按钮;
3.
在工具栏对话框中输入搜索作为新建工具栏的名称;
4.
选择命令页框,在类别列表中选,在命令列表中选自定义按钮并将其拖放至新建的搜索工具栏;
5.
按下更新所选内容按钮,首先在命名栏中填入按钮名称开始搜索,然后选择指定宏,在随后出现的指定宏列表中选择上述宏程序FoxTest()即可实现为该宏指定一个工具栏按钮。
二、VFP使用OLE功能驱动EXECL
OLE
Object Linking and Embedding)对象链接与嵌入,是WINDOWS应用程序间相互传递和共享数据的一种有效方法。VFP借助于OLE不仅可共享其它应用程序的数据,而且还能以对象方式直接控制其它应用程序的运行,从而进一步扩展VFP的功能。VFP支持直接在程序中创建、使用和控制OLE对象,实现OLE自动化。作为OLE客户VFP与作为OLE服务器的EXCEL具有良好的编程接口,下述程序段用OLE方式实现所要求的功能。
程序首先生成一个EXCELOLE对象OleApp以便对其进行操作,然后利用OLE功能从EXCEL表单中获取欲查询的课程名,并控制EXCEL生成新的工作表,VFP的查询结果仍然使用剪切板的方式传递至EXCEL工作表。
OleApp=Createobject("Excel.Application") &&
打开EXCEL,产生OLE对象
OleApp.Application.Caption="VFP
交互编程" && 指定标题栏名称
OleApp.Application.Visible=.T. &&
EXCEL可见
OleApp.Application.WorkBooks.Open("d:\vfp\VFP
交互.xls") && 打开EXCEL工作簿
Do While .T.
    With OleApp.Application
        nAnswer = Messagebox("
开始搜索?", 32+4, "搜索指定数据") &&产生信息框
        If (.Not.(nAnswer=6)) &&
如按下“Yes"按钮,则开始搜索,反之退出
            Exit
        Endif
        .Sheets("
查询").Select && 选择查询工作表单
        SLesson = OleApp.Application.Range("
课程名").Value && 得到欲查询的课程名称
        .Sheets.Add &&
新建一工作表单
        .ActiveSheet.Name = Slesson &&
指定工作表单的名称
        SCommand = "SELECT
学号,语文,数学 FROM d:\vfp\学生成绩表 WHERE " +Alltrim(SLesson) + "<60 INTO CURSOR TEMP" && 形成VFP查询命令串
        &Scommand &&
执行VFP命令串
        _vfp.DataToClip("TEMP",,3) &&
将搜索结果以文本方式拷贝至剪切板
        .Range("a1:a1").Select &&
指向拷贝目标区域左上角单元
        .ActiveSheet.Paste &&
粘贴搜索结果
    Endwith
Enddo
OleApp.Quit &&
关闭EXCEL,保存更新后的工作簿文件

  评论这张
 
阅读(164)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017