返回列表 上一主題 發帖

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

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

最近寫了一段自動更新的語法
但是有遇到兩個問題
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

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

回復 24# Andy2483


非常感謝Andy2483大大精闢解說
小弟受益良多

TOP

回復 23# cowww


    謝謝前輩回復,一起學習,謝謝論壇,謝謝各位前輩
後學藉此帖複習方案,方案的心得註解如下,請前輩參考,請各位前輩指教

Option Explicit
Sub TEST()
Dim T$, B$, i%
'↑宣告變數(T,B)是字串變數,i是短整數
T = "\\shl-group.com\dept\MFMG\B.各組資料 (Team inform)\E.生管組 (PPC group)\X.自動化工具(勿刪)\模具異動-六福(急件1.9專用)\"
'↑令T這字串變數是 "資料夾位址\"
For i = 0 To 10
'↑設順迴圈!i從0 到10
   B = Format(Date - i, "yyyy.mm.dd")
   '↑令B這字串變數是 今天日期減掉i變數後的日期轉換成字串,
   '字串:4碼年2碼月2碼日中間加"."符號

   If Dir(T & B & " 每日模具異動.xlsx") <> Empty Then GoTo i01
   '↑以T變數連接 B變數,再連接 " 每日模具異動.xlsx"的新字串,
   '如果這新字串去查有這個檔案?? (PS:不是空的就是有的意思)
   '如果有這檔案就跳到 i01標示位置繼續執行

Next
MsgBox "找不到 " & Date & " ~ " & Date - 10 & " 檔案": Exit Sub
'↑當上述迴圈跑完了還找不到想要的位址與檔名檔案!
'就跳出提示窗,顯示11天區間日期沒有符合的檔案
'最後結束程式執行

i01: Workbooks.Open Filename:=T & B & " 每日模具異動.xlsx", ReadOnly:=True
'↑唯讀開啟檔案
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 22# Andy2483

我懂了
非常感謝Andy2483大大的解答

TOP

回復 21# cowww


    Empty(空的)
<>Empty(不是空的)就是有
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 20# Andy2483

成功了
非常感謝Andy2483大大解答

有個地方我看不懂
If Dir(T & B & " 每日模具異動.xlsx") <> Empty Then GoTo i01

<>為何是用不等於的符號

TOP

回復 19# cowww


    謝謝前輩再回復,一起學習
以下是學習方案,請前輩參考

Option Explicit
Sub TEST()
Dim T$, B$, i%
T = "\\shl-group.com\dept\MFMG\B.各組資料 (Team inform)\E.生管組 (PPC group)\X.自動化工具(勿刪)\模具異動-六福(急件1.9專用)\"
For i = 0 To 10
   B = Format(Date - i, "yyyy.mm.dd")
   If Dir(T & B & " 每日模具異動.xlsx") <> Empty Then GoTo i01
Next
MsgBox "找不到 " & Date & " ~ " & Date - 10 & " 檔案": Exit Sub
i01: Workbooks.Open Filename:=T & B & " 每日模具異動.xlsx", ReadOnly:=True
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 18# Andy2483


非常感謝Andy2483大大的解答
但是我還是不知道那段語法要放哪個位置
我另外做一個按鈕來測試是否能夠開啟
Sub 按鈕2_Click()
T = "\\shl-group.com\dept\MFMG\B.各組資料 (Team inform)\E.生管組 (PPC group)\X.自動化工具(勿刪)\模具異動-六福(急件1.9專用)\"

A = Format(Date, "W")
B = Format(Date, "yyyy.mm.dd")
If Dir(T & B & " 每日模具異動.xlsx") = Empty Then
   For i = 0 To 10
   B = Format(Date - i, "yyyy.mm.dd")
   If Dir(T & B & " 每日模具異動.xlsx") = Empty Then MsgBox "找不到 " & B & " 檔案": Exit Sub
   Next
End If
Workbooks.Open filename:=T & B & " 每日模具異動.xlsx", ReadOnly:=True
End Sub
只抓第一天.PNG

TOP

回復 17# cowww


For i = 0 To 10
   B = Format(Date -i, "yyyy.mm.dd")
   Msgbox B
Next
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 14# Andy2483


抱歉
Andy2483大大
我是新手(為了工作被迫學函數和VBA),不會寫迴圈

TOP

        靜思自在 : 【為善競爭】人生要為善競爭,分秒必爭。
返回列表 上一主題