我正在尝试使用.Copy方法复制具有隐藏部分而非隐藏部分的Excel Range。但是,复制范围后,当我将其粘贴到Word .docx文档中时,只会粘贴未隐藏的部分。
是否可以粘贴包括隐藏部分在内的整个范围?
即使我将hidden = false,然后复制,然后hidden = true,它也不起作用。它仍然仅粘贴未隐藏的部分。
我现在拥有的代码如下。 Macro2
和Macro3
不起作用,只有Macro4
对我有用,但是Rows(1)
必须不隐藏,这是我不希望的。
Sub Macro1()
Rows(1).Hidden = True
Rows(2).Hidden = False
End Sub
Sub Macro2()
Range(Cells(1, 1), Cells(2, 1)).Copy
End Sub
Sub Macro3()
Rows(1).Hidden = False
Range(Cells(1, 1), Cells(2, 1)).Copy
Rows(1).Hidden = True
End Sub
Sub Macro4()
Rows(1).Hidden = False
Range(Cells(1, 1), Cells(2, 1)).Copy
End Sub
答案 0 :(得分:0)
InlineShape
/ OLEFormat
方法下面的代码通过连接到Word文档并将Excel文档作为Microsoft Word ##.0 Object Library
嵌入到Excel中(使用InlineShape
引用)来运行。然后直接编辑该对象,以便将数据复制过来。
可能仍然有一个更简单的选择,但这是我能想到的最好的选择。
Public Function CopyToWord(ByRef rng As Excel.Range, ByRef wd As Word.Document) _
As Word.InlineShape
Dim wd_wb As Excel.Workbook '' word workbook
Dim wd_ws As Excel.Worksheet '' word wordsheet
Dim ole_xl As Word.OLEFormat '' the format object that holds the above
Dim wd_is As Word.InlineShape '' the shape object that holds the above
'' add inline shape
Set wd_is = wd.Content.InlineShapes.AddOLEObject( _
ClassType:="Excel.Sheet.12", _
Filename:="", _
LinkToFile:=False, _
DisplayAsIcon:=False)
Set ole_xl = wd_is.OLEFormat '' get format
Call ole_xl.Activate '' start editing
Set wd_wb = ole_xl.Object '' get workbook
Set wd_ws = wd_wb.Sheets(1) '' get worksheet
'' actually do the copying
Call rng.Copy(Destination:=wd_ws.[A1].Resize(rng.Rows.Count, rng.Columns.Count))
Call wd_wb.Close '' stop editting
Set CopyToWord = wd_is '' return inline shape object
End Function
这是一个演示子例程,该子例程应显示该函数
Public Sub demo()
[A1] = "Sneaky"
[A:A].EntireRow.Hidden = True
Dim word_doc As New Word.Document
Let word_doc.Application.Visible = True
Call CopyToWord(rng:=[A1:B2], wd:=word_doc) '' or `CopyToWord [A1:B2], word_doc`
End Sub