【Word VBA】批量插入图片到表格

房地一体项目需要的房屋照片表格

【Word VBA】批量插入图片到表格

 

 

Sub MainSub()
    Dim fso, path, fld, file, wd As Object
    Dim fd As FileDialog
    Dim i  As Integer
    Dim docName As String
    Dim thisDocPath As String
    
    thisDocPath = ThisDocument.FullName  '.path + "\" + ThisDocument.Name
    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    If fd.Show = -1 Then
        Set fso = New FileSystemObject
        Set path = fso.GetFolder(fd.SelectedItems(1))
        For Each fld In path.SubFolders
            i = 0
            docName = fld.Name
            Call FillSurveyDate
            ' fill text
            Call FillFamilyHost(docName)
            'delete pictures
            Call DeletePics
            For Each file In fld.Files
               i = i + 1
               'insert pictures
               Call InsertPics(i, file.path)
            Next
            'save as docx
            Call SaveAsDocx(path + "\" + docName + ".docx")
        Next
    End If
    Set wd = ActiveDocument
    Application.Documents.Open thisDocPath
    wd.Close True
End Sub
Sub FillFamilyHost(str As String)
    Dim regEx As Object
    Set regEx = CreateObject("vbscript.regexp")
    With regEx
        .Global = 1
        .Pattern = "[\x01-\x7f]+"
        ThisDocument.Tables(1).Cell(2, 2).Range = .Replace(str, "")
    End With
    Set regEx = Nothing
End Sub
Sub FillSurveyDate()
 With Content.Find
    .Text = "<日期>"
    .Replacement.Text = "日期:" + Replace(Split(ThisDocument.Paragraphs(2).Range, ":")(1), Chr(13), "")
    .Execute Replace:=wdReplaceAll, Forward:=True, Wrap:=wdFindContinue
End With
End Sub
Sub DeletePics()
    Dim shp As Object
    For Each shp In ThisDocument.InlineShapes
        shp.Delete
    Next
End Sub
Sub InsertPics(index As Integer, picPath As String)
    With ThisDocument.Tables(1)
         Select Case index
                Case 1:
                    .Cell(4, 1).Range.InlineShapes.AddPicture FileName:=picPath
                Case 2:
                    .Cell(4, 2).Range.InlineShapes.AddPicture FileName:=picPath
                Case 3:
                    .Cell(5, 1).Range.InlineShapes.AddPicture FileName:=picPath
                Case 4:
                    .Cell(5, 2).Range.InlineShapes.AddPicture FileName:=picPath
          End Select
    End With
End Sub
Sub SaveAsDocx(path As String)
        ActiveDocument.SaveAs2 FileName:=path, FileFormat:= _
        wdFormatXMLDocument, CompatibilityMode:=15
End Sub

 

上一篇:《SeleniumBasic 3.141.0.0 - 在VBA中操作浏览器》高级技术之十二:自动选择文件并上传


下一篇:《SeleniumBasic 3.141.0.0 - 在VBA中操作浏览器》异常对应之一:Windows Defender要重置您的设置