2
我在Word 2013中製作了一個簡單的VBA宏,並且一切正常。 當我試圖在Word 2010中運行它時,它退出時出現運行時錯誤號。 4198.插入標題詞vba 2010
工作的代碼,它插入在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中無法正常工作;但是,我找不到任何有關這方面的文檔。
歡迎來到SO!你能否包含錯誤信息? –