我写了下面的程序,将输入表格中的单元格范围复制到输出表格。输出表是主模板的一部分。复制后,我在主工作簿上调用SaveAs函数,以使用其他名称将主工作簿保存在文件系统上。
Private Sub copyRange(inputRange As Range, outputRange As Range)
inputRange.NumberFormat = "0.00000000"
inputRange.Copy
outputRange.PasteSpecial xlPasteValuesAndNumberFormats
End Sub
我正在为我要复制的每个范围从另一个过程多次调用此函数。调用代码如下所示:
Dim InputSheet As Worksheet
Dim OutputSheet As Worksheet
Set InputSheet = Application.Workbooks.Open("C:/inputFile.xlsx", False, vbReadOnly).Worksheets("Sheet1")
Set OutputSheet = OutputSheet 'this is a sheet of master template
copyRange InputSheet.Range("E15:G28"), OutputSheet.Range("B12:D25")
copyRange InputSheet.Range("E33:G37"), OutputSheet.Range("B30:D34")
copyRange InputSheet.Range("I15:K28"), OutputSheet.Range("E12:G25")
copyRange InputSheet.Range("I33:K37"), OutputSheet.Range("E30:G34")
copyRange InputSheet.Range("M15:O28"), OutputSheet.Range("H12:J24")
copyRange InputSheet.Range("M33:O37"), OutputSheet.Range("H30:J34")
上面的代码在5次中失败大约1次,错误“粘贴范围类的特殊方法”。大多数情况下它运行正常,输出文件按预期生成。有什么办法可以防止这个错误吗?
答案 0 :(得分:1)
在尝试了很多事情之后,我终于删除了对pastespecial方法的调用。
Private Sub copyRange(inputRange As Range, outputRange As Range)
inputRange.NumberFormat = "0.00000000"
inputRange.value2 = outputRange.value2
End Sub
这种方法可以在复制范围时解决间歇性问题。