返回列表 上一主題 發帖

[發問] 更新日期+假日不更新

[發問] 更新日期+假日不更新

最近寫了一段自動更新的語法
但是有遇到兩個問題
1.
外單位的Excel檔名會依照日期去修改,要如何寫VBA讓抓取的指定路徑名稱跟日期一樣
Workbooks.Open ("\\SMK\B.各組資料 (Team inform)\E.生管組 (PPC group)\D.生產相關\2.每日模具異動\模具異動-六福\2023.04.13 每日模具異動.xlsx")
Workbooks.Open ("\\SMK\B.各組資料 (Team inform)\E.生管組 (PPC group)\X.自動化工具(勿刪)\模具異動-六福(急件1.9專用)\LF每日模具異動.xlsx")
Workbooks("LF每日模具異動.xlsx").Worksheets("LF").Range("A:AG").ClearContents
Workbooks("2023.04.13 每日模具異動.xlsx").Worksheets("LF").Columns("A:AG").Cells.Copy
Workbooks("LF每日模具異動.xlsx").Worksheets("LF").Range("A:AG").PasteSpecial Paste:=xlPasteValues
六幅異動表.PNG
2023-4-13 11:30


2.
六日無人上班所以不會更新,要如何寫VBA讓系統遇到假日不執行更新
Private Sub Workbook_Open()
    Application.OnTime TimeValue("06:00:00"), "full_calc"
End Sub

回復 1# cowww


    謝謝論壇,謝謝各位前輩,謝謝前輩發表此主題
後學學習的建議如下:

Sub Format_Date() '每週的第一天是星期日
MsgBox "-六福\" & Format(Date, "yyyy.mm.dd") & " 每日模具異動.xlsx"
MsgBox Format("2023/4/13", "W")
End Sub
'其他非六.日國定假日.補假.補班須要對照表,請參考
http://forum.twbts.com/thread-23838-1-1.html
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 2# Andy2483

非常感謝Andy2483大大的解答
第一個問題解決了

第二個解決辦法,小弟真的看不懂
可以請Andy2483大大說明嗎??
其實我的需求很簡單,遇到六日時就讓VBA去抓星期五的日期就好
補班or連假的問題可以先避開沒關係

TOP

回復 3# cowww

謝謝前輩再回復
"遇到六日時就讓VBA去抓星期五的日期就好"
後學對此情境的解決方案如下,請前輩參考

Sub 六日抓五() '每週的第一天是星期日
Dim A%, B$
A = Format(Date, "W")
B = Format(Switch(A = 7, Date - 1, A = 1, Date - 2, A > 1, Date), "yyyy.mm.dd")
MsgBox B
End Sub
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 4# Andy2483

因為自動執行的時間是指定在早上06:00開始,也就是說抓的外單位檔案名稱的日期會是昨天的(過了00:00)
Private Sub Workbook_Open()
    Application.OnTime TimeValue("06:00:00"), "full_calc"
End Sub

請問Andy2483大大,可不可以把Workbooks.Open......"B"改成"B-1"就可以在早上06:00自動執行時抓到昨天日期的外單位資料??
A = Format(Date, "W")
B = Format(Switch(A = 7, Date - 1, A = 1, Date - 2, A > 1, Date), "yyyy.mm.dd")
Workbooks.Open ("\\SMK\B.各組資料 (Team inform)\E.生管組 (PPC group)\D.生產相關\2.每日模具異動\模具異動-六福\" & B - 1 & " 每日模具異動.xlsx")

TOP

回復 5# cowww


    B = Format(Switch(A = 7, Date - 1, A = 1, Date - 2, A > 1, Date) -1, "yyyy.mm.dd")
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 6# Andy2483

非常感謝Andy2483大大的指導

請問紅色字體那段哪裡寫錯了??
2023.04.14 每日模具異動->是因為日期和文字之間有一個空格造成的嗎??
'開啟六幅異動表
A = Format(Date, "W")
B = Format(Switch(A = 7, Date - 1, A = 1, Date - 2, A = 2, Date - 3, A > 2, Date - 1), "yyyy.mm.dd")
MsgBox B
Workbooks.Open ("\\SMK\B.各組資料 (Team inform)\E.生管組 (PPC group)\D.生產相關\2.每日模具異動\模具異動-六福\" & B & " 每日模具異動.xlsx")
123.PNG
2023-4-14 08:04


MsgBox B->顯示的日期沒有問題

msgbox

訊息方塊.PNG
2023-4-14 08:12

TOP

本帖最後由 Andy2483 於 2023-4-14 08:32 編輯

回復 7# cowww

出現什麼錯誤訊息嗎?
看得懂是應該的,懂得應用才像學生,臉皮厚點學會更謹慎積極

TOP

回復 8# Andy2483


非常抱歉
剛剛檢查了所有會使用到的excel發現
六幅異動表的日期在凌晨03:21就更新日期
以前都是早上08:00之後才更改,所以自動執行的時間我才會設定06:00
六福.PNG
2023-4-14 08:47


剛剛把語法改成A>1,date就沒問題了

非常感謝Andy2483大大的指導

TOP

回復 7# cowww

請問這段判斷式哪裡寫錯了
我希望系統先去找當天日期的異動表,可是它都是去找昨天的日期
如果"有"->執行If
如果"沒有"->再Else
A = Format(Date, "W")
If B = Format(Date, "yyyy.mm.dd") Then
Workbooks.Open ("\\shl-group.com\dept\MFMG\B.各組資料 (Team inform)\E.生管組 (PPC group)\D.生產相關\2.每日模具異動\模具異動-六福\" & B & " 每日模具異動.xlsx")

Else: B = Format(Switch(A = 7, Date - 1, A = 1, Date - 2, A = 2, Date - 3, A > 2, Date - 1), "yyyy.mm.dd")
Workbooks.Open ("\\shl-group.com\dept\MFMG\B.各組資料 (Team inform)\E.生管組 (PPC group)\D.生產相關\2.每日模具異動\模具異動-六福\" & B & " 每日模具異動.xlsx")

TOP

        靜思自在 : 脾氣嘴巴不好,心地再好也不能算是好人。
返回列表 上一主題