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
大家嗨之间剪切和粘贴单元格,VBA - 工作簿
我想剪切和粘贴两种不同的工作簿之间的细胞。但是我的粘贴行中出现了失败9或438。请有人帮忙。
答
一些变化
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
答
还有我们要改变几件事情。
首先,养成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
为什么从源文件复制后激活源工作簿?摆脱那条线。而是激活目标工作簿。 –
'wbSource.Activate'和第二个'Set wbTarget = ThisWorkbook'没用。将'Worksheets()'改成'Sheets()'。你最有可能在那里有一个错字:'Sheets(“Feui1”)'应该是'Sheets(“Feuil1”)',你错过了'L';) – R3uK
格式对你来说很重要吗?有这样做的更快的方法,不涉及复制+面食。 – Tyeler