这篇文章只是说个人放个笔记在这里,并没有讲解的意思,但为了进来的朋友能知道我在说啥,写的过程中我还是简单介绍一下。
说真的,刚开始我也不知道可以用js操作word文档,所以当我拿到这个任务的时候,内心是抗拒的,因为听都没听说过,现在却要我做,先不说能不能找到相关教程,就算有,一边学一边做也难免会遇到各种问题啊。但工作就是工作,即便不行,硬着头皮也是要上的,就算到后来你会得到这样一个反应————你都做的什么玩意,这能用吗?对于一个做开发的人来说,至少其学习的过程我是享受的。说实话,找文档找得很辛苦,因为网上的用js写的都不直接,理论偏多,没实际操作代码,就连下面说的第一个功能,我都是自己测了好久才测试出来怎么用。
我们都知道,在IE浏览器中,有一个对象叫ActiveXObject,是其他浏览器没有的,其实我们判断是否为IE浏览器的时候,就可以根据有没有这个对象来判断。而如果我们想用js操作WORD,得先有一个对象,这个对象可以通过new ActiveXObject(“Word.Application”)来获取(注意:此处一定要区分大小写),它是专门针对word文档提供的, 获取到的这个对象,有很多属性和方法,通过属性赋值或调用方法的方式,就能实现对word的操作。不过既然是只有IE浏览器才有该对象,当然也就只有IE浏览器可以用了,其他浏览器是不支持的,是不是感觉IE又牛逼了一把。不过要声明一点,IE浏览器的默认设置是不允许自动启用Active的相关控件的,你得把IE浏览器的安全级别重新设置一下。具体操作请看这里http://jingyan.baidu.com/article/6525d4b1611061ac7d2e9402.html,我就懒得自己写了。
好了,现在我们就来正式的开始我们的代码。再次提醒,所有代码只能在IE上运行。
1、打开本地word文档(找了好久,始终没找到新建文档的使用方法,感觉有点遗憾,还望知道的朋友告知一下)
1 2 3 4 |
var word=new ActiveXObject("Word.Application"); vardocuments=word.Documents; word.visible=true; documents.Open("F:\\worktest\\test.doc");//如果指定的文件不存在,则会打开失败 |
你不妨把代码复制到你的页面上,试一下能不能打开(如果不行,记得操作之前点上面给的网址进去,照着设置一下你的浏览器)。我们先来分析一下上面的代码是什么意思。由于我自己也是第一次接触,有些地方说不清楚,也有可能说错。
1 2 |
var word=new ActiveXObject("Word.Application"); word.visible=true; |
运行上面这两句代码,就能打开我们的word编辑软件。
1 |
var documents = word.Documents; |
这一句相当于是拿到word的操作窗口对象。最后
1 |
documents.Open("F:\\worktest\\test.doc");//返回一个Document对象 |
这一句便是打开一个word文档了。如果指定的文件不存在,就会什么也没有,打开失败。
2、关闭打开的文档,这个很简单,没什么说的,无非就是Close,但是里面可以传递一个布尔值,如果你的文档修改过,false表示不保存直接关闭,true表示保存更改并关闭。
1 2 3 |
documents("test.doc").Close(false);//关闭 documents("test.doc").Close(true);//关闭,并保存更改 |
3、保存和另存word文档,其实和上边一样,我们得先获取到word的操作窗口对象,才能实现保存。但有一点需要注意,我们要保存一篇文档,得先知道保存的是哪篇文档。因为你完全有可能同时打开了多个文档。所以我们的实际代码是这样的。(假定我们打开了上面的文档,并做了修改)
1 |
word.ActiveDocument.Save();//word.ActiveDocument指当前激活的文档 |
当然,有保存,就有另存为,实现也很简单,像这样。
1 |
word.ActiveDocument.SaveAs("F:\\worktest\\gc22.doc"); |
指定另存路径的同时,我们可以改变文件名,但用的是SaveAs,不是保存用的Save,要注意区分。
4、激活指定的文档。就像2所说,我们可能同时打开多个文档,但当我们执行保存时,想保存的又不是当前激活的文档,所以我们得先把激活文档切换为我们想要保存的文档,就像下面这样,我们想保存的是test.doc,但当前处于激活状态的是文档1,这时我们就得先激活test.doc,才能用2的命令进行保存,不然保存的就是文档1了。
切换激活文档的语法也很简单,像下面这样就OK了。
1 |
documents("test.doc").Activate;//也可以把名称换为序列号documents(0).Activate; |
还有很多语法,我就不一一说明了,直接上代码。因为语法是在太多了,讲不过来,我也只知道一些最基本的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 |
<input type="button" onclick="open1();" value="打开文档1"> <input type="button" onclick="open2();" value="打开文档2"> <input type="button" onclick="active1();" value="激活文档1"> <input type="button" onclick="active2();" value="激活文档2"> <input type="button" onclick="close1();" value="关闭文档0"> <input type="button" onclick="close2();" value="关闭文档1"> <br/><br/> <input type="button" onclick="save();" value="保存"> <input type="button" onclick="saveAs();" value="另存为"> <input type="button" onclick="getPro();" value="获取属性"> <input type="button" onclick="redo();" value="重新执行撤销的操作"> <input type="button" onclick="undo();" value="撤销"> <input type="button" onclick="select1();" value="设置光标位置"> <input type="button" onclick="select2();" value="选中整个文档"> <input type="button" onclick="select3();" value="删除选中部分"> <h2>word.Paragraph</h2> <input type="button" onclick="par1();" value="为第三段设置12磅段前间距"> <input type="button" onclick="par2();" value="清除第三段段前间距"> <input type="button" onclick="par3();" value="获取段落三的属性"> <input type="button" onclick="par4();" value="选中第三段下一段"> <input type="button" onclick="par5();" value="选中第三段上一段"> <input type="button" onclick="par6();" value="设置左缩进和行间距"> <h2>word.Selection</h2> <input type="button" onclick="selection1();" value="为第一段加边框"> <input type="button" onclick="selection2();" value="为所有段落加边框"> <input type="button" onclick="selection3();" value="为第一个表的第一行加边框"> <input type="button" onclick="selection2();" value="激活文档2"> <input type="button" onclick="selection1();" value="关闭文档0"> <input type="button" onclick="selection2();" value="关闭文档1"> <h2>word.ActiveDocument.Range</h2> <input type="button" onclick="range1();" value="前10个字符加粗"> <input type="button" onclick="range2();" value="改变第二三段变红"> <input type="button" onclick="range3();" value="文档开始处插入hello"> <input type="button" onclick="range4();" value="文档末尾插入内容"> <input type="button" onclick="range5();" value="指定位置插入内容"> <input type="button" onclick="range6();" value="段落水平对齐方式1左"> <input type="button" onclick="range7();" value="段落水平对齐方式2中"> <input type="button" onclick="range8();" value="段落水平对齐方式3右"> <h2>修改文档的某一部分:字符、单词、句子、段落和节</h2> <input type="button" onclick="update1();" value="改变前三个单词大小和字体颜色"> <input type="button" onclick="update2();" value="单词大小写转换0全小写"> <input type="button" onclick="update21();" value="单词大小写转换1全大写"> <input type="button" onclick="update22();" value="单词大小写转换2首字母大写"> <input type="button" onclick="update3();" value="为第一节设置下边距"> <input type="button" onclick="update4();" value="为文档设置行间距"> <h2>获取内容.text</h2> <input type="button" onclick="ShowFirstWord();" value="获取第一个单词"> <input type="button" onclick="getContent();" value="获取第一段的文字内容"> <h2>操作表格</h2> <input type="button" onclick="insertTable();" value="插入一个3行4列的表格"> <input type="button" onclick="fillTable();" value="对表格填充内容"> <input type="button" onclick="fillTable2();" value="对表格循环填充内容"> <input type="button" onclick="getTableContent();" value="获取表格内容"> <input type="button" onclick="deleteTableContent();" value="删除某单元格内容"> <input type="button" onclick="clearTable();" value="清空表格内容"> <input type="button" onclick="deleteTable();" value="删除表格"> <input type="button" onclick="setWidthTable();" value="设置表格宽度"> <input type="button" onclick="centerTable0();" value="表格对齐0左"> <input type="button" onclick="centerTable1();" value="表格对齐1中"> <input type="button" onclick="centerTable2();" value="表格对齐2右"> <script type="text/javascript"> var word=new ActiveXObject("Word.Application"); var documents = word.Documents; word.visible=true; function insertTable(){ var docActive = word.ActiveDocument; var range = docActive.Paragraphs(3).Range; //range.InsertAfter("\n"); //word.ActiveDocument.Tables.Add(range,3,4);//在第三段之前 word.ActiveDocument.Tables.Add(docActive.Range(range.End,range.End),3,4);//在第三段之后 //var tblNew = docActive.Tables.Add(docActive.Range(0, 0), 3,4);//在文档开始处 //var myTable0=word.ActiveDocument.Tables.Add(word.Selection.Range,3,4);//在文档开始处 } function fillTable(){ //获取第一个表格 var myTable0=word.ActiveDocument.Tables(1); myTable0.cell(1,1).Range.Text="请假人"; myTable0.cell(1,2).Range.Text="张三"; myTable0.cell(1,3).Range.Text="请假时间"; myTable0.cell(1,4).Range.Text="2006-2-10"; myTable0.cell(2,1).Range.Text="工号"; myTable0.cell(2,2).Range.Text="32412"; myTable0.cell(2,3).Range.Text="填表时间"; myTable0.cell(2,4).Range.Text="2006-2-9"; myTable0.cell(3,1).Range.Text="请假原因"; myTable0.cell(3,2).Range.Text="感冒"; myTable0.cell(3,3).Range.Text="处理方式"; myTable0.cell(3,4).Range.Text="病假"; } function fillTable2(){ var myTable0=word.ActiveDocument.Tables(1), //获取表格的行和列 row = myTable0.Rows.Count, col = myTable0.Columns.Count, q = 1; for(var i = 1;i<=row;i++){ for(var j = 1;j<=col;j++){ myTable0.cell(i,j).Range.InsertAfter(i+"="+j+"="+q); q++; } } } function getTableContent(){ var myTable0=word.ActiveDocument.Tables(1), row = myTable0.Rows.Count, col = myTable0.Columns.Count,arr = []; //alert(myTable0.cell(1,1).Range.Text);//这样得到的文本包含了表格的结束单元格标记 for(var i = 1;i<=row;i++){ for(var j = 1;j<=col;j++){ var cell = myTable0.cell(i,j); //alert(word.ActiveDocument.Range(cell.Range.Start, cell.Range.End - 1)); arr.push(word.ActiveDocument.Range(cell.Range.Start, cell.Range.End - 1).Text); } } alert(arr); } function deleteTableContent(){ var myTable0=word.ActiveDocument.Tables(1); //删除单元格内容 myTable0.cell(1,1).Range.Delete; /* //选定表格 myTable0.Select; myTable0.Rows(i).Select; myTable0.Columns(i).Select; */ } function clearTable(){ var myTable0=word.ActiveDocument.Tables(1); //清空表格内容 myTable0.Range.Delete; } function deleteTable(){ var myTable0=word.ActiveDocument.Tables(1); //删除表格 myTable0.Delete; //ActiveDocument.Tables(1).Delete; } function centerTable0(){ var myTable0=word.ActiveDocument.Tables(1); myTable0.Range.Rows.Alignment = 0;//水平对齐方式 } function centerTable1(){ var myTable0=word.ActiveDocument.Tables(1); myTable0.Range.Rows.Alignment = 1;//水平对齐方式 } function centerTable2(){ var myTable0=word.ActiveDocument.Tables(1); myTable0.Range.Rows.Alignment = 2;//水平对齐方式 } function setWidthTable(){ var myTable0=word.ActiveDocument.Tables(1); myTable0.PreferredWidth = 300;// //myTable0.Range.Rows.Add; //myTable0.Range.Columns.Add; //ActiveDocument.Rows(1).Cells(10).Width = 31 //ActiveDocument.Rows(2).Cells(10).Width = 31 //ActiveDocument.Rows(3).Cells(10).Width = 31 } /* myTable0.Columns(i + 1).PreferredWidthType = wdPreferredWidthPercent; myTable0.Columns(i + 1).PreferredWidth = 30; Columns的PreferredWidthType属性设置表格列宽的形式,这里选择的是百分比列宽, 可以根据自己的实际情况选择其他列宽形式,然后再设置相应的数值。 */ /* expression.Open(FileName, ConfirmConversions, ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate, Revert, WritePasswordDocument, WritePasswordTemplate, Format, Encoding, Visible, OpenConflictDocument, OpenAndRepair, DocumentDirection, NoEncodingDialog) FileName Variant 类型,必需。文档名(可包含路径)。 ConfirmConversions Variant 类型,可选。该属性为 True 时,如果文件不是 Microsoft Word 格式,则显示“文件转换”对话框。 ReadOnly Variant 类型,可选。如果为 True,则以只读方式打开文档。注意 本参数不会覆盖保存的文档的只读建议设置。例如,如果文档在启用只读建议设置情况下保存,将 ReadOnly参数设为 False,也不会导致以可读写方式打开文件。 AddToRecentFiles Variant 类型,可选。如果为 True,则会将文件名添加至“文件”菜单底部的最近使用过的文件列表中。 PasswordDocument Variant 类型,可选。打开此文档时所需的密码。 PasswordTemplate Variant 类型,可选。打开此模板时所需的密码。 Revert Variant 类型,可选。当 FileName 是一个已打开的文档的文件名时,控制相应的操作。如果为 True,则放弃对已打开文档进行的所有尚未保存的改动,并将重新打开该文档。如果为 False,则激活已打开的文档。 WritePasswordDocument Variant 类型,可选。保存对文档进行的更改时所需的密码。 WritePasswordTemplate Variant 类型,可选。保存对模板进行的更改时所需的密码。 Format Variant 类型,可选。打开文档时使用的文件转换器。 */ function create(){ var word=new ActiveXObject("Word.Application"); word.visible=true; // var documents = word.Documents; // documents.Create("test.doc"); } function open1(){ documents.Open("F:\\worktest\\test.doc");//返回一个Document对象 } function open2(){ documents.Open("F:\\worktest\\test2.doc"); } function active1(){ documents("test.doc").Activate;//也可以把名称换为序列号documents(1).Activate; } function active2(){ documents("test2.doc").Activate; } function saveAs(){ word.ActiveDocument.SaveAs("F:\\worktest\\gc22.doc"); } function save(){ word.ActiveDocument.Save(); } function close1(){ documents("test.doc").Close(false);//关闭 } function close2(){ documents("test.doc").Close(true);//关闭,并保存更改 } function getPro(){ alert(documents("test.doc").Path);//获取文档路径 alert(documents("test.doc").Saved);//看文档是否保存 //console.log(documents("test.doc").Application); /* Type'返回文档的类型(模板或文档)。只读 WdDocumentType 类型。 Windows'返回一个 Windows 集合,该集合代表指定文档的所有窗口。只读。 WordOpenXML'返回一个 String 类型的值,该值代表文档的 Word Open XML 内容的 Flat XML 格式。只读。 Words'返回一个 Words 集合,该集合代表文档中的所有字词。只读。 Tables'返回一个 Table 集合,该集合代表指定文档中的所有表格。只读。 Scripts'返回一个 Scripts 集合,该集合代表指定对象中的 HTML 脚本的集合。 Sections'返回一个 Section 集合,该集合代表指定文档中的节。只读。 Sentences'返回一个 Sentences 集合,该集合代表文档中的所有句子。只读。 Content'返回一个 Range 对象,该对象代表主文档文字部分。只读。 Bookmarks'返回一个 Bookmarks 集合,该集合代表文档中的所有书签。只读。 BuiltInDocumentProperties'返回一个 DocumentProperties 集合,该集合代表指定文档的所有内置的文档属性。 Characters'返回一个 Characters 集合,该集合代表文档中的字符。只读。 */ //重复最后一次撤消的操作(Undo 方法的逆操作)。如果重复操作成功,则返回 True。 //documents("test.doc").Redo; //Range'通过使用指定的开始和结束字符位置返回一个 Range 对象。 documents("test.doc").Range(1,5).Font.Size=20; //撤消最后一次操作或最后一系列操作,这些操作显示在“撤消”列表中。如果撤消操作成功,则返回 True。 //documents("test.doc").Undo; //Select'选择指定文档的内容。 //documents("test.doc").Select; } function undo(){ word.ActiveDocument.Undo; } function redo(){ word.ActiveDocument.Redo; } function select1(){ word.Selection.SetRange(0,0); } function select2(){ word.Selection.WholeStory; } function select3(){ word.Selection.TypeBackspace; } function getContent(){ console.log(word.ActiveDocument.Paragraphs(1).Range.Text); } /* Paragraph 对象'代表所选内容、范围或文档中的一个段落。Paragraph 对象是 Paragraphs 集合的一个成员。 Paragraphs 集合包含所选内容、范围或文档中的所有段落。 */ function par1(){ var paragraph = word.ActiveDocument.Paragraphs; //为指定段落设置 12 磅的段前间距。 paragraph(3).OpenUp; } function par2(){ //清除指定段落前的任何间距。 word.ActiveDocument.Paragraphs(3).CloseUp; } function par3(){ //Border'返回一个 Borders 集合,该集合代表指定段落的所有边框。 //CharacterUnitFirstLineIndent'返回或设置首行或悬挂缩进的值(以字符为单位)。用正值设置首行缩进,用负值设置悬挂缩进。Single 类型,可读写。 //CharacterUnitLeftIndent'该属性返回或设置指定段落的左缩进量(以字符为单位)。Single 类型,可读写。 //Format'返回或设置一个 ParagraphFormat 对象,该对象代表指定的一个或多个段落的格式。 //RightIndent'返回或设置指定段落的右缩进(以磅为单位)。可读写 Single 类型。 //Shading'返回一个 Shading 对象,该对象引用指定段落的底纹格式。 //SpaceAfter'返回或设置指定段落或文本栏后面的间距(以磅为单位)。可读/写 Single 类型。 //SpaceAfterAuto'如果 Microsoft Word 自动设置指定段落的段后间距,则该属性为 True。可读/写 Long 类型。 //SpaceBefore'返回或设置指定段落的段前间距(以磅为单位)。可读/写 Single 类型。 //SpaceBeforeAuto'如果 Microsoft Word 自动设置指定段落的段前间距,则该属性为 True。可读/写 Long 类型。 //Style'返回或设置指定对象的样式。可读写 Variant 类型。 alert(word.ActiveDocument.Paragraphs(3).Border);//undefined alert(word.ActiveDocument.Paragraphs(3).SpaceBefore); alert("首行缩进"+word.ActiveDocument.Paragraphs(3).CharacterUnitFirstLineIndent); alert(word.ActiveDocument.Paragraphs(3).ParagraphFormat);//undefined alert("右缩进"+word.ActiveDocument.Paragraphs(3).RightIndent);//0 alert(word.ActiveDocument.Paragraphs(3).Style);//正文 } function par4(){ //选中下一段 word.ActiveDocument.Paragraphs(3).Next.Range.Select; } function par5(){ //选中上一段 word.ActiveDocument.Paragraphs(3).Previous.Range.Select; } function par6(){ //LeftIndent'返回或设置一个 Single 类型的值,该值代表指定段落的左缩进值(以磅为单位)。可读写。 //LineSpacing'返回或设置指定段落的行距(以磅为单位)。Single 类型,可读写。 word.ActiveDocument.Paragraphs(3).LeftIndent = 0; word.ActiveDocument.Paragraphs(3).LineSpacing = 5; alert(word.ActiveDocument.Paragraphs(3).LeftIndent); alert(word.ActiveDocument.Paragraphs(3).LineSpacing); } /* 要引用活动的段落、表格、域或其他文档元素,可使用Selection属性返回一个Selection对象。 通过 Selection对象,可访问选定内容中的所有段落或某一段。 注意selection只有在有文档打开的时候才能获取 */ function selection1(){ //第一段加边框 var selection = word.Selection; selection.Paragraphs(1).Borders.Enable = true; } function selection2(){ //所有段落加边框,针对选中的段落,没选中段落时无效 var selection = word.Selection; selection.Paragraphs.Borders.Enable = true; } function selection3(){ var selection = word.Selection; //将底纹应用于选定内容中第一张表格的首行,如果选定的内容不包含表格,将导致出错。 //可使用Count属性判定选定内容中是否包含表格 if(selection.Tables.Count >= 1){ selection.Tables(1).Rows(1).Shading.Texture = true; //For Each tblTable In Selection.Tables //tblTable.Rows(1).Shading.Texture = wdTexture30Percent }else{ console.log("Selection doesn't include a table"); } } /* Range对象引用文档中的某一连续区域。每个 Range对象都是通过开始和结束字符位置来定义的。 类似于在文档中使用书签的方法,在 Visual Basic 过程中使用 Range对象可以定义文档中指定的部分。 Range对象可以小至一个插入点,或大至包含整篇文档。但是与书签不同,Range对象只在定义该对象的过程运行时才存在。 Start、End 和StoryType属性唯一地标识一个 Range对象。 Start 和 End属性返回或设置 Range对象的开始和结束字符的位置。文档开始处的字符位置为 0, 第一个字符后的位置为 1,以此类推。StoryType属性的 WdStoryType 常量可以代表 11 种不同的文字部分类型。 注意 Range对象与所选内容无关。也就是说,可以定义和修改某区域而不改变当前的所选内容。也可在文档中定义多个区域,而每个文档窗格中只有一处所选内容。 */ function range1(){ //对活动文档中的前 10 个字符应用加粗格式 var rngDoc = word.ActiveDocument.Range(0,10); rngDoc.Bold = true; //如果不需要缓存选区,可以直接word.ActiveDocument.Range(0,10).Bold = true; } function range2(){ //创建一个 Range对象,该对象从第二段开头开始,至第三段末尾后结束。 var doc = word.ActiveDocument; var rngDoc = doc.Range(doc.Paragraphs(2).Range.Start, doc.Paragraphs(3).Range.End); rngDoc.Font.Color = word.wdColorYellow; rngDoc.Font.Size = 12; } function range3(){ //Range对象的开始和结束位置相同,则该区域不包含任何文字。 //下列示例在活动文档的开头插入文字。 var rngDoc = word.ActiveDocument.Range(0, 0); rngDoc.InsertBefore("Hello"); } function range4(){ //使用InsertAfter 或InsertBefore方法在Selection 或Range对象之前或之后插入文字 word.ActiveDocument.Content.InsertAfter("The end."); } function range5(){ var doc = word.ActiveDocument; //获取某一范围 var rngDoc = doc.Paragraphs(2).Range; //用SetRange方法重新定义range的范围 rngDoc.SetRange(rngDoc.Start, rngDoc.Start + 20); rngDoc.InsertAfter("【我是插入到第二段的第二十个字符之后的内容】"); } //有多种对象具有 Range属性,例如Paragraph、Bookmark 和Cell,并且该属性用于返回 Range对象。 function range6(){ //返回一个 Range对象,该对象引用活动文档中的第一个段落。 var Paragraph = word.ActiveDocument.Paragraphs(1).Range; //选定活动文档中的第二个段落并将所选内容居中。 word.ActiveDocument.Paragraphs(2).Range.Select; word.Selection.ParagraphFormat.Alignment = 0;//左 } function range7(){ word.Selection.ParagraphFormat.Alignment = 1;//中 } function range8(){ word.Selection.ParagraphFormat.Alignment = 2;//右 } /* Visual Basic 包含一些对象,可用这些对象修改下列文档元素:字符、单词、句子、段落和节。 下面列出与这些文档元素相对应的属性和这些属性返回的对象。 表达式 返回的对象 Words(index) Range Characters(index) Range Sentences(index) Range Paragraphs(index) Paragraph Sections(index) Section 如果使用这些属性时不带索引序号,则返回一个具有相同名称的集合对象。 例如,Paragraphs属性返回Paragraphs集合对象。 但是如果通过索引序号识别集合中的一项,则返回上表中第二列中的对象。 例如,Words(1) 返回一个 Range对象。 有了一个 Range对象之后,可以使用任何区域属性或方法修改该Range对象。 例如,下列指令将所选内容的第一个单词复制到“剪贴板”。 Selection.Words(1).Copy 例如,下列指令将活动文档的第一段复制到“剪贴板”。 ActiveDocument.Paragraphs(1).Range.Copy 上述表格中的所有文档元素属性对 Document、Selection 和 Range对象都可用。 */ //下列示例阐明了如何使用Document、Selection 和 Range对象的这些属性。 function update1(){ //创建一个引用活动文档中前三个单词的 Range对象 (myRange)。 var docActive = word.ActiveDocument; var rngThreeWords = docActive.Range(docActive.Words(1).Start,docActive.Words(3).End); rngThreeWords.Font.Size = 5; rngThreeWords.Font.Color = 255; } function update2(){ //设置活动文档中第一个单词的大小写。 word.ActiveDocument.Words(1).Case = 0;//全小写 } function update21(){ word.ActiveDocument.Words(1).Case = 1;//1全大写 } function update22(){ word.ActiveDocument.Words(1).Case = 2;//首字母大写 } function update3(){ //将当前节的下边距设为 0.5 英寸。 word.Selection.Sections(1).PageSetup.BottomMargin = word.InchesToPoints(0.5); } function update4(){ //将活动文档的字符间距设为两倍(Content属性返回一个 Range对象)。 word.ActiveDocument.Content.ParagraphFormat.Space2; } function ShowFirstWord(){ var strFirstWord = word.ActiveDocument.Words(1).Text; console.log(strFirstWord); } </script> |
发表评论