插入标题词 vba 2010
insert caption word vba 2010
我在 Word 2013 中制作了一个简单的 VBA 宏,一切正常。
当我尝试在 Word 2010 中 运行 它时,它退出并显示 run-time 错误号。 4198.
在MS Word 2013中插入多张图片的工作代码如下:
Sub AddPics()
Application.ScreenUpdating = False
Dim oTbl As Table, i As Long, j As Long, k As Long, StrTxt As String
Dim MarginLeft As Long, MarginRight As Long, TopDist As Long, BottomDist As Long
Dim NCols As Long, NRows As Long, TotalRows As Long
'Number of Columns and Rows of Pictures per page, total number of Rows in the table
Dim CaptionHeight As Long
NCols = 1
NRows = 2
CaptionHeight = CentimetersToPoints(0.7)
'Select and insert the Pics
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select image files and click OK"
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.bmp; *.tif; *.png"
.FilterIndex = 2
If .Show = -1 Then
'Add a 'Picture' caption label
CaptionLabels.Add Name:="Photograph"
'Add a 1-row by N-column table with adjusted columns to take the images
TotalRows = Round(.SelectedItems.Count / NCols) * 2
Set oTbl = Selection.Tables.Add(Selection.Range, TotalRows, NCols)
For i = 1 To TotalRows
With oTbl.Rows(i)
If ((i Mod 2) = 1) Then
.Height = (ActiveDocument.PageSetup.PageHeight - ActiveDocument.PageSetup.TopMargin - ActiveDocument.PageSetup.BottomMargin - NRows * CaptionHeight) / NRows
.HeightRule = wdRowHeightExactly
Else
.Height = CaptionHeight
.HeightRule = wdRowHeightExactly
End If
End With
Next i
'This loop has created a table
i = 1
For k = 1 To .SelectedItems.Count
'Insert the Picture
ActiveDocument.InlineShapes.AddPicture FileName:=.SelectedItems(k), _
LinkToFile:=False, SaveWithDocument:=True, _
Range:=oTbl.Cell(i, NCols - (k Mod NCols)).Range.Characters.First
'Get the Image name for the Caption
StrTxt = Split(.SelectedItems(k), "\")(UBound(Split(.SelectedItems(k), "\")))
StrTxt = ": " & Split(StrTxt, ".")(0)
**'Insert the Caption in the cell below the picture
With oTbl.Rows(i + 1).Cells(NCols - (k Mod NCols)).Range
.InsertBefore vbCr
.Characters.First.InsertCaption _
Label:="Picture", Title:=StrTxt, _
Position:=wdCaptionPositionBelow, ExcludeLabel:=False
.Characters.First = vbNullString
.Characters.Last.Previous = vbNullString
End With**
'Jump along the rows
If k Mod NCols = 0 Then
i = i + 2
End If
Next k
For Each oCell In oTbl.Range.Cells
oCell.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next oCell
Else
End If
End With
Application.ScreenUpdating = True
结束子
位,未能运行:
'Insert the Caption in the cell below the picture
With oTbl.Rows(i + 1).Cells(NCols - (k Mod NCols)).Range
.InsertBefore vbCr
.Characters.First.InsertCaption _
Label:="Picture", Title:=StrTxt, _
Position:=wdCaptionPositionBelow, ExcludeLabel:=False
.Characters.First = vbNullString
.Characters.Last.Previous = vbNullString
End With
你能告诉我这里有什么问题吗?
我怀疑 InsertCaption 方法在 MS Word 2010 中无法正常工作;但是,我找不到任何相关文档。
我认为,问题在于您在代码的开头创建了标题标签 "Photograph",但在您实际插入标题的部分中使用了标签 "Picture"。 (顺便说一下,这也是创建标签的评论中的内容...)
在 Word 2013 中,名为 "Picture" 的标题可能已经存在,这就是为什么您在 2013 年看不到错误的原因。显然,它在 2010 年不存在,因此出现错误。
我在 Word 2013 中制作了一个简单的 VBA 宏,一切正常。 当我尝试在 Word 2010 中 运行 它时,它退出并显示 run-time 错误号。 4198.
在MS Word 2013中插入多张图片的工作代码如下:
Sub AddPics()
Application.ScreenUpdating = False
Dim oTbl As Table, i As Long, j As Long, k As Long, StrTxt As String
Dim MarginLeft As Long, MarginRight As Long, TopDist As Long, BottomDist As Long
Dim NCols As Long, NRows As Long, TotalRows As Long
'Number of Columns and Rows of Pictures per page, total number of Rows in the table
Dim CaptionHeight As Long
NCols = 1
NRows = 2
CaptionHeight = CentimetersToPoints(0.7)
'Select and insert the Pics
With Application.FileDialog(msoFileDialogFilePicker)
.Title = "Select image files and click OK"
.Filters.Add "Images", "*.gif; *.jpg; *.jpeg; *.bmp; *.tif; *.png"
.FilterIndex = 2
If .Show = -1 Then
'Add a 'Picture' caption label
CaptionLabels.Add Name:="Photograph"
'Add a 1-row by N-column table with adjusted columns to take the images
TotalRows = Round(.SelectedItems.Count / NCols) * 2
Set oTbl = Selection.Tables.Add(Selection.Range, TotalRows, NCols)
For i = 1 To TotalRows
With oTbl.Rows(i)
If ((i Mod 2) = 1) Then
.Height = (ActiveDocument.PageSetup.PageHeight - ActiveDocument.PageSetup.TopMargin - ActiveDocument.PageSetup.BottomMargin - NRows * CaptionHeight) / NRows
.HeightRule = wdRowHeightExactly
Else
.Height = CaptionHeight
.HeightRule = wdRowHeightExactly
End If
End With
Next i
'This loop has created a table
i = 1
For k = 1 To .SelectedItems.Count
'Insert the Picture
ActiveDocument.InlineShapes.AddPicture FileName:=.SelectedItems(k), _
LinkToFile:=False, SaveWithDocument:=True, _
Range:=oTbl.Cell(i, NCols - (k Mod NCols)).Range.Characters.First
'Get the Image name for the Caption
StrTxt = Split(.SelectedItems(k), "\")(UBound(Split(.SelectedItems(k), "\")))
StrTxt = ": " & Split(StrTxt, ".")(0)
**'Insert the Caption in the cell below the picture
With oTbl.Rows(i + 1).Cells(NCols - (k Mod NCols)).Range
.InsertBefore vbCr
.Characters.First.InsertCaption _
Label:="Picture", Title:=StrTxt, _
Position:=wdCaptionPositionBelow, ExcludeLabel:=False
.Characters.First = vbNullString
.Characters.Last.Previous = vbNullString
End With**
'Jump along the rows
If k Mod NCols = 0 Then
i = i + 2
End If
Next k
For Each oCell In oTbl.Range.Cells
oCell.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
Next oCell
Else
End If
End With
Application.ScreenUpdating = True
结束子
位,未能运行:
'Insert the Caption in the cell below the picture
With oTbl.Rows(i + 1).Cells(NCols - (k Mod NCols)).Range
.InsertBefore vbCr
.Characters.First.InsertCaption _
Label:="Picture", Title:=StrTxt, _
Position:=wdCaptionPositionBelow, ExcludeLabel:=False
.Characters.First = vbNullString
.Characters.Last.Previous = vbNullString
End With
你能告诉我这里有什么问题吗? 我怀疑 InsertCaption 方法在 MS Word 2010 中无法正常工作;但是,我找不到任何相关文档。
我认为,问题在于您在代码的开头创建了标题标签 "Photograph",但在您实际插入标题的部分中使用了标签 "Picture"。 (顺便说一下,这也是创建标签的评论中的内容...)
在 Word 2013 中,名为 "Picture" 的标题可能已经存在,这就是为什么您在 2013 年看不到错误的原因。显然,它在 2010 年不存在,因此出现错误。