调用WORD宏怎么这么乱啊??
cplxw 2007-01-22 04:54:04 程序如下:
Variant vWordApp, vSelect,vFont;
vWordApp = Variant::CreateObject("Word.Application");
Variant vWordDoc = vWordApp.Exec(PropertyGet("Documents"));
vWordDoc.Exec(Procedure("Add"));
// vWordApp.Exec(PropertySet("Visible")<<true);
vSelect = vWordApp.Exec(PropertyGet("Selection"));
Variant vActdoc = vWordApp.Exec(PropertyGet("ActiveDocument"));
Variant vTable = vActdoc.Exec(PropertyGet("Tables"));
vTable.Exec(Function("Add")<<vSelect.Exec(PropertyGet("Range"))<<1<<2<<1<<0);//建第一张表
vSelect.Exec(Function("TypeText")<<"col1");//单元格1
vSelect.Exec(Function("MoveRight")<<12);
vSelect.Exec(Function("TypeText")<<"col2");//单元格2
vSelect.Exec(Function("MoveRight")<<12);
vSelect.Exec(Function("MoveDown")<<5<<1<<1);//移至表格下
vSelect.Exec(Function("TypeText")<<"第一张表");
vSelect.Exec(Function("TypeParagraph"));
vSelect.Exec(Function("InsertBreak")<<7);//分页
vTable.Exec(Function("Add")<<vSelect.Exec(PropertyGet("Range"))<<1<<2<<1<<0);//建第二张表
vSelect.Exec(Function("TypeText")<<"col1");
vSelect.Exec(Function("MoveRight")<<12);
vSelect.Exec(Function("TypeText")<<"col2");
vSelect.Exec(Function("MoveRight")<<12);
vSelect.Exec(Function("MoveDown")<<5<<1<<1);
vSelect.Exec(Function("TypeText")<<"第二张表");
vSelect.Exec(Function("TypeParagraph"));
vSelect.Exec(Function("InsertBreak")<<7);//分页
vTable.Exec(Function("Add")<<vSelect.Exec(PropertyGet("Range"))<<1<<2<<1<<0);//建第三张表
vSelect.Exec(Function("TypeText")<<"col1");
vSelect.Exec(Function("MoveRight")<<12);
vSelect.Exec(Function("TypeText")<<"col2");
vSelect.Exec(Function("MoveRight")<<12);
vSelect.Exec(Function("MoveDown")<<5<<1<<1);
vWordApp.Exec(PropertySet("Visible")<<true);
如果把VISIBLE提前(即程序中把最后一句屏蔽掉,把第五行的屏蔽去掉),得出的结果是正常的,否则就出问题了(即第二张表变没了,如果多几个建表的程序段,则是中间所有的表都变没了,只剩下第一和最后的表),大家可以试试。
个人感觉MoveDown用的有问题,但为什么把visible提前就没事了呢?
真是乱啊!!
宏高手们,迫切等待你们的提点!!