范围类的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