2015-12-21 48 views
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中無法正常工作;但是,我找不到任何有關這方面的文檔。

+0

歡迎來到SO!你能否包含錯誤信息? –

回答

1

的問題,我認爲,這是在你的代碼的開頭創建一個標題標籤「照片」,但在你真正插入使用標籤「圖片」的標題部分。 (順便說一句,創建標籤的註釋也是如此......)

在Word 2013中,可能會出現名爲「圖片」的標題,這就是爲什麼您沒有看到錯誤在2013年。顯然,它不是在2010年,因此錯誤。