[WORD操作]如何在word文件中加入多个文本框,并在文本框中输入内容。

3ks 2005-01-21 03:39:27
现在使用vc在word文件已经可以加入多个文本框,但不知道如何在加入的文本框中输入内容。请各位高手指教。
(只能发100分的帖子,解决后再追加100分)

以下是创建文本框的代码:
_Document Doc=App.GetActiveDocument();

CComVariant Anchor((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
Shapes Shape = NULL;
Shape = Doc.GetShapes();

//创建文本框
Shape.AddTextbox(1, (float)30, (float)30, (float)350, (float)23.4, &Anchor);
Shape.AddTextbox(1, (float)30, (float)200, (float)350, (float)23.4, &Anchor);
...全文
1927 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
3ks 2005-01-22
  • 打赏
  • 举报
回复

现在我犯愁的是不知道怎么得到各个文本框的selection。
3ks 2005-01-22
  • 打赏
  • 举报
回复

上面的语句出错的原因是我的word中只有两个文本框,而后面的参数是10,所以出错。

请qrlvls(≌AIR⌒LIKE) (≤和空气一样帅≥√)到这个帖子中,http://community.csdn.net/Expert/topic/3746/3746137.xml?temp=.6222803,补上100分。
3ks 2005-01-22
  • 打赏
  • 举报
回复

现在怎么不能转移帖子了?本来想把帖子转到“扩充话题”加上100分,却找不到转移帖子的功能了。

问题解决,结贴。十分感谢qrlvls(≌AIR⌒LIKE) (≤和空气一样帅≥√)。
3ks 2005-01-22
  • 打赏
  • 举报
回复

qrlvls(≌AIR⌒LIKE) (≤和空气一样帅≥√):
我试了试您写的代码,执行到oShp = oShps.Item(COleVariant(byte(10))); 的时候出现错误,系统提示“不允许进入指定汇编中的索引”,不知道什么原因。

如果您有完整的代码,麻烦发到我的邮箱中。jnxulei@sina.com
qrlvls 2005-01-22
  • 打赏
  • 举报
回复
Shapes oShps;
Shape oShp;
oShps = oDoc.GetShapes();
Selection oSel

oShp = oShps.Item(COleVariant(byte(10)));
oShp.Select(COleVariant(byte(10)));
if (si.nCTxt)
{
oSel=appWord.GetSelection();
oSel.TypeText(si.CenTxt);
}
qrlvls 2005-01-21
  • 打赏
  • 举报
回复
3ks(司马缸--砸光)
谢谢楼上的老大。

不过这个好像不是vc的,语句怎么都这么奇怪呢。能帮忙翻译成vc的吗?!
-------------------------------------------------------
呵呵,是Delphi的代码
其实别的应该看得懂,只不过 Delphi 中 EmptyParam 在 VC 中应该表示为vt类型为 VT_ERROR 的 CVaraint
oyljerry 2005-01-21
  • 打赏
  • 举报
回复
#include "msword9.h"

_Application WordApp; //代表WORD程序
Documents docs; //代表一个WORD程序里的所有文档
_Document doc; //代表一个文档

if(!WordApp.CreateDispatch("Word.Application",NULL))//创建一个新的word程序
{
AfxMessageBox("创建ms_word服务失败");
exit(1);
}
//让用户能够查看自动化的过程
WordApp.SetVisible(true);
//让docs和word程序连接,docs代表word中所有文档
_Application WordApp; //代表WORD程序
Documents docs; //代表一个WORD程序里的所有文档
_Document doc; //代表一个文档

if(!WordApp.CreateDispatch("Word.Application",NULL))//创建一个新的word程序
{
AfxMessageBox("创建ms_word服务失败");
exit(1);
}

//让用户能够查看自动化的过程
WordApp.SetVisible(true);
//让docs和word程序连接,docs代表word中所有文档
docs=WordApp.GetDocuments();
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
//用docs来打开一个文档,并将句柄返回给doc
doc=docs.Add(COleVariant(".\\ox.doc"),covOptional,covOptional,covOptional);

Paragraph paragraph;//用来表示文档中某一段
Paragraphs paragraphs;//用来表示文档中所有段
paragraphs=doc.GetParagraphs();
paragraph=paragraphs.GetFirst();//得到第一段
Range r=paragraph.GetRange();

r.SetText("身高 体重");//用这种方式可以加入文本
kyh1234567 2005-01-21
  • 打赏
  • 举报
回复
Variant V1;
// 设 置 被 编 辑 段 的 内 容、 字 体 大 小、
颜 色 及 是 否 斜 体
V1=((Vactive.OleFunction("Paragraphs")).
OleFunction("Item",i)).OleFunction("Range");
(V1.OleFunction("Font")).OlePropertySet("Italic",true);
(V1.OleFunction("Font")).OlePropertySet("Size",18);
(V1.OleFunction("Font")).OlePropertySet("ColorIndex",6);
(V1.OleFunction("Font")).OlePropertySet("Size",18);
V1.OlePropertySet("Text",Memo1 ->Text);
kyh1234567 2005-01-21
  • 打赏
  • 举报
回复
帮你顶一下!
请大家帮我看看这个简单的问题:
http://community.csdn.net/Expert/topic/3739/3739755.xml?temp=.7837335
koko1998 2005-01-21
  • 打赏
  • 举报
回复
http://www.vckbase.com/code/findcode.asp
koko1998 2005-01-21
  • 打赏
  • 举报
回复
你在vccode (vc知识库)上看看。那里好像有相关联的代码
3ks 2005-01-21
  • 打赏
  • 举报
回复

谢谢楼上的老大。

不过这个好像不是vc的,语句怎么都这么奇怪呢。能帮忙翻译成vc的吗?!
qrlvls 2005-01-21
  • 打赏
  • 举报
回复
msword := msworda.documents.add(tmpfile,false); //加入文档
//添加表格
WordShape := msword.shapes.AddTextBox(Orientation :=1 ,left := 108 ,top :=280 ,width := 200 ,height := 60);
wordshape.line.visible := false;
wordtable := msword.tables.add(Range := wordshape.textFrame.textrange,NumROWS :=3,NumColumns :=2,
DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:=wdAutoFitFixed);

wordtable.cell(1,1).range.text := '第一季度';
wordtable.cell(2,1).range.text := '第二季度';


assignFile(DbFile,extractFilepath(application.ExeName)+'ini\wordinfo.txt');
reset(DbFile);

count := msworda.activedocument.bookmarks.count; //标签数 //确定标签数目
for i := 1 to count do
begin
TempName := msworda.activedocument.bookmarks.it(i).name; //得到标签变量名
msworda.selection.goto(wdGoToBookmark,EmptyParam,EmptyParam,tempname);
//定位到标签
assignFile(DbFile,extractFilepath(application.ExeName)+'ini\wordinfo.txt');
reset(DbFile);

while not eof(DbFile) do
begin
readln(DbFile,namestr);
formulastr := namestr;
posi := pos('=',namestr);
if posi <> 0 then
delete(namestr,posi,length(namestr)-posi +1); //标签名字
delete(formulastr,1,posi); //公式

if namestr = TempName then
begin
msworda.selection.typetext(formulastr);//用值替代标签
continue;
end;
end;
closefile(DbFile);
end;

msworda.visible := true;
qrlvls 2005-01-21
  • 打赏
  • 举报
回复
http://community.csdn.net/expert/FAQ/FAQ_Index.asp?id=201658

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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