首页 > 解决方案 > 如何修改代码以粘贴到下一个空白行而不是列?

问题描述

我已经设置了一个在单击按钮时运行的宏。该宏检查指定的文件夹并将文件夹中包含的所有工作簿中的数据拉入活动工作簿中。

但是,代码运行良好,每张工作表中的每批新数据都进入列,我需要将其粘贴到行中。

我找到了需要更改的部分,但我无法让它按预期工作。

    Set mSh = mWb.Sheets("Raw Data")

    ' Initialize column to paste to
    nxtRow = 1

    ' Loop through all files in the the folder
    fl = Dir(fDir)

    Do While Len(fl) > 0
        ' Open file
        Set dWb = Workbooks.Open(fDir & fl)

        ' Copy data from
        dWb.Sheets(1).Range("A2:AU100").Copy mSh.Cells(1, nxtCol)

        ' Close workbook
        dWb.Close SaveChanges:=True

        ' Increment column counter
        nxtRow = nxtRow + 7

        ' Go to next file
        fl = Dir
    Loop

将每个工作表数据粘贴到新列中,而不是逐行执行

标签: excelvba

解决方案


我可以建议您使用不需要打开/关闭工作簿的代码吗?

Sub CopyFromAndPaste()

Dim myPath As String: myPath = "C:\Users\....\foldername\"
Dim myExt As String: myExt = "*.xlsx"
Dim myFile As String, FullStr As String
Dim rw As Long: rw = 1
Dim rng As Range

myFile = Dir(myPath & myExt)
With Sheet1 'Change accordingly to your sheet's codename
    Do While myFile <> ""
        FullStr = "'" & myPath & "[" & myFile & "]Sheet1'!R1C1:R100C47"'Change sheetname accordingly
        Set rng = .Range(.Cells(rw, 1), .Cells(rw + 99, 47))
        rng.Value = ExecuteExcel4Macro(FullStr)
        myFile = Dir
        rw = rw + 100
    Loop
End With

End Sub

推荐阅读