在写Word的时候,搜索一个字符串后,如何在字符串的位置把字符串替换为图片

albertlvzhenbin 2011-01-13 02:34:19
目前有一个Word模版,里面有几个表格,我需要在表格中填写粘贴不同的图片,所以在需要贴图片的位置写一个特殊的字符串,然后通过搜索此字符串,搜索到后,把字符串替换成图片。
//把图片拷贝到粘贴板上
std::auto_ptr<TClipboard> clip(new TClipboard());
std::auto_ptr<TImage> pSrcImage(new TImage(NULL));
pSrcImage->AutoSize = true;
pSrcImage->Picture->LoadFromFile("F:\\精挑细选车模\\m(1).jpg");
clip->Open();
clip->Assign(pSrcImage->Picture);
clip->Close();

////替换字符串
Variant Select = m_WordApp.OlePropertyGet("Selection");
Variant vFind = Select.OlePropertyGet("Find");
vFind.OleFunction("ClearFormatting");

vFind.OlePropertySet("Text", "啦啦啦啦啦啦啦"); // 要查找的文本
s = vFind.OlePropertyGet("Text"); // 要查找的文本
vFind.OlePropertyGet("Replacement").OlePropertySet("Text", "");
vFind.OlePropertyGet("Replacement").OleFunction("ClearFormatting");
vFind.OlePropertySet("Forward", true);
vFind.OlePropertySet("Wrap", 1); // wdFindContinue
vFind.OlePropertySet("Format", false);
vFind.OlePropertySet("MatchCase", false);
vFind.OlePropertySet("MatchWholeWord", false);
vFind.OlePropertySet("MatchByte", true);
vFind.OlePropertySet("MatchWildcards", false);
vFind.OlePropertySet("MatchSoundsLike", false);
vFind.OlePropertySet("MatchAllWordForms", false);
vFind.OleFunction("Execute", EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,wdReplaceAll);


//之后怎么粘贴到这个位置上呢?
目前已经完成了把需要粘贴的图片拷贝到了粘贴板,然后搜索到这个字符串,但是不知道如何把光标位置移动到字符串处, 如何做,请教高手.
...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
albertlvzhenbin 2011-01-18
  • 打赏
  • 举报
回复
没有高手能帮我解决下吗?
albertlvzhenbin 2011-01-15
  • 打赏
  • 举报
回复
帮助上有:MoveUntil返回一个Range对象或者Selection对象,那为什么

Range.OleProcedure("Paste"); //这句报了一个奇怪的错误

这句会出错呢?
albertlvzhenbin 2011-01-15
  • 打赏
  • 举报
回复
我刚查了下,Paste是Selection和Range的方法啊
ccrun.com 2011-01-15
  • 打赏
  • 举报
回复
Paste应该是Application的方法。
albertlvzhenbin 2011-01-15
  • 打赏
  • 举报
回复
我现在就是这么想的,我已经把当前字符串替换为空了,但是如果要paste的话得首先找到这个位置Selection,这个位置该如何才能获取呢?

我试了一下这个函数
搜索到字符串后,把位置Selection移到字符串处。
Variant Range = Select.OleFunction("MoveUntil",s.c_str()); //这句成功了
Range.OleProcedure("Paste"); //这句报了一个奇怪的错误

这个是怎么回事呢?
ccrun.com 2011-01-14
  • 打赏
  • 举报
回复
你可以考虑换个思路: 用替换功能, 将搜索到的字符串替换为空, 然后Paste一下. 将剪贴板中的图像粘贴出来.

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧