【发布时间】: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