在c++ builder中控制microsoft word遇到了不能执行的问题,请教。
我在精通c++ builder 5中看的程序,但是不能执行,请教该代码中哪条有问题:
#include <vcl.h>
#pargma hdrstop
#include "unit2.h"
#include <comjbt.hpp>
#pragma packge(smar_init)
#prragma resource "*.dfm"
TForm1 *Form1;
_fasstcall TForm::TForm1(TComponent* Owner)
:TForm(Owner)
{}
void _fastcall TForm1::Button1Click(TObject* Sender)
{
Variant V;
AnsiString str;
int i;
V=CreateOleObject("Word.Application");
V.Exec(Procedure("AppShow")); //此条不能执行
V.Exec(Procedure("FileNew")<<"Normal"); //此条不能执行
Query1->SQL->Add("Select company,contact,phon from customer");
Query1->Open();
while(!Query1->Eof){
str="";
for(i=0;i<(Query1->FieldCount-1);i++)
str=str+Query1->Fields->Fields[i]->AsString+""+13;
V.Exec(Procedure("Insert")<<str);
Query1->Next();
}
Query1->Close();
V.Exec(Procedure("FileSaveAs")<<Edit1->Text);
Button1->Caption="保存完毕!";
}
请问上面不能执行的代码是为什么,是否命令有错误。
什么地方能下载到有关word自动控制的帮助文档?
请指教,不盛感激!!
问题点数:20、回复次数:10Top
1 楼wohow()回复于 2006-03-10 17:47:57 得分 10
V=CreateOleObject("Word.Application");
如果成功V就代表Word应用程序对象,之后一般需要生成Documents等对象来操纵。CB中相关函数有4个:
Variant::OleFunction
Variant::OleProcedure
Variant::OlePropertyGet
Variant::OlePropertySet
Word中的函数可以打开Word->工具->宏->Visual Basic编辑器,打开工具栏上面的“对象浏览器”,Word里的OLE功能在这里一般都能找到Top
2 楼jsxxq()回复于 2006-03-16 22:53:44 得分 2
建议从CBC中唤起Word,具体功能实现用VBA在Word中做,事半功倍!Top
3 楼xinxing0123()回复于 2006-03-27 11:22:03 得分 0
楼上能说得再详细点吗?谢谢!Top
4 楼xinxing0123()回复于 2006-03-27 11:26:31 得分 0
wohow:你那有关于操作word的例子代码吗?能贴上一个吗.Top
5 楼xinxing0123()回复于 2006-03-27 17:41:21 得分 0
wohow:当启动一个word应用程序后,怎样建立一个新文档?Top
6 楼wohow()回复于 2006-03-29 12:24:09 得分 5
#include <Utilcls.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Variant word;
try
{
word = Variant::CreateObject("Word.Application");
}
catch(EOleSysError &e)
{
//Are you sure your Word is correct?
return;
}
try
{
word.OlePropertySet("Visible", false);
Variant abc = word.OlePropertyGet("Documents").OleFunction("Add");
Variant range = abc.OleFunction("Range");
range.OleProcedure("InsertAfter", "abc");
abc.OleProcedure("SaveAs", "D:\\abc.doc");
}
catch(EOleSysError &e)
{
//Failed to do it.
}
try
{
word.OleProcedure("Quit", 0);
}
catch(EOleSysError &e)
{
//What?
}
}
Top
7 楼xinxing0123()回复于 2006-04-06 16:49:02 得分 0
OleProcedure和OleFunction在使时有什么区别?Top
8 楼wohow()回复于 2006-04-11 12:45:28 得分 2
有些编程语言把没有返回值的称为过程Procedure,相当于C/C++中返回void的,有返回值的称为函数Function,相当于C/C++除了void返回类型之外的函数。Variant::OleFunction()执行函数,Variant::OleProcedure()执行过程。Top
9 楼zyyoung(倡导开源)回复于 2006-04-11 15:11:21 得分 1
mkTop
10 楼moondaoke(月下刀客)回复于 2006-04-12 15:31:20 得分 0
用wordapplication方便一些啊Top




