【发布时间】:2020-03-01 14:49:21
【问题描述】:
我正在尝试从前一天的文件中复制特定单元格,并将它们作为文本粘贴到当前工作簿中的同一位置。
我只希望在星期四完成。
Sub OpenFile()
If Weekday(Now()) = vbThursday Then
FileYear = Year(Date)
FileDate = Format(Date, "yymmdd")
FilePath = "I:\Example\2020\" & Format(Now() - 1, "yymmdd") & " " & _
"Sequentieanalyse werkblad.xlsm"
Workbooks.Open (FilePath)
Range("P48:Z57").Select
Selection.Copy
ActiveWorkbook.Close False
Sheets("Monsterlijst").Select
Range("P48:Z57").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End If
End Sub
当我运行我的代码时,我收到一个消息框,提示剪贴板上有很多信息,我必须选择是、否或中止,然后是运行时错误 1004,其中一个选项。
当我使用Application.DisplayAlerts = False 时,我还会收到运行时错误 1004。
删除 ActiveWorkbook.Close False 时没有错误消息,但我的信息将粘贴回我正在复制的工作簿中,而不是当前工作簿中。
我还希望关闭前一天的文件以防止混淆。
复制部分确实有效,因为如果我取消错误消息,我可以手动粘贴它。
如果星期四是银行假日,我将如何调整代码以在星期五而不是星期四运行?
【问题讨论】:
-
复制,然后粘贴,然后关闭。不要
Select同时做任何事情。将Workbooks.Open (FilePath)的结果保存到变量 (As Workbook) 中以将其用作源工作簿。使用ThisWorkbook作为目标工作簿。 -
至于第二个问题,这是一个完全不同的问题,应该在自己的问题上发布。