Sub 自動取得()
Dim strYear As String
strPath = Excel.ActiveWorkbook.Path & "" & Format(Date, "yyyy")
Filename = Format(Date, "yyyymmdd")
fday = Day(Date) ' 天數
Cells(2, 2) = "=vlookup(" & Chr(65) & 2 & ",'" & strPath & "\[" & Filename & ".xlsx]工作表1'!$A$2:$E$6,5,FALSE)"
End Sub
請教各位
這段程式碼主要是將抓取當天日期檔案裡的某些儲存格的數值
但是執行後,都會出現要我手動選取檔案
我確定檔案是放在同一個資料夾裡面,SHEET名稱也是工作表1
謝謝
Sub 自動取得()
Dim strYear As String
strPath = Excel.ActiveWorkbook.Path & "\" & Format(Date, "yyyy") & "\"
Filename = Format(Date, "yyyymmdd")
fday = Day(Date) ' 天數
strFormula = "=vlookup(A2,'" & strPath & "[" & Filename & ".xlsx]工作表1'!$A$2:$E$6,5,FALSE)"
MsgBox strFormula, vbOKOnly
Cells(2, 2) = strFormula
End Sub
問題的原因很單純
就是「找不到檔案」
我不知道你的路徑長怎樣
上面的程式碼是假設
若目前目錄是 c:\home\user\excel
則 20170331.xlsx 放在 c:\home\user\excel\2017 目錄下
MsgBox 可以把一些變數值顯示出來
debug 時很好用
debug 之後可以拿掉或註解掉
還有一點小建議
不管寫什麼程式語言
除了註解和說明之外
不要寫中文(變數名稱、函式名稱...)
看起來很不專業
因為你在B2欄位輸入了vlookup函數,而參照的位置又是別的檔案,所以會跳出檔案視窗,這是輸入參照時的特性,你可以試著在儲存格中輸入完整的公式(包含檔案路徑),例如:
=VLOOKUP(A2,'你的路徑[20170331.xlsx]工作表1'!$A$2:$E$6,5,FALSE)
然後按ENTER,你會發現還是跳檔案視窗讓你選檔案.
一般來說都已寫巨集了應該沒有必要在使用巨集寫入公式到儲存格中,若不是需要參考來源的變動值(取得後不會變動)可以參考以下做法
Sub GetValue()
Dim FP As String
Set FP = GetObject(Excel.ActiveWorkbook.Path & "\" & Format(Date, "yyyymmdd") & "\" & Format(Date, "yyyymmdd") & ".xls")
fday = Day(Date) ' 天數
Cells(2, 2) = Application.VLookup(Range("A2"), FP.Sheets("工作表1").[A2:E6], 5, False)
End Sub
說明:
在巨集中使用 Vlookup 函數取得對應值後寫入指定的儲存格