在做一份材料的时候需要将一份清单上的人的身份证照片填入word文档中,考虑到人数较多,就做了下面这个宏来处理。
图片存放在pics目录下,图片后缀为.jpg
导入的图片名称存放在list.txt中,不需要带.jpg
Function CreateTable() As Table Dim docActive As Document Dim celTable As Cell Set docActive = ActiveDocument Set CreateTable = docActive.Tables.Add( _ Range:=docActive.Range(Start:=0, End:=0), NumRows:=1, _ NumColumns:=3) CreateTable.Borders.InsideLineStyle = wdLineStyleSingle CreateTable.Borders.OutsideLineStyle = wdLineStyleSingle CreateTable.Cell(1, 1).Range.Text = "序号" CreateTable.Cell(1, 2).Range.Text = "姓名" CreateTable.Cell(1, 3).Range.Text = "证件" CreateTable.Columns(1).SetWidth ColumnWidth:=40, RulerStyle:=wdAdjustSameWidth CreateTable.Columns(2).SetWidth ColumnWidth:=40, RulerStyle:=wdAdjustSameWidth CreateTable.Columns(3).SetWidth ColumnWidth:=360, RulerStyle:=wdAdjustSameWidth End Function Function IsFileExists(ByVal strFileName As String) As Boolean Dim objFileSystem As Object Set objFileSystem = CreateObject("Scripting.FileSystemObject") If objFileSystem.fileExists(strFileName) = True Then IsFileExists = True Else IsFileExists = False End If End Function Sub InsertOne(tbl As Table, name As String) Dim lastRow Dim line Dim pic Dim picPath Dim w tbl.Rows.Add line = tbl.Rows.Count picPath = "pics\\" & name & ".jpg" tbl.Cell(line, 1).Range.Text = line - 1 tbl.Cell(line, 2).Range.Text = name If IsFileExists(picPath) = True Then Set pic = tbl.Cell(line, 3).Range.InlineShapes.AddPicture(FileName:=picPath, SaveWithDocument:=True) w = pic.Width pic.Width = 340 pic.Height = 340 / w * pic.Height End If End Sub Sub ImportPicture() Dim txt As String Dim tbl As Table ChDir ActiveDocument.Path Set tbl = CreateTable() Open "list.txt" For Input As #1 Do While Not EOF(1) Line Input #1, txt InsertOne tbl, txt Loop Close #1 End Sub