VBA - Cut&在工作簿之间粘贴单元格

时间:2016-10-10 12:42:55

标签: excel vba excel-vba

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。请有人帮忙。

2 个答案:

答案 0 :(得分:1)

我们想要改变一些事情。

首先,养成excel检查文件位置是否存在的习惯是一种好习惯。您可能认为自己已正确使用它,但始终最好确保excel有同样的感觉。 (这也使您的代码更易于以后使用。)

打开工作簿并关闭它们时,没有理由让系统陷入困境,试图快速打开新窗口。由于我们不需要查看它正在做什么,只是它完成了它,我们可以将ScreenUpdatingDisplayAlerts设置为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