這是我試過的代碼。但它被困在尋找細胞(Set RangeObj = Cells.find
)。Excel查找VBA無法正常工作
請檢查下面的代碼:
Sub CopyFromFile()
Dim MyFile As String
Dim erow
Dim Filepath As String
Filepath = "C:\Users\Nazmul Hossain Akash\Desktop\Play Excel\Final\"
MyFile = Dir(Filepath)
Do While Len(MyFile) > 0
If MyFile = "zmaster.xlsm" Then
Exit Sub
End If
Workbooks.Open (Filepath & MyFile)
Range("B2:D18").Copy
Set RangeObj = Cells(1, "A")
ActiveWorkbook.Close
Set RangeObj = Cells.Find(What:=RangeObj, After:=ActiveCell, _
LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False)
If RangeObj Is Nothing Then MsgBox "Not Found" Else RangeObj.Select
ActiveCell.Offset(rowOffset:=2, columnOffset:=0).Activate
ActiveSheet.PasteSpecial
MyFile = Dir
Loop
End Sub
** 1。**編碼時始終使用'Option Explicit'!你從來沒有''Dim'你的'RangeObj' ** 2 **引用範圍時總是**顯式**。當你聲明'Set RangeObj = Cells(1,「A」)'時,VBA不知道你在討論哪個工作簿和工作表,所以它會盡力猜測。你應該這樣做:'Set RangeObj = ThisWorkBook.Sheets(「Sheet1」)。Cells(1,「A」)'。 ** 3。**我相信你會遇到錯誤,因爲在設置RangeObj之後,你關閉了該工作簿......在引用你需要的工作簿時更加明確。 – ZygD
我不能在這裏定義工作表名稱,因爲每個文件都有一個名稱和他們的文件名。所以我現在用這個http://prntscr.com/7gtdn3 –