如何控制WORD和EXCEL的工具栏?(100分)

  • 主题发起人 主题发起人 dlnew
  • 开始时间 开始时间
D

dlnew

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
如何在用DELPHI打开WORD或EXCEL时,把WORD或EXCEL的所有的工具栏都隐藏掉呢?
用下面的方法可以隐藏掉指定的工具栏:
wordapp.CommandBars("Standard").Visible := False
这样就隐藏了“常用”工具栏,但如果要用这个方法来隐藏,就必须得到所有工具栏的名称,包括自定义的工具栏,这又该如何做?
 


Dim wordApp As New Word.Application()
Dim myDoc As Word.Document
Dim myBar As Microsoft.Office.Core.CommandBar
Dim myButton As Microsoft.Office.Core.CommandBarButton
Dim isExist As Boolean
isExist = False
myDoc = wordApp.Documents.Open("f:/test.doc")
wordApp.Visible = True
For Each myBar In wordApp.CommandBars
myBar.Visible = False
Next
 
看看上面的,自己去改动一下。[:)]
 
就是这句“For Each myBar In wordApp.CommandBars”!要是我能把它翻成PASCAL语句,就不用问了!
 
for i:=1 to Wrddoc.Document.CommandBars.Count do
begin
Wrddoc.Document.CommandBars.Item.Visible =false
end;

wrddoc=wrdapp.activedocument
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=408535
COM高手看过来:怎样用IEnumVARIANT实现类似for each prop in XXX ... next?举一个Delphi的例子
 
我自己搞定了!
开始,我是用WORDAPP := CREATEOLEOBJECT(‘WORD。DOCUMENT’)得到一个WORD实例,然后想用WORDAPP。COMMANDBARS来得到所有的COMMANDBAR,结果运行时,得到一个出错提示——无效索引。
现在,用SERVER页中的TWordApplication来做,就OK了,代码如下:
for i:=1 to WordApplication1.CommandBars.Count do
begin
listbox1.Items.Add(WordApplication1.CommandBars.Get_Name);
end;

在此,谢谢各位的参与。
 
我用的是DDE和动态生成创建WORD
还没有用过SERVER组件创建
楼主可否把创建过程写下,谢谢
 
//////////////////////////////////////////////////////////////////////////////
下面的文章出自《DELPHI未经证实的葵花宝典》
/////////////////////////////////////////////////////////////////////////////

Delphi + Word = 数据库 + 公文处理
孙立

delphi擅长做数据库类的mis开发,但对于oa就有点力不从心了。不过随着microsoft的com技术逐渐成熟,现在普通windows应用已经可以和office 97无缝结合了,尤其是在delphi 5中提供了一组servers组件,更是简化了程序开发。

最近接触了一个用户的案例,用delphi控制word做一个合同管理程序。办公人员先根据业务需要,写好合同的文字,但在用户名称、产品名称等变化的位置填写指定的标记字符串,然后通过delphi把数据库中的实际数据替换掉word中的文字,最后让word打印出合同。

delphi自带了一个简单的word例题,但功能太简单。通过查找vba的说明,再对照delphi的vcl,编写了如下代码,实现了基本的公文管理功能。

启动word时用如下代码:

begin

try

wordapplication.connect;

except

messagedlg('word may not be installed', mterror, [mbok], 0);

abort;

end;

wordapplication.visible := true;

wordapplication.caption := 'delphi automation';

end;

关闭word用如下代码。如果想保存doc文件,请修改savechanges变量的内容:

var

savechanges, originalformat, routedocument: olevariant;

begin

savechanges := wddonotsavechanges;

originalformat := unassigned;

routedocument := unassigned;

try

wordapplication.quit(savechanges, originalformat, routedocument);

wordapplication.disconnect;

except

on e: exception do

begin

showmessage(e.message);

wordapplication.disconnect;

end;

end;

end;

让word打开一个指定的文件,需要先放置opendialog,然后调用wordapplication.documents.open:

var

itemindex :olevariant;

filename, confirmconversions, readonly, addtorecentfiles,

passworddocument, passwordtemplate, revert,

writepassworddocument, writepasswordtemplate, format: olevariant;

begin

if not dlgopen.execute then

exit;



{open document}

filename := dlgopen.filename;

confirmconversions := false;

readonly := false;

addtorecentfiles := false;

passworddocument := '';

passwordtemplate := '';

revert := true;

writepassworddocument := '';

writepasswordtemplate := '';

format := wdopenformatdocument;



wordapplication.documents.open( filename, confirmconversions,

readonly, addtorecentfiles, passworddocument, passwordtemplate,

revert, writepassworddocument, writepasswordtemplate, format );



{assign worddocument component}

itemindex := 1;

worddocument.connectto(wordapplication.documents.item(itemindex));



{turn spell checking of because it takes a long time if enabled and slows down winword}

wordapplication.options.checkspellingasyoutype := false;

wordapplication.options.checkgrammarasyoutype := false;

end;

让word替换标记字符串要使用worddocument.range.find.execute,这里用delphi替换了<#name>:

var

findtext, matchcase, matchwholeword, matchwildcards, matchsoundslike,

matchallwordforms, forward, wrap, format, replacewith, replace: olevariant;

begin

findtext := '<#name>';

matchcase := false;

matchwholeword := true;

matchwildcards := false;

matchsoundslike := false;

matchallwordforms := false;

forward := true;

wrap := wdfindcontinue;

format := false;

replacewith := 'delphi';

replace := true;

worddocument.range.find.execute( findtext, matchcase, matchwholeword,

matchwildcards, matchsoundslike, matchallwordforms, forward,

wrap, format, replacewith, replace );

end;

上面这4段代码完成了公文管理的基本功能,再把它和数据库结合起来,就可以开发一个与lotus notes类似的产品了。
 
后退
顶部