Hi, I have a task that is tedious. I hope you can help me with automating it. I have an excel sheet ROW A contains info. I also have a folder (which contains the pictures) with same value. Using macro need to match "same/ identical" folder name and insert it to same Word document. Right now, I have to manually pick using Folder Dialog and macro (see the code below):
Sub InsertSpecificNumberOfPictureForEachPage()
Dim strFolder As String
Dim strFile As String
Dim objDoc As Document
Dim dlgFile As FileDialog
Dim objInlineShape As InlineShape
Dim nResponse As Integer
Dim strPictureNumber As Integer
Dim strPictureSize As String
Dim n As Integer
Set dlgFile = Application.FileDialog(msoFileDialogFolderPicker)
With dlgFile
If .Show = -1 Then
strFolder = .SelectedItems(1) & "\"
Else
MsgBox ("No Folder is selected!")
Exit Sub
End If
End With
strFile = Dir(strFolder & "*.*", vbNormal)
strPictureNumber = InputBox("Input the number of the picture for each page", "Picture Number", "For exemple: 1")
n = 1
While strFile <> ""
Selection.InlineShapes.AddPicture FileName:=strFolder & strFile, LinkToFile:=False, SaveWithDocument:=True
Selection.TypeParagraph
Selection.Collapse Direction:=wdCollapsEnd
'Selection.TypeText Text:=Left(strFile, InStrRev(strFile, ".") - 1)
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
If ActiveDocument.InlineShapes.Count = strPictureNumber * n Then
' Selection.InsertNewPage
' Selection.TypeBackspace
n = n + 1
End If
Selection.TypeParagraph
strFile = Dir()
Wend
For Each objInlineShape In ActiveDocument.InlineShapes
objInlineShape.Select
Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next objInlineShape
nResponse = MsgBox("Do you want to resize all pictures?", 4, "Resize Picture")
If nResponse = 6 Then
strPictureSize = InputBox("Input the height and width of the picture, seperated by comma", "Height and Width", "For exemple:500,500")
For Each objInlineShape In ActiveDocument.InlineShapes
objInlineShape.Height = Split(strPictureSize, ",")(0)
objInlineShape.Width = Split(strPictureSize, ",")(1)
Next objInlineShape
End If
End Sub
From above strFolder should be same as cell value (excel sheet col A). Also, please tweak the codes so that the pictures inserted will fit one page regardless of how many. I will do the layout manually. Thanks everyone for the advance help!
Bookmarks