【问题标题】:Bad Parameters in Selection (Excel VBA)选择中的错误参数(Excel VBA)
【发布时间】:2018-03-02 13:57:28
【问题描述】:

我需要将表格从 Excel 复制/粘贴到 owrd 到特定行。我已经编写了代码,它在我使用的 Excel 和 Word 2016 中运行良好,但是当我尝试在其他版本(2013、2010、2007)中运行时,它根本不起作用。所以我尝试使用后期绑定,但它在.selection 中引发了错误参数错误

如何去除不良参数?谢谢,

代码如下:

Sub Movetable ()

    'Name of the existing Word document
    Const stWordDocument As String = "Test.docx"

    'Word objects.    
    Dim wdApp As Object
    Dim wdDoc As Object
    Dim wdRange As Object

    'Excel objects
    Dim wbBook As Workbook
    Dim wsSheet As Worksheet
    Dim xlRange As Excel.Range

    'Initialize the Excel objects
    Set wbBook = ThisWorkbook
    Worksheets("RJ").Select

    LastRow = Range("A" & Rows.Count).End(xlUp).Row
    Set xlRange = Range("A4:D" & LastRow)
    xlRange.Select
    xlRange.Copy

    'Instantiate Word and open the "Test" document.
    Set wdApp = CreateObject("Word.Application")
    Set wdDoc = wdApp.Documents.Open(wbBook.Path & "\" & stWordDocument)

    wdDoc.Application.Selection.Find.Execute "Table 1. Summary", MatchCase:=True   
    wdApp.Selection.MoveDown Unit:=wdLine, Count:=2, Extend:=wdMove
    wdApp.Selection.PasteExcelTable False, False, False
    wdDoc.Tables(1).AutoFitBehavior wdAutoFitWindow


    'Save and close the Word doc.
    With wdDoc
        .Save
        .Close
    End With

    wdApp.Quit

    'Null out the variables.
    Set wdRange = Nothing
    Set wdDoc = Nothing
    Set wdApp = Nothing

    End Sub

【问题讨论】:

    标签: excel ms-word selection copy-paste vba


    【解决方案1】:

    很可能,原因是您为 2016 版设置了对 Microsoft Word 库的引用。当您在早期版本中打开并运行项目时,该引用不会更改为 Microsoft Word 库版本。这是预期的行为。

    要解决问题,您可以

    1. 在最早版本的 Office(2007, 显然)。转到 VBA 编辑器中的工具/参考,然后选择 该版本的 Microsoft Word 库。测试,然后保存。

      Office 应用程序将引用更改为较新的版本,但反之则不会。这就是为什么总是建议使用项目应该使用的最旧版本的 Office 进行开发。

    2. 不要在方法调用中使用命名参数。删除,例如,MatchCase:=UnitCountExtend。此外,不要使用 Word 枚举:wdLinewdMovewdAutoFitWindow - 这些都有数字等价物,请改用它们。

    这称为“后期绑定”,它使您的项目独立于 Word 版本。然后,您可以完全删除对 Microsoft Word 库的引用。

    为了找出数字等价物,您可以在 VBA 对象浏览器(VBA 编辑器中的 F2)中查找枚举,在 Word VBA 帮助中查找它们或在 VBA 编辑器即时窗口中查询它们(Ctrl + G) 使用这样的语法:?wdLine 然后回车执行。

    【讨论】:

    • 谢谢。我仍然使用 Excel 2016。对于 .Selection 方法,我删除了命名参数和单词枚举。但它仅在引用 Microsoft Word 16.0 对象库时有效。我也尝试了没有 .Selection 方法的其他代码,它可以在没有参考的情况下工作(但这不是我想要的)。接下来我该怎么办?
    • 在其他版本的 Office 中究竟是哪一行代码引发了错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    相关资源
    最近更新 更多