如何获得Excel的动作?(200分)

  • 主题发起人 主题发起人 iwish
  • 开始时间 开始时间
I

iwish

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在写一个程序,当中要获得用户对excel的操作,比如象点了哪个菜单,
哪个edit中的值是多少,如用户是否点了查找,是否查找‘TEXcel’。
 
我知道用宏,但不知如何做,请给出实例。
 
用DDE可以连接到excel
 
我不是要操纵Excel数据,而是要操纵Excel
 
ExcelApplication1.Connect;//连接Excel
ExcelApplication1.Workbooks.add(Template,1);//加新表单
。。。
你到底问什么?具体点
 
我要用让delphi得到用户在Excel中的动作,如点击菜单,输入值
 
先在Excel中利用宏记录下你在Excel想要操纵的动作,然后再编辑该宏,
通过在编辑窗口中,你可看到VB是如何做到的,然后利用Delphi的automation
以同样的对象同样的方法,唯一不同的是一个是VB语言,一个是Delphi而已。
 
!我保证你们看到以下的用法一定爽歪歪了!!!
这可是我三天工作的结果。唔。。。
---看最后终结者office。
--------------------------------
如果你们用的office97的server控件,那么用office2000时就要把server上的控件换掉。
做法:
1。在Componet里打开Install Packages.....
2.去掉borland sample automation server components
3.在project中点input type Library....
4.点add加入office2000的类库。(在Microsoft Office/office目录下的)
5。反正是什么Excel9.olb , Msword9.olb 和那些*.olb的东东,有excel的,word的,等。。。
6。palette page:改为servers(因为以前的office的控件完完了)
7。点install就好了。
这样office2000的问题我想应解决了。(如果你用的是什么word.application或excel.application 的控件的话)。
-----------
我的建议:
先用上面一的方法,再用comobj对象。
use comobj, excel_tlb; //excel_tlb 是新excel控件的pas文件,你把新控件放在窗体上看它用的哪个.pas就好了,当然下面要把这个控件去掉。因为comobj不用这个控件。只用这个.pas如excel_tlb中的函数。
var xl:variant;
在事件里写:
xl:=createoleobject('Excel.Application');

然后打开excel或word录一个宏命令,并打开宏命令考入代码。
----以下是宏录下来的宏。
workbooks.add
Range("C5:D7").Select
Sheets("Sheet2").Select
ActiveWindow.SelectedSheets.Delete
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet3").Range("A1")
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3"
-------
现在把它改为以下:
xl.workbooks.add;
xl.workbooks.add('d:/test.xls');
xl.Range['C5:D7'].Select;
xl.Sheets['Sheet2'].Select;
xl.ActiveWindow.SelectedSheets.Delete;
xl.Charts.Add;
xl.ActiveChart.ChartType := xlColumnClustered;
xl.ActiveChart.Location(xlLocationAsObject,'Sheet3');
现在运行一下,我保证你们爽歪歪!
看到规律了吗?
前面加上对象名,()改[],= 改:=,有参数时直接用,后加; 。哈哈,满意了吧,
用office的宏命令可是不用你去想编程的,全是手动。这样少写了一大堆代码。

bbcoll 如有不明白的朋友讨论可:bbcoll@china.com

-------------------------------------------------------
 
bbcoll:似乎也不必要每个里面都copy一下啊
 
请自己提前问题
或者结束
 
后退
顶部