谁能给我个VC2005操作word的例子 我试过用VC++6.0操作word,可以成功;但用VC2005时却会出现一系列的问题,研究了好久,但还是没解决,有哪位大哥用VC2005操作过word,发个例子给我,谢谢啦! [email protected] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我做过的也只是VC6写入WORD,没搞过VC2005的 前几天刚讨论过一个word的问题,代码就直接拿过来用了。vs2008测试通过,2005应该也没问题为了简单起见,我没调用app-》Quit#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL" #import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" #import "D:\Microsoft Office\Office12\msword.olb" rename("FindText","_FindText"), rename("ExitWindows","_ExitWindows") using namespace Word;// 不要加 using namespace Office;void Test( void ){AfxOleInit(); ////////////////////////////////////////////////////////////////////////// COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR); _ApplicationPtr app; app.CreateInstance("Word.Application"); app->ShowMe();// app->Activate(); Word::DocumentsPtr spDocs; Word::_DocumentPtr _spdoc; Word::SelectionPtr spsel; TablesPtr theTables; RangePtr wordRange; TablePtr curTable; CComVariant defaultBehavior(1),AutoFitBehavior(1); ParagraphsPtr oParagraphs; ShapesPtr shapes; VARIANT *anchor; RowPtr oRow; spDocs = app->GetDocuments();//获得文档对象 _spdoc = spDocs->Add(vOpt,vOpt,vOpt,vOpt); spsel = app->GetSelection(); spsel->TypeText("one"); oParagraphs=spsel->GetParagraphs();// oParagraphs->put_Alignment(1);//1=wdAlignParagraphCenter spsel->TypeParagraph();//相当于换行 spsel->TypeText("two"); activedoc = app->GetActiveDocument(); shapes=activedoc->GetShapes(); //shapes= spsel->GetShapeRange(); shapes->AddShape(Office::msoShapeRectangle,50,50,50,30); // 这里指定 Office namespaceactivedoc->SaveAs(COleVariant(_T("c:\\doc1.doc")),COleVariant((short)0),vFalse,COleVariant(_T("")),vTrue,COleVariant(_T("")),vFalse,vFalse,vFalse,vFalse,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt);} VC6写入WORD,与VC2005基本没区别 有可能编码的问题,vc6默认用的是Multibyte,vc2005默认用的是不是Unicode? vc6和vs2005操作word应该区别不大,主要是工程字符集的变化,但是不同word版本之间,倒是import comd库,以及生成的类等有一些名称变化,函数可能也有一些变化,需要改一下 2楼,其中activedoc是什么,没定义啊 定义是这个_DocumentPtr activedoc; //activedoc = app->GetActiveDocument(); 谢谢你的回答!用你的方法确实可以。不过我有个疑问:#import "D:\Microsoft Office\Microsoft Office\Office12\msword.olb" rename("FindText","_FindText"), rename("ExitWindows","_ExitWindows")这里D:\Microsoft Office是指Office安装路径吧,但是如果我把程序拷到其他电脑,且这台电脑的Office不是这个路径安装的,该怎么办呢? 没关系的#import 是把 office 的类型库信息导进你的程序里,让你的程序能识别 office 接口,同时你的程序也知道了office组件的 CLSID.在目标机器上,你的程序是通过 CLSID 创建 office 对象。目标系统会通过 CLSID 查找注册表找到 office 的安装路径的 你好,我想在word中添加一个BMP图片(在硬盘上),该如何操作呢?麻烦你了! 通用的思路是这样:你在 word 里面录制宏然后手动插入图片停止宏录制,查看一下宏的代码按照宏代码的逻辑,自己写vc 代码。 marrco2005\很厉害!!! 像offic2007高亮选择文字后弹出的菜单、工具栏效果怎么做? fatal error LNK1120: 2 个无法解析的外部命令 关于XML文件的读取 正确的代码,为什么不能运行? VC中PUCHAR是什么数据类型?DELPHI中可有与些应该的类型呢? 大家谈谈vc6中使用stl的体会 对于修改了的文件,windows是如何标记的呢? 请教在UNIX下用标准C怎么得到系统时间,还是要精确到毫秒? 请问象网吧管理系统如何控制客户端的使用?怎么才能避免用户的恶意破坏? 如何用VC将BMP格式的文件转换成JPG格式(有什么库可用吗) 关于http的get 请问怎么在窗口输出变量
app-》Quit#import "C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "D:\Microsoft Office\Office12\msword.olb" rename("FindText","_FindText"), rename("ExitWindows","_ExitWindows")
using namespace Word;// 不要加 using namespace Office;void Test( void )
{
AfxOleInit();
//////////////////////////////////////////////////////////////////////////
COleVariant vTrue((short)TRUE),vFalse((short)FALSE),vOpt((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
_ApplicationPtr app; app.CreateInstance("Word.Application");
app->ShowMe();
// app->Activate(); Word::DocumentsPtr spDocs;
Word::_DocumentPtr _spdoc;
Word::SelectionPtr spsel;
TablesPtr theTables;
RangePtr wordRange;
TablePtr curTable;
CComVariant defaultBehavior(1),AutoFitBehavior(1);
ParagraphsPtr oParagraphs;
ShapesPtr shapes;
VARIANT *anchor; RowPtr oRow; spDocs = app->GetDocuments();//获得文档对象
_spdoc = spDocs->Add(vOpt,vOpt,vOpt,vOpt); spsel = app->GetSelection();
spsel->TypeText("one");
oParagraphs=spsel->GetParagraphs();
// oParagraphs->put_Alignment(1);//1=wdAlignParagraphCenter spsel->TypeParagraph();//相当于换行
spsel->TypeText("two"); activedoc = app->GetActiveDocument(); shapes=activedoc->GetShapes(); //shapes= spsel->GetShapeRange(); shapes->AddShape(Office::msoShapeRectangle,50,50,50,30); // 这里指定 Office namespaceactivedoc->SaveAs(COleVariant(_T("c:\\doc1.doc")),COleVariant((short)0),vFalse,COleVariant(_T("")),vTrue,COleVariant(_T("")),vFalse,vFalse,vFalse,vFalse,vFalse,vOpt,vOpt,vOpt,vOpt,vOpt);}
_DocumentPtr activedoc; //activedoc = app->GetActiveDocument();
不过我有个疑问:
#import "D:\Microsoft Office\Microsoft Office\Office12\msword.olb" rename("FindText","_FindText"), rename("ExitWindows","_ExitWindows")
这里D:\Microsoft Office是指Office安装路径吧,但是如果我把程序拷到其他电脑,且这台电脑的Office不是这个路径安装的,该怎么办呢?
#import 是把 office 的类型库信息导进你的程序里,让你的程序能识别 office 接口,同时你的程序也知道了office组件的 CLSID.
在目标机器上,你的程序是通过 CLSID 创建 office 对象。目标系统会通过 CLSID 查找注册表找到 office 的安装路径的
你在 word 里面录制宏
然后手动插入图片
停止宏录制,查看一下宏的代码
按照宏代码的逻辑,自己写vc 代码。
marrco2005\很厉害!!!