Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Excel范围复制到Word文档,包括其隐藏的子范围_Excel_Vba_Ms Word - Fatal编程技术网

将Excel范围复制到Word文档,包括其隐藏的子范围

将Excel范围复制到Word文档,包括其隐藏的子范围,excel,vba,ms-word,Excel,Vba,Ms Word,我正在尝试使用.copy方法复制Excel区域,该方法包含隐藏部分和非隐藏部分。但是,复制范围后,当我将其粘贴到word.docx文档中时,只粘贴未隐藏的部分 是否可以粘贴整个范围,包括隐藏部分 即使我使hidden=false,然后复制,然后hidden=true,它也不起作用。它仍然只粘贴隐藏的部分 我现在的代码如下Macro2和Macro3不起作用,只有Macro4对我起作用,但是行(1)必须不隐藏,这是我不想要的 Sub Macro1() Rows(1).Hidden = Tru

我正在尝试使用.copy方法复制Excel区域,该方法包含隐藏部分和非隐藏部分。但是,复制范围后,当我将其粘贴到word.docx文档中时,只粘贴未隐藏的部分

是否可以粘贴整个范围,包括隐藏部分

即使我使hidden=false,然后复制,然后hidden=true,它也不起作用。它仍然只粘贴隐藏的部分

我现在的代码如下
Macro2
Macro3
不起作用,只有
Macro4
对我起作用,但是
行(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
一种
InlineShape
/
OLEFormat
方法 下面的代码从Excel(使用Microsoft Word###.0对象库参考)中运行,方法是挂接到Word文档中,并将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

一种
InlineShape
/
OLEFormat
方法 下面的代码从Excel(使用Microsoft Word###.0对象库参考)中运行,方法是挂接到Word文档中,并将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

你好,BigBen,我用我的代码编辑了答案。谢谢。你好,BigBen,我用我的代码编辑了答案。非常感谢。