将值从不同的工作簿复制到主文件

时间:2018-06-29 08:50:07

标签: excel vba excel-vba

因此,在我的工作中,我试图创建一个主文件,该文件将来自固定单元格的信息从不同的Excel文件复制到主文件中。这些值需要写在同一行但不同列的不同单元格中。我的代码可以读取文件,但不能在单元格中粘贴任何值,这是我的代码:

Do While MyFile <> ""
DoEvents
On Error GoTo 0
Workbooks.Open Filename:=MyFolder & "\" & MyFile, UpdateLinks:=False
Range("J23").Select
Selection.Copy
Windows("MasterFile1.xlsm").Activate
For c = 2 To 13
    Cells(4, c).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Next c
0
Workbooks(MyFile).Close SaveChanges:=False
MyFile = Dir
Loop

1 个答案:

答案 0 :(得分:0)

您应该从外部源工作簿中了解正在使用的工作表,以及在主工作簿中为目标计划的工作表。

无需循环。您可以根据需要在一个单元格中写入一个值。

如果只关心该值,则不需要“特殊复制和粘贴”;直接值转移更快,而且不涉及剪贴板。

Dim mwb As Workbook

Set mwb = Workbooks("MasterFile1.xlsm")

Do While MyFile <> ""
    On Error GoTo 0
    With Workbooks.Open(Filename:=MyFolder & "\" & MyFile, UpdateLinks:=False, ReadOnly:=True)
        mwb.Worksheets(1).Range(.Cells(4, "B"), .Cells(4, "M")) = _
            .Worksheets(1).Range("J23").Value
        .Close SaveChanges:=False
    End With
    MyFile = Dir
Loop

在另一种情况下,您希望不同的外部工作簿的J23值进入主工作簿的B4,C4,D4等,那么这可能更合适。

Dim mwb As Workbook, o As Long

Set mwb = Workbooks("MasterFile1.xlsm")

Do While MyFile <> ""
    On Error GoTo 0
    With Workbooks.Open(Filename:=MyFolder & "\" & MyFile, UpdateLinks:=False, ReadOnly:=True)
        mwb.Worksheets(1).Cells(4, "B").Offset(Int(o / 12), o Mod 12) = _
            .Worksheets(1).Range("J23").Value
        o = o + 1
        .Close SaveChanges:=False
    End With
    MyFile = Dir
Loop