【发布时间】:2017-04-13 14:37:46
【问题描述】:
我正在尝试运行一个脚本来搜索关键字,然后复制找到该关键字的整个句子,并将其粘贴到 Excel 电子表格中。
当我在 1-2 页的文档上运行脚本时,它运行良好,但是当我尝试更长的文档(100 多页)时,我收到以下错误:
运行时错误“1004”:Worksheet 类的粘贴方法失败。 当我点击“调试”时,它说“objsheet.paste”是问题所在。
您能帮我修改一下代码,让它也可以处理更长的文本吗?
Sub FindWordCopySentence()
Dim appExcel As Object
Dim objSheet As Object
Dim aRange As Range
Dim intRowCount As Integer
intRowCount = 1
Set aRange = ActiveDocument.Range
With aRange.Find
Do
.Text = "Hair"
.Execute
If .Found Then
aRange.Expand Unit:=wdSentence
aRange.Copy
aRange.Collapse wdCollapseEnd
If objSheet Is Nothing Then
Set appExcel = CreateObject("Excel.Application")
Set objSheet = appExcel.workbooks.Open("C:\Users\HNR\Desktop\hair.xlsx").Sheets("Sheet1")
intRowCount = 1
End If
objSheet.Cells(intRowCount, 1).Select
objSheet.Paste
intRowCount = intRowCount + 1
End If
Loop While .Found
End With
If Not objSheet Is Nothing Then
appExcel.workbooks(1).Close True
appExcel.Quit
Set objSheet = Nothing
Set appExcel = Nothing
End If
Set aRange = Nothing
End Sub
【问题讨论】:
-
对不起,我尝试粘贴代码,结果都乱成一个段落。我不知道如何修复它(论坛新手,今天刚刚了解了“宏”是什么来尝试这段代码)。我不知道如何以正确的格式发布代码。 :\ 但是我用混乱的文本编辑了原始帖子(以及指向原始代码的链接,如果您单击它并向下滚动,它就会以正确的格式出现)。
-
一旦将代码放入问题中,您需要将每行缩进 4 个空格以使其看起来不错。 Ctrl-K 是执行此操作的快捷键。
-
FWIW - 我猜测打开工作簿导致剪贴板被清除是不正确的。
-
感谢您修复我的原始消息。代码现在在那里 :)
-
我不是 Word-VBA 专家(我在删除不正确的“宏”标签时遇到了您的问题)但在真正的专家出现之前,您可以尝试将
aRange.Copy更改为myTempText = aRange.Text和objSheet.Cells(intRowCount, 1).SelectobjSheet.Paste到objSheet.Cells(intRowCount, 1).Value = myTempText- 这可能有助于确定它是与复制/粘贴相关的问题还是其他问题。 (我无法用我设置的一些虚拟数据复制问题,所以我认为您的文档本身可能存在导致复制/粘贴问题的问题)