Macro runs in Excel 2007. Upgraded to Excel 2010 at home.
Here is the macro
'Declare a variable as a FileDialog object.
Dim fd As FileDialog
'Create a FileDialog object as a File Picker dialog box.
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'Declare a variable to contain the path
'of each selected item. Even though the path is a String,
'the variable must be a Variant because For Each...Next
'routines only work with Variants and Objects.
Dim vrtSelectedItem As Variant
'Array of photo locations
Dim PhotoLocations As Variant
PhotoLocations = Array("H6")
'Array of comment locations
Dim CommentLocations As Variant
CommentLocations = Array("E6")
'Index of Location Array
Dim Index As Integer
Index = 0
'Use a With...End With block to reference the FileDialog object.
With fd
'Add a filter that includes GIF and JPEG images and make it the first item in the list.
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.bmp", 1
.AllowMultiSelect = True
'Use the Show method to display the File Picker dialog box and return the user's action.
'The user pressed the action button.
If .Show = -1 Then
'Step through each string in the FileDialogSelectedItems collection.
For Each vrtSelectedItem In .SelectedItems
'vrtSelectedItem is a String that contains the path of each selected item.
Range(PhotoLocations(Index)).Select
ActiveSheet.Pictures.Insert(vrtSelectedItem).Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 468
Selection.ShapeRange.Width = 612#
Selection.ShapeRange.Rotation = 0#
Range(CommentLocations(Index)).Value = Left(GetPictureFileName(vrtSelectedItem), Len(GetPictureFileName(vrtSelectedItem)) - 4)
Index = Index + 1
'Exit for loop if the max number of photos are met
If Index = UBound(PhotoLocations) + 1 Then
Exit For
End If
Next vrtSelectedItem
'The user pressed Cancel.
Else
End If
End With
'Set the object variable to Nothing.
Set fd = Nothing
End Sub
Here is the macro
'Declare a variable as a FileDialog object.
Dim fd As FileDialog
'Create a FileDialog object as a File Picker dialog box.
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'Declare a variable to contain the path
'of each selected item. Even though the path is a String,
'the variable must be a Variant because For Each...Next
'routines only work with Variants and Objects.
Dim vrtSelectedItem As Variant
'Array of photo locations
Dim PhotoLocations As Variant
PhotoLocations = Array("H6")
'Array of comment locations
Dim CommentLocations As Variant
CommentLocations = Array("E6")
'Index of Location Array
Dim Index As Integer
Index = 0
'Use a With...End With block to reference the FileDialog object.
With fd
'Add a filter that includes GIF and JPEG images and make it the first item in the list.
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.bmp", 1
.AllowMultiSelect = True
'Use the Show method to display the File Picker dialog box and return the user's action.
'The user pressed the action button.
If .Show = -1 Then
'Step through each string in the FileDialogSelectedItems collection.
For Each vrtSelectedItem In .SelectedItems
'vrtSelectedItem is a String that contains the path of each selected item.
Range(PhotoLocations(Index)).Select
ActiveSheet.Pictures.Insert(vrtSelectedItem).Select
Selection.ShapeRange.LockAspectRatio = msoFalse
Selection.ShapeRange.Height = 468
Selection.ShapeRange.Width = 612#
Selection.ShapeRange.Rotation = 0#
Range(CommentLocations(Index)).Value = Left(GetPictureFileName(vrtSelectedItem), Len(GetPictureFileName(vrtSelectedItem)) - 4)
Index = Index + 1
'Exit for loop if the max number of photos are met
If Index = UBound(PhotoLocations) + 1 Then
Exit For
End If
Next vrtSelectedItem
'The user pressed Cancel.
Else
End If
End With
'Set the object variable to Nothing.
Set fd = Nothing
End Sub