首页 > 解决方案 > 如何在 Excel VBA 中复制特定范围值?

问题描述

如何在 Excel VBA 中复制特定范围值?我试图通过首先创建一个输入框让用户在另一个工作簿中输入范围,然后将该范围的值从所有选定的工作簿复制到一个工作簿中来复制一个范围。

这就是我所拥有的,但它只复制一组值。

    FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter (*.csv), *.csv", Title:="Open File(s)", MultiSelect:=True)
    nw = UBound(FileNames)
    Workbooks.Open FileNames(1)
    Set UserRange = Application.InputBox(Title:="Select Range", Prompt:="Range", Default:=DefaultRange, Type:=8)
    For i = 1 To nw
Set FileNames(i) = ActiveWorkbook
        UserRange.Copy
        tWB.Worksheets("Data").range("A" & i).PasteSpecial Transpose:=True
    Next i

编辑:我只需要打开一个工作簿,将 UserRange 定义为范围,并将该范围内的值复制到所有选定的工作簿中,然后将它们粘贴到 tWB 工作簿中。

标签: excelvbacopyrange

解决方案


正如 BigBen 在评论中所发布的,我已更改代码以单独打开每个工作簿并每次复制值。这给出了我正在寻找的准确结果。

新代码如下所示:

FileNames = Application.GetOpenFilename(FileFilter:="Excel Filter (*.csv), *.csv", Title:="Open File(s)", MultiSelect:=True)
nw = UBound(FileNames)
For i = 1 To nw
    Workbooks.Open FileNames(i)
    Set UserRange = Application.InputBox(Title:="Select Range", Prompt:="Range", Type:=8)
    UserRange.Copy
    tWB.Worksheets("Data").range("A" & i).PasteSpecial Transpose:=True
    ActiveWorkbook.Close SaveChanges:=False
Next i

推荐阅读