【发布时间】:2019-02-18 15:35:03
【问题描述】:
我正在尝试从桌面文件夹中的每个已关闭工作簿中复制 Range(A14:N26) 并将它们粘贴到当前工作表(这是我的主工作表)中。该代码确实抓取了正确范围的数据,但在粘贴部分却遇到了困难。 它应该特别粘贴代码,因为单元格中有公式,我只想复制单元格中可见的内容。 (注:有些公式的结果是单词,有些公式的结果是数字)
Option Explicit
Sub CopySheetFromFileOnDesktop()
Dim wkbDest As Workbook
Dim wksDest As Worksheet
Dim wkbSource As Workbook
Dim wksSource As Worksheet
Dim MyPath As String
Dim MyFile As String
Dim SheetIndex As Integer
Application.ScreenUpdating = False
Set wkbDest = ThisWorkbook
Set wksDest = wkbDest.Worksheets("Master Sheet")
SheetIndex = 1
MyPath = "C:\Users\.."
If Right(MyPath, 1) <> "\" Then MyPath = MyPath & "\"
MyFile = Dir(MyPath & "*.xlsm")
Do While Len(MyFile) > 0
Set wkbSource = Workbooks.Open(MyPath & MyFile)
Set wksSource = wkbSource.Worksheets("Sheet containing the info")
If WorksheetFunction.CountA(wkbSource.Sheets("Sheet containing the
info").Range("A14:L26")) <> 0 Then
'lRow = .Range("L" & Rows.Count).End(xlUp).Row 'UNSURE HOW TO LAST ROW
wkbSource.Sheets("Sheet containing the info").Range("A14:L26").Copy
wkbDest.Range("A:L" & Rows.Count).End(xlUp)(2).PasteSpecial _
Paste:=xlPasteValues 'PASTESPECIAL SEEMS TO BE THE PROBLEM
wkbSource.Close savechanges:=False
Application.CutCopyMode = False
Else
End If
Loop
Application.ScreenUpdating = True
MsgBox "Completed...", vbInformation
End Sub
运行宏时会显示此错误:运行时错误 438:对象不支持属性或方法。调试器会突出显示我定义粘贴复制范围的位置
【问题讨论】:
-
@SolarMike 谢谢,但这个问题也没有解决
-
你可以在这里找到一些线索:stackoverflow.com/q/50776026/4961700
-
就像@Asger 下面说的,
wkbDest.Range("A:L" & Rows...可能是您遇到问题的地方。您可以通过设置前一个最后一行或调整大小来修复它。lRow = wkbDest.Range("A" & Rows.Count).End(xlUp).rowwkbDest.Range("A"& lRow).Resize(12, 12).PasteSpecial Paste:=xlPasteValues