如题,上网找了很多,终于解决了 VC 控制 Word 写入页眉页脚的方法,但是还需要一个功能,那就是插入自动图文集,也就是类似于 "第 X 页 共 Y 页" 的自动图文集。
VBA 里的代码是:NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=Selection. _
        Range, RichText:=True
但是在 WORD 的类库中中找不到相关类和函数,只找到如下的一些相关的信息:1、Selection::CreateAutoTextEntry(LPCTSTR Name, LPCTSTR StyleName)
2、Template::GetAutoTextEntries()
3、Range::InsertAutoText()
4、AutoTextEntry 类
用 Range::InsertAutoText 插入自动图文集,就异常为 “区域不指定已知的“自动图文集”词条” 错误,上网也查了很久,没找到什么资料,这个问题该怎么解决啊!

解决方案 »

  1.   

    经过不断地尝试,终于解决了,留此帖给遇到此类问题的人!/************************************** 页脚的设置 ************************************************/
    //终于解决了页脚的设置问题,包括自动图文集的问题

    Window oActiveWnd;//定义活动窗口对象
    View oActiveView;//定义活动视图对象
    Pane oPane;//定义当前窗格对象
    oActiveWnd = oWordApp.GetActiveWindow();//获得当前窗口 
    oPane = oActiveWnd.GetActivePane();//获得当前窗格
    oActiveView = oPane.GetView();//获得当前视图
    oActiveView.SetSeekView(10);//设置页眉视图

    oSel.WholeStory();
    oSel.Delete(((COleVariant)(short)1),((COleVariant)(short)1));

    Paragraphs ParagraphFmt = oSel.GetParagraphFormat();
    ParagraphFmt.SetAlignment(1);//居中

    oSel.TypeText("《" + "多媒体技术及其应用" + "》  "); 

    Template NormalTemplate = oWordApp.GetNormalTemplate();

    AutoTextEntries ATEntries;
    ATEntries = NormalTemplate.GetAutoTextEntries();

    AutoTextEntry ATEntry;//查找 "第 X 页 共 Y 页" 自动图文集
    for ( int nATEntries = 1 ; nATEntries < ATEntries.GetCount() ; nATEntries ++ )
    {
    ATEntry = ATEntries.Item(COleVariant((short)nATEntries));
    if ( ATEntry.GetName() == "第 X 页 共 Y 页" )
    break;
    }

    if ( nATEntries != ATEntries.GetCount() )
    ATEntry.Insert(oSel.GetRange(),((COleVariant)(short)TRUE));

    oActiveView.SetSeekView(0); //回到正文视图 

    /************************************** 页脚的设置 ************************************************/
      

  2.   

    关键段:Template NormalTemplate = oWordApp.GetNormalTemplate();
        
        AutoTextEntries ATEntries;
        ATEntries = NormalTemplate.GetAutoTextEntries();
        
        AutoTextEntry ATEntry;//查找 "第 X 页 共 Y 页" 自动图文集
        for ( int nATEntries = 1 ; nATEntries < ATEntries.GetCount() ; nATEntries ++ )
        {
            ATEntry = ATEntries.Item(COleVariant((short)nATEntries));
            if ( ATEntry.GetName() == "第 X 页 共 Y 页" )
                break;
        }
        
        if ( nATEntries != ATEntries.GetCount() )
            ATEntry.Insert(oSel.GetRange(),((COleVariant)(short)TRUE));