還有我們要改變幾件事情。
首先,養成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