我正在开发电子表格以自动生成报价;这涉及从具有我们可能的图表库的工作表中复制正确的图表(成组的Excel形状),并将该图像粘贴/插入/ [最有效的方法]粘贴到VBA组装的Word文档中。
到目前为止,我已经能够成功地识别,复制和粘贴从Excel到Word的特殊正确图表形状。但是,我发现的每一种技术都意味着形状要么将文本包装为内联或向内包装,而我又需要将文本的下一部分直接放在图表旁边,即“ wdTight”
下面,您可以看到我如何粘贴到当前形状中。但是我不知道如何将形状做成“ .wrapFormat.Type = wdTight”
通常会遇到一系列运行时438错误:对象不支持此属性或方法。
我有一个理论,这是因为Word认为选择始终是闪烁的文本光标,而不是被激活并具有悬浮布局选项工具提示的粘贴形状(但这只是一个理论)。
这是代码。请帮忙。
Sub export_excel_to_word()
Dim appWord
Dim quoteWord
Dim wordSelection
Set appWord = CreateObject("Word.Application")
appWord.Visible = True
Set quoteWord = appWord.Documents.Add
Set wordSelection = appWord.Selection
'This part works
Module1.ImagesRefresh
'Product 1 image insertion
Sheets("Quick Lookup").Shapes("QuoteProduct1Image").Copy
wordSelection.PasteSpecial Link:=False, _
DataType:=wdPasteShape, _
Placement:=wdInLine, _
DisplayAsIcon:=False
'This part does not work and is where I need help
With wordSelection
.WrapFormat.Type = wdWrapFront
End With
答案 0 :(得分:1)
尝试创建一个变量来表示新粘贴的形状,它应该可以通过索引访问,并且应该是最后一个索引:
'Product 1 image insertion
ActiveSheet.Shapes(1).Copy
wordSelection.PasteSpecial Link:=False, _
DataType:=wdPasteShape, _
Placement:=wdInLine, _
DisplayAsIcon:=False
Dim wdShape As Word.Shape
Set wdShape = quoteWord.Shapes(quoteWord.Shapes.Count)
wdShape.WrapFormat.Type = wdWrapTight
在不使用shape变量的情况下,这也可能有效,但是我没有针对具有多个形状的文档进行过测试(假设您要按顺序/迭代添加形状)
'Product 1 image insertion
ActiveSheet.Shapes(1).Copy
wordSelection.PasteSpecial Link:=False, _
DataType:=wdPasteShape, _
Placement:=wdInLine, _
DisplayAsIcon:=False
wordSelection.ShapeRange(1).WrapFormat.Type = wdWrapTight
如果您还 插入文本(例如,通过TypeText
的{{1}}方法,请尝试下面的代码。我对Word不太熟悉自动化,以及您hould avoid activate/select我认为的规则在Word中不太严格(或有更多例外),但根据经验,我仍然会尽量避免依赖Word.Range
对象,并改为使用范围。
我在这里所做的是粘贴到Selection
而不是wordSelection.Range
本身。那我就
Selection