首页 > 解决方案 > VBScript 以文件名作为标题将图像导入单词

问题描述

我正在将大量结果图(png 或 jpg 图像)导入 word,并且需要将其自动化以加快我的工作。我已设法导入图像,但无法弄清楚如何使用文件名(或如图所示的硬代码)作为图形文本制作图形标题。

'-------------CODE-----------------------------

Set objWord = CreateObject("Word.Application")
objWord.Visible = True
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

Set objShape = objDoc.Shapes

objSelection.InlineShapes.AddPicture ("C:\Plots\Plot1.PNG")
objShape.InsertCaption Label:="Figure", _  Title:=": Plot1", Position:=wdCaptionPositionBelow
  objSelection.insertbreak

objSelection.InlineShapes.AddPicture ("C:\Plots\Plot2.PNG")
objShape.InsertCaption Label:="Figure", _  Title:=": Plot2", Position:=wdCaptionPositionBelow
  objSelection.insertbreak

objSelection.InlineShapes.AddPicture ("C:\Plots\Plot3.PNG")
objShape.InsertCaption Label:="Figure", _  Title:=": Plot3", Position:=wdCaptionPositionBelow
  objSelection.insertbreak

objSelection.InlineShapes.AddPicture ("C:\Plots\Plot4.PNG")
objShape.InsertCaption Label:="Figure", _  Title:=": Plot4", Position:=wdCaptionPositionBelow
  objSelection.insertbreak

'----------END-OF-CODE-----------------------

标签: imageimportvbscriptms-wordcaption

解决方案


我终于设法制作了一个循环遍历所有 PNG 文件的脚本,并将它们与标题和行间距一起导入,最后将其保存到一个新的 word 文件中。

' Script to read PNG files into a word document
' the PNG files and script need to be in the same folder

Set objWord = CreateObject("Word.Application")
objWord.Visible = False
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection

' Folder to process
strFolder = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)

Set objFSO = CreateObject("Scripting.FileSystemObject")

' Access the folder to process
Set objFolder = objFSO.GetFolder(strFolder)

For Each objFile In objFolder.Files

    ' Only import PNG files
    If LCase(objFSO.GetExtensionName(objFile)) = LCase("PNG") Then

       objSelection.InlineShapes.AddPicture (objFile.Path)
       objSelection.TypeText (vbCrLf)   
       objselection.InsertCaption "Figure", vbTab & objFSO.GetBaseName(objFile) , "", wdCaptionPositionBelow
       objSelection.TypeText (vbCrLf)   
       objSelection.TypeText (vbCrLf)   

    Else
    '  Wscript.Echo "No PNG files in """ & objFile.Path & """"
    End If

Next

DOCXFilePath = objFSO.BuildPath(objFolder, "Plots.docx")
objDoc.SaveAs(DOCXFilePath)
objWord.Quit

推荐阅读