因此,在我的工作中,我试图创建一个主文件,该文件将来自固定单元格的信息从不同的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
答案 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