关于WordBasic中“另存为HTML”(SaveAs)的问题 by 晓茶(150分)

  • 主题发起人 茶叶蛋
  • 开始时间

茶叶蛋

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中要用到WordBasic的SaveAs方法将Word文档转存为HTML格式
(详见我以前提的问题,全在OLE/Automation版)
要用到 。。。SaveAs( '文件名', 100 ) 后边的这个参数是从
宏中录下来的。

我的机器被重装过许多遍,好像每次重装过后那个参数都会变,我自己的
机器上有过103, 105, 100, 101,Seasky给过我108。

本来这不称之为一个问题,但是由于后面的参数如果不合本机上的一致,
就转不过去。而除了自己启动一遍Word录下参数,还有没有别的办法可以
通过编程解决?

谢谢,这个问题比较急。

另外,每次转换时Word自己都会蹦出一个对话框,让我选内码,可不可以
屏蔽掉它呢?
 
看这段程序:

procedure TForm1.Button1Click(Sender: TObject);
Var
wd:variant;
i: integer;
w: longint;

begin
wd:=CreateOLEObject( 'word.Application' );
try

for i:=1 to wd.fileconverters.count do begin
w:=0;

if (wd.FileConverters.item(i).cansave) and
(pos('HTML', wd.fileconverters.item(i).FORMATNAME)>0) then BEGIN
w:=wd.FileConverters.item(i).SaveFormat;
SHOWMESSAGE(INTTOSTR(W));
end;
finally
WD.QUIT;
end;
end;

W即是SAVEFORMAT的值。 在这里会显示出11。(至少在我的机器上是11)。
把11转化成八进制,即13, 中间添个0, 就是103了。
我想103就是这么来的。

不信的话,你用下面的程序把所有的SAVEFORMAT全部列出来。然后
算一下, 再套到WORD宏里面就知道了.

至于把11变成103你就自己再想法子, 慢慢搞吧.

procedure TForm1.Button1Click(Sender: TObject);
Var
wd:variant;
i: integer;
w,R: longint;

begin
wd:=CreateOLEObject( 'word.Application' );
try
// wd.documents.open('d:/my documents/report.doc');
for i:=1 to wd.fileconverters.count do begin
w:=0;
r:=0;

listbox1.items.add(wd.FileConverters.item(i).FormatName);

if wd.FileConverters.item(i).cansave then
w:=wd.FileConverters.item(i).SaveFormat;
if wd.FileConverters.item(i).canOPEN then
r:=wd.FileConverters.item(i).OpenFormat;

ListBox1.items.add(inttostr(w)+' '+inttostr(r));

end;
finally
WD.QUIT;
end;
end;



 
终于弄出来了,谢谢liwei了。
 
顶部