范围类的Excel-VBA PasteSpecial方法失败

Excelmacros旨在使用FileToOpen将范围从一个工作簿复制到另一个工作簿。 相同的代码今天早些时候在单独的工作簿中工作。

生成的错误是运行时1004'类的PasteSpecial方法失败。 以下是失败的部分:

SrcWB.Worksheets("1").Range("A1:K35").Copy TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteValues) TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteFormats) 

粘贴特定值和格式时都会遇到错误。 我也尝试使用:

  SrcWB.Worksheets("1").Range("A1:K35").Value = TgtWB.Sheets("1").Range("A1:K35") 

上面的方法没有创build任何错误,但没有值传输到目标工作簿。

我今天下午大部分时间都在咀嚼,希望有任何帮助!

以下是完整的代码:

 Sub CopySch() Dim sh As Worksheet Dim TgtWB As Workbook Dim SrcWB As Workbook Application.EnableEvents = False Application.ScreenUpdating = False Set TgtWB = ThisWorkbook FileToOpen = Application.GetOpenFilename(FILEFILTER:="Excel Workbooks (*.xls*),*.xls*", Title:="Please select a file") If FileToOpen = False Then MsgBox "No File Specified.", vbExclamation, "ERROR" Exit Sub Else Set SrcWB = Workbooks.Open(FileToOpen, xlUpdateLinksNever, ReadOnly:=True) SrcWB.Worksheets("1").Range("A1:K35").Copy TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteValues) TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteFormats) End If Application.EnableEvents = True Application.ScreenUpdating = True SrcWB.Close End Sub 

转到你的模块的顶部,并添加“Option Explicit”。

 Option Explicit Sub CopySch() Dim sh As Worksheet Dim TgtWB As Workbook Dim SrcWB As Workbook ... 

它应该解决你的问题。

编辑:让我们再次尝试这个代码。 我已经尝试了它的工作原理没有错误。

 Option Explicit Sub CopySch() Dim sh As Worksheet Dim TgtWB As Workbook Dim SrcWB As Workbook Dim FileToOpen As String Application.EnableEvents = False Application.ScreenUpdating = False Set TgtWB = ThisWorkbook FileToOpen = Application.GetOpenFilename(FILEFILTER:="Excel Workbooks (*.xls*),*.xls*", Title:="Please select a file") If FileToOpen = "False" Then MsgBox "No File Specified.", vbExclamation, "ERROR" Exit Sub Else Set SrcWB = Workbooks.Open(FileToOpen, xlUpdateLinksNever, ReadOnly:=True) SrcWB.Worksheets("1").Range("A1:K35").Copy TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteValues) TgtWB.Sheets("1").Range("A1:K35").PasteSpecial (xlPasteFormats) End If Application.EnableEvents = True Application.ScreenUpdating = True SrcWB.Close End Sub