在VC中调用WORD(显示,修改,存盘,运行宏)之三。调用word的各种对话框翻页等。

原创 2001年09月25日 16:28:00

有了这个,可以替换掉word的菜单了:)也就是说,你可以完全不把word框架显示出来就可以完全实现WORD的功能了。

在View菜单中,选ClassWizard,选Automation选项卡,选Add Class,选择From a TypeLibrary, 在Office目录中选中Microsoft Word 97/2000 类型库Word8.olb或Word9.olb,选中Dialog,Dialogs,Selection。单击ok

调用word的对话框如下:

   TRY{
  LPDISPATCH lpDisp;  
  if (m_pSelection)
  {
   lpDisp = m_pSelection->GetIDispatch();   
   Documents docs;  
   _Application app;   
   _Document mydoc;  
   mydoc.AttachDispatch (lpDisp,TRUE);
   app=mydoc.GetApplication ();      
   mydoc.Activate ();  
   Dialogs mydialogs;
   Dialog  mydialog;
   mydialogs.AttachDispatch (app.GetDialogs (),TRUE); 
     mydialog.AttachDispatch (mydialogs.Item (112),TRUE);

/*112是查找替换*/
    mydialog.Show  (COleVariant((short)0));
    mydialog.Execute ();
    mydialog.DetachDispatch ();

   
  }
  }
 CATCH(CException, e)
 {
        /*your pleaser to display error message*/
  TCHAR errormsg[255];
  e->GetErrorMessage (errormsg,255,NULL);
 }
 END_CATCH
return 0;

/*在WORD中录制新宏,输入Dialogs(这时会自动出现智能填充随便选择一个然后在其下右键单击定义。可以查看其详细信息。像新建文件是79,打开文件是80,页面设置是178 等等具体的吗?看字面意思了。再不成,就一个一个地试吧。把上面的112替换成你想要的就成了。show(COleVariant((short)0)就是一直显示,直到用户做出选择可以设成你想要的毫秒数。*/

 

下面是翻页的具体代码(带COPY&PASTE):

int CQsofficeView::adjustpage(int oldstartpage, int totalpages,int nowstartpage,BOOL downorup)
{
   TRY{
  LPDISPATCH lpDisp;  
  if (m_pSelection)
  {
   lpDisp = m_pSelection->GetIDispatch();   
   Documents docs;  
   _Application app;   
   _Document mydoc;  
   mydoc.AttachDispatch (lpDisp,TRUE);
   app=mydoc.GetApplication ();      
   mydoc.Activate ();  
   Selection myselection;
      myselection.AttachDispatch (app.GetSelection (),TRUE); 
   myselection.GoTo (COleVariant((short)1),COleVariant((short)2),COleVariant((short)0),COleVariant((short)oldstartpage));
   myselection.MoveDown (COleVariant((short)7),COleVariant((short)totalpages),COleVariant((short)2));            
   myselection.Cut ();
   myselection.GoTo (COleVariant((short)1),COleVariant((short)2),COleVariant((short)0),COleVariant((short)nowstartpage));     
   myselection.Paste ();
   
  }
  }
 CATCH(CException, e)
 {
      /*your pleaser to display error message*/
  TCHAR errormsg[255];
  e->GetErrorMessage (errormsg,255,NULL);
 }
 END_CATCH
return 0;

}

实在太高兴了,所以又把源码给放上来了。

实现WORD功能技术上没什么难题了。以后不会有这种文档了。:)

 

在VC中调用WORD(显示,修改,存盘,运行宏)

http://blog.csdn.net/zheng017/article/details/11200 (1)使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名...
  • yfhy2014
  • yfhy2014
  • 2015年01月21日 14:33
  • 525

在VC中调用WORD(显示,修改,存盘,运行宏)

ZHENG017    原作   (1)使用AppWizard创建一个新的MFC AppWizard(EXE)工程,命名为"office"   (2)选择单文档视图(SDI)结构,在第3步中需...
  • ccx_john
  • ccx_john
  • 2014年10月01日 09:14
  • 395

在VC中调用WORD(显示,修改,存盘,运行宏)之二去掉word的常用,格式工具栏

在VC中调用WORD(显示,修改,存盘,运行宏)之二去掉word的常用,格式工具栏 在View菜单中,选ClassWizard,选Automation选项卡,选Add Class,选择From a ...
  • yfhy2014
  • yfhy2014
  • 2015年01月21日 14:35
  • 894

word宏的使用——Selection对象

Selection 对象'代表窗口或窗格中的当前所选内容。所选内容代表文档中选定(或突出显示)的区域,如果文档中没有选定任何内容,则代表插入点。每个文档窗格只能有一个 Selection 对象,并且在...
  • h595103832
  • h595103832
  • 2016年06月24日 11:34
  • 1066

Matlab和word,还有.m文件的发布。

今天学习了matlab,知道它竟然和word可以进行交互,但是前提是matlab必须在window版本上面应用,并且word有宏命令的功能。具备上述条件后,在matlab命令窗口输入 noteboo...
  • miss_liu01
  • miss_liu01
  • 2016年11月09日 16:08
  • 375

利用“宏”来为Word中的代码编写行号

需求有时候,有创作科技图书的需求,可能就要用代码的讲解,而讲解代码时,为了方便起见,不免要给代码边行号。但是,Word本身带的行号功能,非常不太好用,而手工敲写编号,一是容易错,而是工作量太大。所以很...
  • yhily2008
  • yhily2008
  • 2016年11月15日 17:45
  • 1078

使用单文档视图结构把Word嵌入到VC程序中(2)

环境;win7 64,vs2008 sp1,word2013 一.新建一单文档,复合文档选择容器,同时选中活动文档容器和支持复合文件 二.参考http://dragoo747450.blog.1...
  • dragoo1
  • dragoo1
  • 2014年12月14日 11:35
  • 1629

Endnote X5和Word 2010协作时的加载项与宏警告问题总结

Microsoft Office Professional Plus 2010 装好以后,首次运行发现它就是已经破解的。但是每次关闭Word时都出来如下警告“您正试图运行的函数包含有宏或需要宏语言.....
  • arackethis
  • arackethis
  • 2015年04月27日 14:30
  • 2276

[J2EE]java web项目中调用word转html命令行工具

需求          有一批word文档需要以网页的形式呈现给用户.      需要实现动态更新 解决方案       方案一:               建立数据库,把wor...
  • sunshaoshan163
  • sunshaoshan163
  • 2017年02月20日 11:13
  • 619

ASP.NET 在IIS操作WORD文档出错的解决办法

vs调试没有问题,但是放在iis上就出现问题了,提示 System.NullReferenceException,调试发现是Word.Selection 为空。...
  • keyler
  • keyler
  • 2017年04月27日 12:16
  • 648
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在VC中调用WORD(显示,修改,存盘,运行宏)之三。调用word的各种对话框翻页等。
举报原因:
原因补充:

(最多只允许输入30个字)