将值从一个工作簿复制并转置到另一个工作簿

Copy & Transpose Values from 1 Workbook to Another

Sub LoopThroughDecTab()
Dim MyFile As String
Dim erow
Dim FilePath As String

FilePath = "C:"
MyFile = Dir(FilePath)


Do While Len(MyFile) > 0
If MyFile = "Dec Tab Macro.xlsm" Then
Exit Sub
End If

Workbooks.Open (FilePath & MyFile)
ActiveWorkbook.Worksheets("Declaration Analysis (Source)").Activate
Range("H9:H21").Copy
ActiveWorkbook.Close False

'Getting Runtime error PasteSpecialMethod of Range Failed on following line'

ActiveSheet.Range(Cells(erow, 1), Cells(erow, 7)).PasteSpecial.Range Transpose:=True 

MyFile = Dir

Loop

End Sub

我在文件夹中有文件,代码循环遍历文件并复制值,然后我希望将这些值转置到 Active MasterSheet 中。有 7 个值需要粘贴,然后它应该打开文件夹中的下一个工作簿并重复该过程。

如果不看你在复制什么,很难理解问题出在哪里,但你可以试试:

ActiveSheet.Cells(erow, 1).PasteSpecial Transpose:=True 
set CopyFromRange = Range("H9:H21")
set CopyToRange = ActiveSheet.Cells(erow,1).Resize(1,13)
CopyToRange.Value = Application.Transpose(CopyFromRange.Value)

假设您发布了完整的代码,并且只是插入了 'non-code' 消息来告诉我们您的错误所在,请试一试:

Option Explicit

Sub LoopThroughDecTab()
Dim MyFile As String
Dim erow
Dim FilePath As String
Dim DestWB as Workbook
Dim SourceWB as Workbook

'this way we know the one where the code is running and the destination for our copies
set DestWB = ThisWorkbook 

FilePath = "C:"
MyFile = Dir(FilePath)

Do While Len(MyFile) > 0
    If MyFile = "Dec Tab Macro.xlsm" Then
        Exit Sub
    End If

    Set SourceWB = Workbooks.Open (FilePath & MyFile)
    SourceWB.Worksheets("Declaration Analysis (Source)").Range("H9:H21").Copy
'Move the close to AFTER you do the paste
'NOTE: You may have to make a change here:
    DestWB.Range(Cells(erow, 1), Cells(erow, 7)).PasteSpecial.Range Transpose:=True 
    SourceWB.Close False
    MyFile = Dir
Loop

End Sub

如果您在 Excel 中打开两个工作簿(A 和 B),从 A 复制一些单元格,关闭 A,然后尝试粘贴到 B,您将没有任何内容可粘贴 - 关闭 A 会清除剪贴板缓冲区。我相信同样的事情也发生在这里。

重要提示:

  1. 我已经删除了所有对 ActiveWorkbook 的引用 - 我相信我已经弄对了,但是在使用 Active* 时我总是有点迷茫,所以我不惜一切代价避免使用它. (在 非常 少数情况下,它是完成任务的唯一方法,这不是其中之一。)如果我弄乱了您的副本来源和目的地,只需反转 Set 语句,这样您就可以以另一种方式使用它们。
  2. 我不确定 erowFilePath 在哪里设置,所以我假设这不是完整的代码。假设他们仍然会以某种方式设置。
  3. 我没有使用 copy/transpose 功能,因此您可能还需要包括 的调整。