Dim wbTarget As Workbook
Dim wbSource As Workbook
Set wbTarget = ThisWorkbook
Set wbSource = Workbooks.Open("C:\Users\alibe\Desktop\PoS\Alain.xlsx")
wbSource.Worksheets("Spain").Range("plage_sp").Copy
wbSource.Activate
Set wbTarget = ThisWorkbook
wbTarget.Worksheets("Feui1").Range("A1").PasteSpecial xlPasteAll
wbTarget.Save
wbTarget.Close
大家好,
我正在尝试在两个不同的工作簿之间剪切和粘贴单元格。但是我的Paste行中遇到了失败9或438。请有人帮忙。
答案 0 :(得分:1)
我们想要改变一些事情。
首先,养成excel检查文件位置是否存在的习惯是一种好习惯。您可能认为自己已正确使用它,但始终最好确保excel有同样的感觉。 (这也使您的代码更易于以后使用。)
打开工作簿并关闭它们时,没有理由让系统陷入困境,试图快速打开新窗口。由于我们不需要查看它正在做什么,只是它完成了它,我们可以将ScreenUpdating
和DisplayAlerts
设置为false,直到我们的代码结束。
您应该检查工作表上的拼写" Feui1",它实际上并不是" Feuil"。
对于按工作簿定义不同范围的应用,我们需要使用.Sheets()
对象而不是.Worksheets()
此外,当您打开另一个文件时,看到您将此代码放在您要关闭的同一文件中并不常见。在此例程结束时,ThisWorkbook
将关闭,wbSource
将保持打开状态。这是故意的吗?只是我认为我指出的东西。
Sub CopyPasta()
Dim wbTarget As Workbook: Set wbTarget = ThisWorkbook
Dim wbSource As Workbook, sourceFile As String
sourceFile = "C:\Users\alibe\Desktop\PoS\Alain.xlsx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If Dir(sourceFile) = "" Then 'Checks that file location exists
MsgBox "File not found.", vbCritical, "Bad File Address"
Exit Sub
End If
Set wbSource = Workbooks.Open(sourceFile)
wbSource.Sheets("Spain").Range("plage_sp").Copy
wbTarget.Sheets("Feuil").Range("A1").PasteSpecial xlPasteAll 'Spelling on 'Feuil'
Application.ScreenUpdating = True
Application.DisplayAlerts = True
wbTarget.Save
wbTarget.Close 'You want to close the workbook that this code is in?
End Sub
答案 1 :(得分:-3)
几乎没有变化
Dim wbTarget As Workbook
Dim wbSource As Workbook
Set wbTarget = ThisWorkbook
Set wbSource = Workbooks.Open("C:\Users\alibe\Desktop\PoS\Alain.xlsx")
wbSource.Sheets("Spain").Range("plage_sp").Copy
wbTarget.Sheets("Feui1").Range("A1").PasteSpecial Paste:=xlPasteAll
wbTarget.Save
wbTarget.Close