【问题标题】:VBA - Excel + Word integration - Code looping for no reasonVBA - Excel + Word 集成 - 无缘无故的代码循环
【发布时间】:2016-05-25 09:37:40
【问题描述】:

我正在创建一个 Excel 文档,其中包括将一些数据数组复制到 Word 文件中。

除了粘贴我感兴趣的选择时,它会无限粘贴,直到我通过任务管理器删除 Word 进行干预。

据我所知,没有理由让它循环。所以我对下一步该做什么一无所知,我希望你们能阐明我做错了什么。概念如下:

Sub TestA() 
     'Word objects.
    Dim wdApp As Word.Application 
    Dim wdDoc As Word.Document 
    Dim wdbmRange As Word.Range 

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

     'Opening app and document
    Set wdApp = New Word.Application 
    Set wdDoc = wdApp.Documents.Open("C:\Users\RCO1\Desktop\Teste VBA\2. Conceptual Testing\Export\XLWDTST.docx") 
    Set wdbmRange = wdDoc.Bookmarks("TableInsertion").Range 

     'Selecting array
    Sheets("ExportMe").Select 
    Range("A1").Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Selection.Copy 

     'Pasting data
    With wdbmRange 
        .PasteSpecial '<------- it simply goes back up to the beginning of the code at this point
        CutCopyMode = False 
    End With 

     'Closing and saving
    wdDoc.Save 
    wdDoc.Close 
    wdApp.Quit 

    Set wdApp = Nothing 
    Set wdDoc = Nothing 
End Sub 

请注意,出于格式原因,我不能简单地将这个数组转换为表格。

【问题讨论】:

  • 与其结束 Word 进程,不如尝试在运行代码的 VBA 环境 (Excel) 中按键盘上的 Ctrl+Break。
  • 和你的问题没有关系,但是需要把代码末尾的Set...=Nothing的顺序改一下。总是以它们被实例化的反向顺序释放对象。
  • 您使用 PasteSpecial 而不是 Paste 有什么特别的原因吗?如果您使用 F8 来“单步”执行代码,它会跳转吗?去哪条线?在 20 年的 VBA 编程中,我从未听说过这样的事情......
  • 嘿,辛迪。感谢回复。我在 .PasteSpecial 中结束了它,作为我解决问题的失败尝试之一,但事实并非如此。通过使用 F8,它会到达我粘贴选择的行,当我再次按下它时,它会返回到“Sub TestA()”。但是,我只需输入以下内容即可找到解决方案: Sheets("General Exhibit Model BRL").Cells(1).CurrentRegion.Copy .Bookmarks("TableInsertion").Range.PasteExcelTable 0, 0, 0 所以没什么大不了了.非常感谢,无论如何:)
  • 很高兴问题解决了。由于它是如此“奇怪”,我认为保存问题和您的解决方案以便其他人可以找到它是很重要的。你介意花点时间在“答案”中总结你的发现,包括工作代码吗?然后,您可以点击旁边的“回答”复选标记(您可以在 SO 上回答您自己的问题)。

标签: excel vba loops ms-word paste


【解决方案1】:

经过几次查询,我得到了以下简单但非常有效的代码:

Set wdApp = CreateObject("Word.Application")
Filepath = Sheets("Proposal Generator").Range("I9")
Set wdDoc = Word.Documents.Open(Filepath)

with wdDoc

            Sheets("Shhet1").Cells(1).CurrentRegion.Copy
            .Bookmarks("TableInsertion").Range.PasteExcelTable 0, 0, 0

.SaveAs (TxtSaveFolder.Text & "\" & TxtFileName.Text)

End With

我希望这对尝试导出表格的任何人都有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多