VBA Word 将选定的内联形状添加到 table 单元格
VBA Word Add selected inline shape to a table cell
我在 Word 中选择了一个内联形状对象,我正在尝试使用 VBA 将其粘贴(移动)到 table 单元格中。但是我找不到任何 API 来完成这项工作。我想这样做
// C#
myCell.InlineShapes.Add(selection.InlineShapes[1]);
但是 VBA 或 C# 中没有 API 可以做到这一点。
我找到了 ,但它将图片直接从文件加载到 table 单元格中。
如何将选定的图像放入单元格(Shapes 或 InlineShapes)?谢谢
更新:
我发现 给我一些正确方法的提示。谢谢你,辛迪!!
这段代码终于成功了。我必须通过剪贴板并获取单元格范围才能使用 PasteSpecial 从剪贴板中提取图片。诡异的。但它奏效了。也许有更好的方法。
// C#
sel.CopyAsPicture();
var cell = table.Cell(row, 1);
// Must use cell.PasteSpecial to pull in the image from the clipboard
var range = cell.Range;
range.PasteSpecial(null, null, WdOLEPlacement.wdInLine, false,
WdPasteDataType.wdPasteShape);
试试这个代码:
Sub MoveShapeToTable()
Dim ish As InlineShape, tblNew As Table
On Error Resume Next
Set ish = Selection.InlineShapes(1)
If Err.Number <> 0 Then
MsgBox "No InlineShapes selected", vbCritical
Exit Sub
End If
On Error GoTo 0
ish.Range.Cut
With ActiveDocument
Set tblNew = .Tables.Add(Range:=.Range.Characters.Last, NumRows:=2, NumColumns:=1, _
DefaultTableBehavior:=wdWord9TableBehavior)
tblNew.Cell(1, 1).Range.Paste
End With
End Sub
我在 Word 中选择了一个内联形状对象,我正在尝试使用 VBA 将其粘贴(移动)到 table 单元格中。但是我找不到任何 API 来完成这项工作。我想这样做
// C#
myCell.InlineShapes.Add(selection.InlineShapes[1]);
但是 VBA 或 C# 中没有 API 可以做到这一点。
我找到了
如何将选定的图像放入单元格(Shapes 或 InlineShapes)?谢谢
更新:
我发现
这段代码终于成功了。我必须通过剪贴板并获取单元格范围才能使用 PasteSpecial 从剪贴板中提取图片。诡异的。但它奏效了。也许有更好的方法。
// C#
sel.CopyAsPicture();
var cell = table.Cell(row, 1);
// Must use cell.PasteSpecial to pull in the image from the clipboard
var range = cell.Range;
range.PasteSpecial(null, null, WdOLEPlacement.wdInLine, false,
WdPasteDataType.wdPasteShape);
试试这个代码:
Sub MoveShapeToTable()
Dim ish As InlineShape, tblNew As Table
On Error Resume Next
Set ish = Selection.InlineShapes(1)
If Err.Number <> 0 Then
MsgBox "No InlineShapes selected", vbCritical
Exit Sub
End If
On Error GoTo 0
ish.Range.Cut
With ActiveDocument
Set tblNew = .Tables.Add(Range:=.Range.Characters.Last, NumRows:=2, NumColumns:=1, _
DefaultTableBehavior:=wdWord9TableBehavior)
tblNew.Cell(1, 1).Range.Paste
End With
End Sub