Есть ли способ использовать VBA для вставки нескольких изображений и вставки их в порядке выбора через диалоговое окно? - PullRequest
1 голос
/ 13 мая 2019

Я создаю несколько отчетов с кучей изображений (более 50 изображений). Мне нужно вставить их в определенном порядке. У меня есть запущенный скрипт, который открывает диалоговое окно, и я могу выбрать фотографии, которые я хочу, но когда я нажимаю ОК, он вставляет изображения в алфавитном порядке. Я хочу, чтобы они были вставлены в том порядке, в котором я выбираю их в диалоговом окне.

Я пытался найти методы, относящиеся к методам вставки в VBA. Ничего?

Sub InsertSelectedPixs()
Dim fd As FileDialog
Dim picPath As String
Dim fnd As Variant
Dim rep As Variant

Set fd = Application.FileDialog(msoFileDialogFilePicker)

Dim vrtSelectedItem As Variant

With fd
.InitialFileName = "*"
.AllowMultiSelect = True
.Filters.Clear
.Filters.Add "Images", "*.png; *.jpg; *.jpeg; *.tif"

If .Show = -1 Then

For Each vrtSelectedItem In .SelectedItems
Set MyPic = ActiveDocument.InlineShapes.AddPicture(vrtSelectedItem)
picName = Right(vrtSelectedItem, Len(vrtSelectedItem) - InStrRev(vrtSelectedItem, "\"))

MyPic.Select
MyPic.LockAspectRatio = msoTrue
MyPic.Width = CentimetersToPoints(7.25)
Selection.MoveDown wdLine
Selection.TypeText Chr(11)
Selection.InsertCaption Label:="Figure", Title:=". " & picName, Position:=wdCaptionPositionBelow
Selection.Collapse wdCollapseEnd
Selection.TypeText Chr(10)
Next vrtSelectedItem

Else
End If
End With

Set fd = Nothing

With ActiveDocument.Content.Find
.Execute FindText:=".jpg", ReplaceWith:="", Format:=True, Replace:=wdReplaceAll
End With

ActiveDocument.Range(0, 0).Select
Selection.WholeStory
Dim oRange As Word.Range

If ActiveDocument.Range.Tables.Count <> 0 Then Exit Sub

Set oRange = ActiveDocument.Range

oRange.ConvertToTable Separator:=wdSeparateByParagraphs, Format:=wdTableFormatGrid1, NumColumns:=2

Set oRange = Nothing

End Sub

Изображения импортируются в документ Word в алфавитном порядке, а не в выбранном порядке на экране выбора (диалоговое окно файла)

1 Ответ

1 голос
/ 13 мая 2019

Проблема здесь в том, что средство выбора файлов FileDialog всегда будет возвращать коллекцию выбранных элементов , отсортированных в том порядке, в котором они появились в FileDialog (например, в алфавитном порядке по файлу). название). У него нет метода для сохранения определенных действий, которые пользователь предпринял, чтобы попасть в окончательный список выборов.

Чтобы решить эту проблему, вам необходимо создать собственную функцию со списком, которая добавляла элементы в коллекцию каждый раз, когда пользователь выбирал один из списка. Это сохранит порядок выбора пользователя и позволит вам делать то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...