如何将范围作为数组从 Excel 导入 Word 文档

How to import range as array, from Excel into Word document

我正在研究 VBA Word 宏来创建具有个性化 headers 的文档。 我有一个电子表格,其中包含要插入 Headers 的文本(每一行都应插入一个单独的页面)。

为此,我想将电子表格中的数据作为 Array 导入到 Word 中,以便让这些文本就位。

我写了一段代码来打开电子表格并使用Select方法得到一个pre-defined 运行ge;我在尝试将此 Selection 传递给 Range object 时出错。

错误信息是Runtime Error 13: Incompatible types

我添加了一个 If 循环以确保 Selection 不为空,而且它不是,因为每次我 运行 代码。

Sub main()

    'Main procedure
    Dim app_Excel As Excel.Application
    Set app_Excel = CreateObject("Excel.Application")
        
    Dim wbk_srce As Workbook
    Set wbk_srce = app_Excel.Workbooks.Open("C:[=11=]_portolon\Dias.xlsm", , False)
    
    Dim wsh_srce As Worksheet
    Set wsh_srce = wbk_srce.Worksheets(3)
    wsh_srce.Activate
    
    cell_1 = CStr("A1")
    cell_2 = CStr("D216")
    
    Dim header_range As Range
    wsh_srce.Range(cell_1, cell_2).Select
    
    If Selection = Empty Then
        Debug.Print ("error")
    Else
        Debug.Print ("good")
    End If
    
    Set header_range = Selection    '<---Error
    
    Dim header_array() As Variant
    
    'header_array = header_range.Value
    
    'Call add_readers


End Sub

注意:我只将 Microsoft Excel 16.0 Object 库添加到 VBA Word。

我怎样才能完成这项工作?

提前致谢,

蒂亚戈

Word 和 Excel 都有一个 Selection 对象,因此当您在 Excel 中引用一个选择时,您需要通过在它前面加上您的 Excel 应用程序来限定它变量,即 app_Excel.Selection.

您还需要对两个应用程序共有的其他对象执行此操作,例如 Range。 Word 会将 Dim header_range As Range 理解为 Word.Range,因此将 Excel 中的选择分配给它是行不通的。