我正在创建包含大量图像(50+图像)的多个报告。我需要以特定的顺序插入它们。我有一个正在运行的脚本,它打开一个对话框,我可以选择我想要的照片,但当我按下OK时,它会按字母顺序插入图像。我希望按照我从对话框中选择它们的顺序插入它们。
我尝试在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文档中
发布于 2019-05-13 22:45:09
这里的问题是,FileDialog文件选取器总是会返回一个collection of selected items,该are按照它们在FileDialog中出现的顺序进行排序(例如,按文件名的字母顺序)。它没有一种方法来保留用户为获得最终选择列表而采取的特定操作。
为了解决这个问题,您需要构建自己的组合框函数,该函数在用户每次从列表中选择一个项目时将项目添加到集合中。这将保留用户选择的顺序,并使您能够执行所需的操作。
https://stackoverflow.com/questions/56114403
复制相似问题