急!急!急!有关操作WORD(100分)

  • 主题发起人 主题发起人 zla
  • 开始时间 开始时间
Z

zla

Unregistered / Unconfirmed
GUEST, unregistred user!
我在写一个操作word的程序,在程序中我想调出word中的内置对话框
WordApplication1.CommandBars.Item['File'].Controls[9].Execute
这样我调出了“页面设置”对话框,但是我打开word时使
WordApplication1.visible:=false的,不想显示出word来,
只是想页面设置完成后,保存设置,在这个过程中并不想显示出word,
我在调出“页面设置”对话框时word并未显示,但是我只要点“页面设置”对话框上的“确定”或“取消”这是word就出来了,
有高手可以完成通过调用word的“页面设置”在不显示word的前提下,保存设置吗!
小弟十分感谢!
 
我是事先建了几个word文档设置好了格式作为模板,目的是通过拷贝这些文件形成新的文件
这样新文件中就有了固定的格式,但是事先建好的模板要能改才可以,但是在改模板时
并不需要把模板文档显示出来呀,而且也必需通过word的内置对话框设置文档格式。
有那为高手能实现这样的功能呀,有别的思路也可以的!

 
我不懂的,你可以看一下 石头的帖子: http://www.delphibbs.com/delphibbs/dispq.asp?lid=737517
 
看来不行的。
能不能变通点?例如用自己的对话框
 
//试试下面刚写的.如果你要用Delphi带的组件,省去常量声明,取对你有用的那段就行了,GoodLuck!
uses ComObj;
procedure DocPageSetup(const DocFileName: string);
const
wdAlertsNone = $00000000;
wdDialogFilePageSetup = $000000B2;
var
DocApp: OleVariant;
begin
try
try
DocApp := CreateOleObject('Word.Application');
DocApp.DisplayAlerts := wdAlertsNone;
DocApp.Documents.Open(DocFileName);
DocApp.Dialogs.Item(wdDialogFilePageSetup).Show;
DocApp.Visible := False;
DocApp.ActiveDocument.Save;
except
end;
finally
if not VarIsEmpty(DocApp) then
DocApp.Quit;
DocApp := Unassigned;
end;
end;
 
首先谢谢vvyang
我试了但是好像有点闪,好像是打开了word文档马上有关闭了,能不能彻底不打开word文档,彻底克服闪
 
关注!
我对WORD控制方面的问题很感兴趣
学习
 
我绝对用得着
 
自已写成类吧。不用控件。下面是我用CB写的,不是很全。但愿对你会有帮助。
#ifndef OperateWord2kH
#define OperateWord2kH
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>

#include "vcl/utilcls.h"


class OperateWord
{
protected:
Variant WordApp,Document;
public:
OperateWord(){}
~OperateWord(){};
Variant & wordApp(){return WordApp;}
Variant & document(){return Document;}
public:
virtual void OpenWord();
virtual void OpenWordFile(AnsiString str_ExcelFileName,bool Visibled=true,bool IfReadOnly=false);
virtual void DocumentSave(); //存盘当前路径
virtual void DocumentSaveAs(AnsiString str_FileName); //文件另存
virtual void DocumentClose();
virtual void QuitWord(); //关闭文件

};



#endif
//以上为头文件
#include <vcl.h>
#pragma hdrstop
#include "OperateWord2k.h"

/*
WordApp=CreateOleObject("Word.Application");
//使Excel 显示
WordApp.OlePropertySet ("visible",true);
//创建 Workbooks
Documents=WordApp.OlePropertyGet("Documents");

//显示

AnsiString FileName=ThisPath.Trim()+EXCHANGE+adoTBlobBiaoHao->Value.Trim ()+EXT;

Document=Documents.OleFunction("Open",FileName);//

*/

void OperateWord::OpenWord()
{
WordApp=CreateOleObject("Word.Application");
WordApp.OlePropertySet ("visible",true);
Document=WordApp.OlePropertyGet("ActiveWorkBook");

}

void OperateWord::OpenWordFile(AnsiString str_ExcelFileName,bool Visibled,bool IfReadOnly)
{
WordApp=CreateOleObject("Word.Application");
WordApp.OlePropertyGet("Documents").OleProcedure("Open",str_ExcelFileName,NULL,IfReadOnly);
WordApp.OlePropertySet ("visible",Visibled);
Document=WordApp.OlePropertyGet("ActiveDocument");
}

void OperateWord::DocumentSave()
{
Document.OleProcedure("Save");
}
void OperateWord::DocumentSaveAs(AnsiString str_FileName)
{
Document.OleProcedure("Close",str_FileName);
}
void OperateWord::DocumentClose()
{
Document.OleProcedure("Close");
}

void OperateWord::QuitWord()
{
if(!WordApp.IsEmpty())
WordApp.OleProcedure("Quit") ;
}
//以上为类的实现
 
大家多帮忙呀!
 
其实您可以把您想实现的操作在Word里面通过录宏记录下来,然后编辑该宏就可以看到VBA是怎么操作的,在Delphi里面用过OLE的方式就可以直接把VBA的代码拿来就用!
 
后退
顶部