范围 class 的特殊粘贴失败
PasteSpecial of Range class failed
我正在尝试 select 复制 "database" 工作簿中的所有内容。并将其粘贴到当前工作簿中,sheet 5. 我使用的代码如下。
Sub Import()
Dim DBaseWB As Workbook
Set DBaseWB = Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False)
' set DBaseWB as the database workbook after opening it from sharepoint.
Dim DBaseSheet As Worksheet
Set DBaseSheet = DBaseWB.Sheets(1) 'DBaseSheet is referenced to sheet 1 of Database workbook.
Sheet5.Cells.Clear
DBaseSheet.UsedRange.Copy 'Copy everything from the database
Sheet5.Range("A1").PasteSpecial xlPasteAll 'Paste everything in sheet 5 of current workbook
Application.DisplayAlerts = False
DBaseWB.Close saveChanges:=False
Application.DisplayAlerts = True
End Sub
我在 运行 以下代码时收到错误消息。虽然,有时它不会给我一个错误。
Run-time error '1004': PasteSpecial method of Range class failed
我想我知道为什么它在 PasteSpecial 行给我一个错误。当我在 sheet 5 中有一个不同的单元格 selected 时,它没有给我任何错误。但是当我重新检查时,没有 selecting 任何其他单元格(因此它将具有粘贴的范围 selected),我得到这个错误。
我尝试在复制和特殊粘贴之间使用以下行,
Sheet5.range("A1").select
它给了我同样的错误。
------------更新----------
我首先使用了 DisplayName 的解决方案,直到昨天它仍然有效。但是今天早上,它引起了问题。这是另一个错误。然后我尝试了所有其他解决方案但没有运气。都给了我同样的错误。我还在下面的解决方案中添加了 workbook.worksheet ,这让我很不走运。这次错误是复制方法。我还注意到很多专栏都说#REF.
我试过的版本:
DisplayName 的解决方案结合此workbook.worksheet
Sheet5.UsedRange.Clear
With Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False) 'open and reference your Database workbook
.Sheets(1).UsedRange.Copy Destination:=ThisWorkbook.Sheets(5).Range("A1") ' copy referenced workbook sheet 1 content and paste it to sheet 5
.Close False
End With
Gary's Student 的解决方案与此相结合workbook.worksheet
Dim DBaseWB As Workbook
Set DBaseWB = Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False)
' set DBaseWB as the database workbook after opening it from sharepoint.
Dim DBaseSheet As Worksheet
Set DBaseSheet = DBaseWB.Sheets(1) 'DBaseSheet is referenced to sheet 1 of Database workbook.
Dim Destination As Worksheet
Set DestinSh = ThisWorkbook.Sheets(5)
Sheet5.Cells.Clear
DBaseSheet.UsedRange.Copy DestinSh.Range("A1").PasteSpecial 'copy database info in planning tool.
Application.DisplayAlerts = False
DBaseWB.Close saveChanges:=False
Application.DisplayAlerts = True
错误:
Run-time error '1004': Copy method of Range class failed
首先确保任一工作表上没有合并单元格,然后尝试:
DBaseSheet.UsedRange.Copy Sheet5.Range("A1")
你可以简单地去:
Sub Import()
Sheet5.UsedRange.Clear
With Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False) 'open and reference your Database workbook
.Sheets(1).UsedRange.Copy Destination:=Sheet5.Range("A1") ' copy referenced workbook sheet 1 content and paste it to sheet 5
.Close False
End With
End Sub
我支持布鲁斯·韦恩
由于您打开了一个新的工作簿,因此焦点现在位于该工作簿上。
如果您在启动新工作簿并切换焦点后尝试清除代码所在的工作簿中的单元格并切换焦点,则需要引用原始工作簿来执行此操作,如下所示:
ThisWorkbook.Sheets(5).Cells.Clear
希望对您有所帮助
我正在尝试 select 复制 "database" 工作簿中的所有内容。并将其粘贴到当前工作簿中,sheet 5. 我使用的代码如下。
Sub Import()
Dim DBaseWB As Workbook
Set DBaseWB = Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False)
' set DBaseWB as the database workbook after opening it from sharepoint.
Dim DBaseSheet As Worksheet
Set DBaseSheet = DBaseWB.Sheets(1) 'DBaseSheet is referenced to sheet 1 of Database workbook.
Sheet5.Cells.Clear
DBaseSheet.UsedRange.Copy 'Copy everything from the database
Sheet5.Range("A1").PasteSpecial xlPasteAll 'Paste everything in sheet 5 of current workbook
Application.DisplayAlerts = False
DBaseWB.Close saveChanges:=False
Application.DisplayAlerts = True
End Sub
我在 运行 以下代码时收到错误消息。虽然,有时它不会给我一个错误。
Run-time error '1004': PasteSpecial method of Range class failed
我想我知道为什么它在 PasteSpecial 行给我一个错误。当我在 sheet 5 中有一个不同的单元格 selected 时,它没有给我任何错误。但是当我重新检查时,没有 selecting 任何其他单元格(因此它将具有粘贴的范围 selected),我得到这个错误。
我尝试在复制和特殊粘贴之间使用以下行,
Sheet5.range("A1").select
它给了我同样的错误。
------------更新----------
我首先使用了 DisplayName 的解决方案,直到昨天它仍然有效。但是今天早上,它引起了问题。这是另一个错误。然后我尝试了所有其他解决方案但没有运气。都给了我同样的错误。我还在下面的解决方案中添加了 workbook.worksheet ,这让我很不走运。这次错误是复制方法。我还注意到很多专栏都说#REF.
我试过的版本:
DisplayName 的解决方案结合此workbook.worksheet
Sheet5.UsedRange.Clear
With Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False) 'open and reference your Database workbook
.Sheets(1).UsedRange.Copy Destination:=ThisWorkbook.Sheets(5).Range("A1") ' copy referenced workbook sheet 1 content and paste it to sheet 5
.Close False
End With
Gary's Student 的解决方案与此相结合workbook.worksheet
Dim DBaseWB As Workbook
Set DBaseWB = Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False)
' set DBaseWB as the database workbook after opening it from sharepoint.
Dim DBaseSheet As Worksheet
Set DBaseSheet = DBaseWB.Sheets(1) 'DBaseSheet is referenced to sheet 1 of Database workbook.
Dim Destination As Worksheet
Set DestinSh = ThisWorkbook.Sheets(5)
Sheet5.Cells.Clear
DBaseSheet.UsedRange.Copy DestinSh.Range("A1").PasteSpecial 'copy database info in planning tool.
Application.DisplayAlerts = False
DBaseWB.Close saveChanges:=False
Application.DisplayAlerts = True
错误:
Run-time error '1004': Copy method of Range class failed
首先确保任一工作表上没有合并单元格,然后尝试:
DBaseSheet.UsedRange.Copy Sheet5.Range("A1")
你可以简单地去:
Sub Import()
Sheet5.UsedRange.Clear
With Workbooks.Open("http://collaboration.pwc.ca/team/Plant5EngineLines/Documents/Plant 5 master build plan/Database.xlsm", UpdateLinks:=False) 'open and reference your Database workbook
.Sheets(1).UsedRange.Copy Destination:=Sheet5.Range("A1") ' copy referenced workbook sheet 1 content and paste it to sheet 5
.Close False
End With
End Sub
我支持布鲁斯·韦恩
由于您打开了一个新的工作簿,因此焦点现在位于该工作簿上。
如果您在启动新工作簿并切换焦点后尝试清除代码所在的工作簿中的单元格并切换焦点,则需要引用原始工作簿来执行此操作,如下所示:
ThisWorkbook.Sheets(5).Cells.Clear
希望对您有所帮助