我正在为Microsoft Word 2007编写一个宏。该宏应该制作一个n x 2表格,然后将选中的一张照片插入到每个单元格中。相反,它会在第一列中为每个单元格放置两张照片而在第二列中不放置任何照片。
With Application.ActiveDocument
Dim myTable As Word.Table
Set myRange = ActiveDocument.Content
ActiveWindow.View.TableGridlines = True
Set myTable = .Tables.Add(Range:=myRange, NumRows:=Fix((Num / 2) + 0.5), NumColumns:=2)
For I = 1 To Num
oRow = Fix((I / 2) + 0.5) '
If (I Mod 2) = 1 Then oCol = 1
If (I Mod 2) = 0 Then oCol = 2
myTable.Cell(oRow, oCol).Select
Set pic = .InlineShapes.AddPicture(FileName:=sDir(I), LinkToFile:=False, SaveWithDocument:=True)
With pic
.LockAspectRatio = msoFalse
.Height = InchesToPoints(2.25)
.Width = InchesToPoints(3)
End With
Selection.Collapse
Next
End With
答案 0 :(得分:0)
这样做:
Dim tblCell as Word.Cell
因为对于可读性和智能感知,使用强类型变量通常更容易:
Set tblCell = myTable.Cell(oRow, oCol)
Set pic = tblCell.Range.InlineShapes.AddPicture(FileName:=sDir(I), LinkToFile:=False, SaveWithDocument:=True)
With pic
.LockAspectRatio = msoFalse
.Height = InchesToPoints(2.25)
.Width = InchesToPoints(3)
End With
解释:
在你的调试中,你做了:
我尝试更换“设置图片
.InlineShapes.AddPicture...End with
和Selection.TypeText ("HI")
哪个应该有用,因为您直接使用Selection
插入文本。但是,由于您只有ActiveDocument
(您使用With ActiveDocument
开始编码)
.InlineShapes.AddPicture(...
你最初使用的方法不起作用似乎很奇怪。当我在2010年完成它时,它只将所有图片放在FIRST单元格中。