浅谈Word.Application,关于js操作word文档的使用

这篇文章只是说个人放个笔记在这里,并没有讲解的意思,但为了进来的朋友能知道我在说啥,写的过程中我还是简单介绍一下。

官网地址:https://docs.microsoft.com/zh-cn/office/vba/api/word.font.strikethrough

说真的,刚开始我也不知道可以用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;

还有很多语法,我就不一一说明了,直接上代码。因为语法是在太多了,讲不过来,我也只知道一些最基本的。

word.application的使用

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" οnclick="AddField();" value="添加标题域">

<input type="button" οnclick="doEnable();" value="置灰">/*除了标题域*/

<input type="button" οnclick="open1();" value="打开文档1">

<input type="button" οnclick="open2();" value="打开文档2">

<input type="button" οnclick="active1();" value="激活文档1">

<input type="button" οnclick="active2();" value="激活文档2">

<input type="button" οnclick="close1();" value="关闭文档0">

<input type="button" οnclick="close2();" value="关闭文档1">

<br/><br/>

<input type="button" οnclick="save();" value="保存">

<input type="button" οnclick="saveAs();" value="另存为">

<input type="button" οnclick="getPro();" value="获取属性">

<input type="button" οnclick="redo();" value="重新执行撤销的操作">

<input type="button" οnclick="undo();" value="撤销">

<input type="button" οnclick="select1();" value="设置光标位置">

<input type="button" οnclick="select2();" value="选中整个文档">

<input type="button" οnclick="select3();" value="删除选中部分">

<h2>word.Paragraph</h2>

<input type="button" οnclick="par1();" value="为第三段设置12磅段前间距">

<input type="button" οnclick="par2();" value="清除第三段段前间距">

<input type="button" οnclick="par3();" value="获取段落三的属性">

<input type="button" οnclick="par4();" value="选中第三段下一段">

<input type="button" οnclick="par5();" value="选中第三段上一段">

<input type="button" οnclick="par6();" value="设置左缩进和行间距">

<h2>word.Selection</h2>

<input type="button" οnclick="selection1();" value="为第一段加边框">

<input type="button" οnclick="selection2();" value="为所有段落加边框">

<input type="button" οnclick="selection3();" value="为第一个表的第一行加边框">

<input type="button" οnclick="selection2();" value="激活文档2">

<input type="button" οnclick="selection1();" value="关闭文档0">

<input type="button" οnclick="selection2();" value="关闭文档1">

<h2>word.ActiveDocument.Range</h2>

<input type="button" οnclick="range1();" value="前10个字符加粗">

<input type="button" οnclick="range2();" value="改变第二三段变红">

<input type="button" οnclick="range3();" value="文档开始处插入hello">

<input type="button" οnclick="range4();" value="文档末尾插入内容">

<input type="button" οnclick="range5();" value="指定位置插入内容">

<input type="button" οnclick="range6();" value="段落水平对齐方式1左">

<input type="button" οnclick="range7();" value="段落水平对齐方式2中">

<input type="button" οnclick="range8();" value="段落水平对齐方式3右">

<h2>修改文档的某一部分:字符、单词、句子、段落和节</h2>

<input type="button" οnclick="update1();" value="改变前三个单词大小和字体颜色">

<input type="button" οnclick="update2();" value="单词大小写转换0全小写">

<input type="button" οnclick="update21();" value="单词大小写转换1全大写">

<input type="button" οnclick="update22();" value="单词大小写转换2首字母大写">

 

<input type="button" οnclick="update3();" value="为第一节设置下边距">

<input type="button" οnclick="update4();" value="为文档设置行间距">

<h2>获取内容.text</h2>

<input type="button" οnclick="ShowFirstWord();" value="获取第一个单词">

<input type="button" οnclick="getContent();" value="获取第一段的文字内容">

<h2>操作表格</h2>

<input type="button" οnclick="insertTable();" value="插入一个3行4列的表格">

<input type="button" οnclick="fillTable();" value="对表格填充内容">

<input type="button" οnclick="fillTable2();" value="对表格循环填充内容">

<input type="button" οnclick="getTableContent();" value="获取表格内容">

<input type="button" οnclick="deleteTableContent();" value="删除某单元格内容">

<input type="button" οnclick="clearTable();" value="清空表格内容">

<input type="button" οnclick="deleteTable();" value="删除表格">

<input type="button" οnclick="setWidthTable();" value="设置表格宽度">

<input type="button" οnclick="centerTable0();" value="表格对齐0左">

<input type="button" οnclick="centerTable1();" value="表格对齐1中">

<input type="button" οnclick="centerTable2();" value="表格对齐2右">

 

 

 

<script type="text/javascript">

    var word=new ActiveXObject("Word.Application");

    var documents = word.Documents;

    word.visible=true;

   

function AddField(txt, fieldName) {
    var oDocument = word.ActiveDocument;
    var oSelect = word.ActiveDocument.ActiveWindow.Selection;
    var obj = oSelect.FormFields.Add(oSelect.Range, 70);
    obj.Name = GenFieldName(txt);
    obj.Result = txt;
    oDocument.ActiveWindow.setFocus();

    //缓存当前字段
    //FieldMapping.push({ DBColName: fieldName, WordFieldName: obj.Name, WordFieldValue: txt });
    //RefreshSelected();
}

 

 

   function doEnable(){

    word.ActiveDocument.Content.Font.ColorIndex = 8;
    var oDocument = word.ActiveDocument;
    for (var i = 1; i <= oDocument.FormFields.Count; i++) {
        var item = oDocument.FormFields.Item(i);
        item.Range.Font.Color = 10;
    }

   }

 

    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>

  
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值