我正在尝试从桌面上某个文件夹中的每个已关闭工作簿复制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:对象不支持属性或方法。调试器会高亮显示我定义粘贴复制范围的位置的行
答案 0 :(得分:0)
带有目标范围的代码行需要优化:
getFormConfig('firstModule').mutation({ variables: { firstModuleArg: 'foo' } })
getFormConfig('secondModule').mutation({ variables: { secondModuleArg: 42 } });
不能寻址部分行Range("A:L" & 1000)
不带前导点,则假定使用ActiveSheet 第一次尝试
Rows.Count
目标构建如下:
第二次尝试:
如果粘贴,则仅需要寻址目标的第一个单元格。因此,以下操作也应该起作用:
wksDest.Cells(wksDest.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(1, 12).PasteSpecial _
Paste:=xlPasteValues
推荐
如果您定义大小相同的源和目标范围,则只需分配它们的值即可(类似于PastSpecial值,但速度更快):
wksDest.Cells(wksDest.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial _
Paste:=xlPasteValues