如何用已有的VBA语法去修改指定的XLS文件(100分)

  • 主题发起人 主题发起人 shenlingyun
  • 开始时间 开始时间
S

shenlingyun

Unregistered / Unconfirmed
GUEST, unregistred user!
请问各位大侠:
我如何用VBA去修改一个已经存在的Excel文件呢?我现在已经知道该用什么VBA语法,只是
不知道该如何把调出来的XLS文件用我的VBA去修改它.
(我能用TOLEContainer去打开它,可是我要继续用VBA修改它,该如何作呀)
谢谢!

实例如下:
我可以用OleContainer1.CreateObjectFromFile('d:/address.xls',false);打开一个已
存在的XLS文件,要处理的VBA是:ActiveSheet.PageSetup.CenterHeader := 'Acroprise Inc.'
我该怎样把这句VBA语句写入address.xls,让它产生一定效果呢?
 
哈哈,能不能多给点分啊!这可是花了我一个礼拜的心血呢!
很简单,
1`、建议你用SERVER控件中的EXCEL类控件打开EXCEL文件,这个为以后修改方便,
OLE太老了。
2、将特定的功能(要在DELPHI中修改EXCEL的功能)录制成宏,(在EXCEL中录制即可),
3、将宏代码COPY出来,粘贴到DELPHI单元中,只要改动少许,DELPHI即能用。
比如将“=”改成“:=”等。
这么点分数这些我想也应该差不多了。你也能应该理解了。
给分吧!
 
谢谢刃血的回答,有一点我没有说清楚---就是我用的是Delphi 4,由于关系到公司的整体协调性,
小弟不能单方面升级Delphi,所以还不能使用Server的控件---没办法;
其次,小弟已经知道如何取出VBA语句(那句语句就是我用‘录制宏’的办法得到的),只是我现
在不能把这句VBA语句插入到已有的XLS文件中(如果新建一个XLS文件,可以做到)
我现在只知道新建一个XLS文件,如下:
FExcel:=CreateOleObject('excel.application');
FWorkBook := FExcel.WorkBooks.Add;
FWorkSheet := FWorkBook.WorkSheets.Add;
FWorkSheet .PageSetup.CenterHeader := 'Acroprise Inc.'
这样只能重建一个,懂吗?
我想你现在应该知道我的问题了吧!
 
首先,你的录制宏的方法与我说的一样,但我说的是把宏插入到DELPHI中,而不是插入到
文件中,我用变体变量联系OFFICE用得不多,也是用DELPHI4做自动报告生成系统时用到一点,
我用SERVER实现了上面说到的功能,没用过变体变量实现,不过我想应该差不多,我把用
SERVER空间实现的代码给你吧,稍微变一下应该差不多。能不能多给点分啊?
开个玩笑!
var
template,newtemplate,itemindex:olevariant;
format,from,linktosource,sqlstatement,PasswordDocument,style,WritePasswordDocument,SQLStatement1,connection,Passwordtemplate,WritePasswordtemplate,DataSource,to_,IncludeFields:olevariant;
text,matchcase,matchwholeword,matchwildcards,matchsoundslike,matchallwordforms,forward,wrap,replacewith,replace:olevariant;
what,namebk,which,count,Unitbk,extend:olevariant;
begin
wordapplication1.connect;
wordapplication1.visible:=true;
//template:='C:/WINDOWS/Application Data/Microsoft/Templates/wi.dot';
template:='E:/报告自动生成系统资料/1前言.doc';
newtemplate:=true;
itemindex:=1;
wordapplication1.documents.add(template,newtemplate);
worddocument1.connectto(wordapplication1.documents.item(itemindex));
//*****************书签定位********
with wordapplication1 do
begin
What:=wdGoToBookmark;
Namebk:='csfh';
Selection.GoTo_(what,which,count,namebk);
With ActiveDocument.Bookmarks do
begin
DefaultSorting := wdSortByName;
ShowHidden := False;
End;
Unitbk:=wdCharacter;
Count:=1;
Selection.MoveRight(unitbk,count,extend);
end;
//***************** 书签定位结束*******************
这是调用WORD的代码,用EXCEL也是一样的道理(抱歉,手头没有EXCEL类的代码);
其中星号内的内容既是经过改动后的宏。
 
接受答案了.
 
老兄:
不要结束讨论呀,我还没有解决问题呢,我用的是Delphi 4呀,不是Delphi 5,怎么用
WordApplication呀?
 
不好意思,最近要考试很忙,没时间上网,关于DELPHI4和DELPHI5的转换,我想可以将WORDAPPLICATION
控件的相关代码转换成变体变量名称即可吧,我目前确实没多少时间去测试,请自己去测试
以下吧
 
后退
顶部