Excel 复制和粘贴错误导致工作簿崩溃
我在从一个电子表格复制和粘贴到另一个电子表格时遇到问题 我正在使用以下代码:Excel 复制和粘贴错误导致工作簿崩溃,excel,vba,Excel,Vba,我在从一个电子表格复制和粘贴到另一个电子表格时遇到问题 我正在使用以下代码: Sub LoadnH() Dim NF As Workbook Dim shtMain As Worksheet Set shtMain = Worksheets("Main") Dim filePath As String Dim strFileName As Variant strFileName = Application.GetOpenFilename("All File
Sub LoadnH()
Dim NF As Workbook
Dim shtMain As Worksheet
Set shtMain = Worksheets("Main")
Dim filePath As String
Dim strFileName As Variant
strFileName = Application.GetOpenFilename("All Files (*.*), *.*", , "Select File to Import", , False)
shtMain.Range("filePath").Value = strFileName
If strFileName <> False Then
Set NF = Application.Workbooks.Open(strFileName)
Application.CutCopyMode = False
NF.Sheets("Summary").Copy
Application.DisplayAlerts = False
NF.Close False
Dim nH As Worksheet
Set nH = Worksheets("Hedge Data")
nH.Activate
With nH
.Cells.Clear
.Pictures.Delete
.Range("A1").Select
.PasteSpecial xlPasteValues
End With
End If
End Sub
代码显示运行时错误“1004”:
对象“工作表”的“粘贴特殊”方法失败
如何修复此错误?很多时候,当遇到此错误时,excel也会崩溃并关闭。您可以将目标范围的值与源范围的值分配给
工作表
,而不是工作表的范围
中的数据。这将在每次运行代码时创建源工作表的新副本,但不会将工作表的数据复制到剪贴板。(NB:下面演示如何使用Before参数,该参数指示将工作表
复制到的位置)例1 此测试的结果在
Book2
上的Sheet1
之前从Book1
创建一份Sheet1
副本
例2 此示例从
Book1-Sheet1
复制单元格A1
,并将其粘贴到Book2-Sheet1
中的单元格A1
例3 本例将
Book1-Sheet1
中A1
的Value
属性指定给Book2-Sheet1
中的单元格A1
。它的结果与相同,例如2,但避免使用选择
、复制
、粘贴
等。与第二个示例相比,该方法速度更快,且通常不易出错
根据您的环境而定,第一个示例可能是最简单、最快捷的方法。虽然这并不能直接回答您的问题,但阅读一下它可以帮助解决您的问题。我已经尽可能地停止使用select,但我想不出一种方法来避免选择
.Range(“A1”).选择
.PasteSpecial xlPasteValues
Sub WorksheetCopyMethod()
Dim SourceWorksheet As Worksheet
Dim DestinationwWorksheet As Worksheet
Set SourceWorksheet = Workbooks("Book1").Sheets("Sheet1")
Set DestinationWorksheet = Workbooks("Book2").Sheets("Sheet1")
SourceWorksheet.Copy DestinationWorksheet
End Sub
Sub RangeCopyMethod()
Dim SourceWorksheet As Worksheet
Dim DestinationwWorksheet As Worksheet
Set SourceWorksheet = Workbooks("Book1").Sheets("Sheet1")
Set DestinationWorksheet = Workbooks("Book2").Sheets("Sheet1")
SourceWorksheet.Range("A1").Copy
DestinationWorksheet.Range("A1").PasteSpecial xlPasteValues
End Sub
Sub AvoidSelectMethod()
Dim SourceWorksheet As Worksheet
Dim DestinationwWorksheet As Worksheet
Set SourceWorksheet = Workbooks("Book1").Sheets("Sheet1")
Set DestinationWorksheet = Workbooks("Book2").Sheets("Sheet1")
DestinationWorksheet.Range("A1").Value = SourceWorksheet.Range("A1").Value
End Sub