CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

Delphi调用VBA问题?

楼主lwluser(lwluser)2006-03-03 21:26:26 在 Delphi / 数据库相关 提问

如何让VBA动态执行啊,比如:  
  var  
      s:='ActiveSheet.Cell[1,1].Value:=123456';  
   
   
  obj:=CreateOleObject('Excel.Application');  
  如何让obj.s相当于执行obj.ActiveSheet.Cell[1,1].Value:=123456啊?  
  如果把串ActiveSheet.Cell[1,1].Value:=123456放在一个文本中,  
  如何让VBA能执行它? 问题点数:100、回复次数:2Top

1 楼lovendII(流氓都做了城管)回复于 2006-03-04 08:25:56 得分 100

如何在Delphi中通过VBA操作Excel  
   
  在数据库应用软件的开发过程中,经常需要把数据转换成Excel文件,让用户作进一步的数据处理。而Delphi是开发数据库应用系统的常用工具,那么,如何在Delphi中操作Excel呢?    
   
    我们知道,在Microsoft   Office软件中有一种内嵌的编程语言VBA,它是一种宏语言,利用它,你可以编写出功能强大的代码,如打开文件、修改数据、保存数据和设置字体等。另一方面,Microsoft   Office软件中的宏能以VBA代码的形式记录下你的操作过程。因此借助宏操作,可以很轻松地实现某一功能,并把这些代码稍作修改嵌入到你的软件中。但是VBA也存在一个缺点,它必须有Microsoft   Office作平台,在哪里编写,必须在哪里执行。例如在Excel下编写的一段VBA代码,则它只有在Excel下才能运行。因此,笔者的方法就是把VBA代码嵌入到Delphi中,从而实现用Delphi操作Excel。    
    下面,我们以Delphi程序为例,说明这种调用方法:    
   
    Unit   excel;    
   
    interface    
   
    uses    
   
    Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,   StdCtrls,ComObj;    
   
    //ComObj是操作OLE对象的函数集    
   
    type   TForm1   =class(TForm)    
   
    Button1:   TButton;    
   
    procedure   Button1Click(Sender:   TObject);    
   
    private    
   
    {   Private   declarations   }    
   
    public    
   
    {   Public   declarations   }    
   
    end;    
   
    var    
   
    Form1:   TForm1;    
   
    implementation    
   
    {$R   *.DFM}    
   
    procedure   TForm1.Button1Click(Sender:   TObject);    
   
    var    
   
    eclApp,WorkBook:Variant;    
   
    //声明为OLE   Automation   对象    
   
    xlsFileName:string;begin    
   
    xlsFileName:=‘ex.xls‘;    
   
    try    
   
    //创建OLE对象Excel   Application与   WorkBook    
   
    eclApp:=CreateOleObject(‘Excel.Application‘);    
   
    WorkBook:=CreateOleobject(‘Excel.Sheet‘);    
   
    except    
   
    ShowMessage(‘您的机器里未安装Microsoft   Excel。‘);    
   
    Exit;    
   
    end;    
   
    try    
   
    ShowMessage(‘下面演示:新建一个XLS文件,并写入数据,最后关闭它。‘);    
   
    workBook:=eclApp.workBooks.Add;    
   
    eclApp.Cells(1   ,   1):=‘字符型‘;    
   
    eclApp.Cells(2   ,   1):=‘Excel文件‘;    
   
    eclApp.Cells(1   ,   2):=‘Money型‘;    
   
    eclApp.Cells(2   ,   2):=10.01;    
   
    eclApp.Cells(1   ,   3):=‘日期型‘;eclApp.Cells(2   ,   3):=Date;    
   
    WorkBook.saveas(xlsFileName);    
   
    WorkBook.close;    
   
    ShowMessage(‘下面演示:打开刚创建的XLS文件,并修改其中的内容,然后,由用户决定是否保存。‘);    
   
    WorkBook:=eclApp.workBooks.Open(xlsFileName);    
   
    eclApp.Cells(2   ,   1):=‘Excel文件类型‘;    
   
    if   MessageDlg(xlsFileName+‘文件已被修改,是否保存?‘,mtConfirmation,   [mbYes,   mbNo],   0)   =   mrYes   then    
   
    WorkBook.save    
   
    else    
   
    workBook.Saved   :=   True;   //放弃修改    
   
    WorkBook.Close;    
   
    eclApp.Quit;    
   
    //退出Excel   Application    
   
    //释放VARIANT变量    
   
    eclApp:=Unassigned;    
   
    except    
   
    ShowMessage(‘不能正确操作Excel文件。可能是该文件已被其他程序打开,   或系统错误。‘);    
   
    WorkBook.close;    
   
    eclApp.Quit;    
   
    //释放VARIANT变量    
   
    eclApp:=Unassigned;    
   
    end;    
   
    end;    
   
    end.    
   
    经过上述操作过程后,我们就可以很放心地将数据库中的数据转换成Excel文件了。  
  Top

2 楼lwluser(lwluser)回复于 2006-03-06 17:13:05 得分 0

你误解我的意思了啊Top

相关问题

  • 在DELPHI调用OPENGL
  • 如何将word中的vba函数在delphi中调用?
  • Delphi调用execl的vba制作打印报表
  • 调用VBA过程
  • delphi定义dll调用
  • 在delphi中调用IE
  • dll调用的vb转delphi
  • delphi调用外部文件
  • 在Delphi中调用Office
  • 如何用delphi调用poweroint?

关键词

  • vba
  • excel
  • 文件
  • 代码
  • 修改
  • delphi
  • 数据
  • 执行
  • 软件
  • office

得分解答快速导航

  • 帖主:lwluser
  • lovendII

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo