返回列表 上一主題 發帖

[發問] 檔名不同如何判斷

[發問] 檔名不同如何判斷

請求各位大大的幫忙
我有個檔案早上會去開起其他檔案撈資料
有一個外單位的檔案突然改了檔名
請問要如何讓系統判斷找不到"檔名A"就去找"檔名B"

這是原先的檔名"日期+空格+名"
六幅異動表.PNG

今天莫名改了檔名"日期+名"
六幅異動表2.PNG

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

回復 6# 准提部林

非常感謝准提部林大大的解惑

我終於看懂准提部林大大提供的語法了
以下是我的認知,如有錯誤還請各位大大指教
這段語法是簡化後面"Cells.Copy" & "Close"的寫法
前面將不同的檔名(不管"每日模具異動.xlsx"前面有沒有空格或_)都設定為Set xBook,這樣後面的執行都只要寫成xBook+........就好
Dim T As String, B As String, i As Integer, xBook As Workbook
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") <> "" Then
      Set xBook = Workbooks.Open(T & B & "_每日模具異動.xlsx", ReadOnly:=True)
      Exit For
      
   ElseIf Dir(T & B & " 每日模具異動.xlsx") <> "" Then
      Set xBook = Workbooks.Open(T & B & " 每日模具異動.xlsx", ReadOnly:=True)
      Exit For
   End If
   
Next
If xBook Is Nothing Then MsgBox "找不到目標檔案": Exit Sub
End If
xBook.Sheets("LF").Columns("A:AG").Cells.Copy
' ~ do something ~
xBook.Close 0

TOP

回復 10# cowww


    這樣回復代表沒問題吧!謝謝一起學習
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 9# Andy2483

沒有空白字元
LF.PNG

TOP

回復 8# cowww


    今天要抓的檔名  " 每日模具異動.xlsx" 前方有空白字元嗎?
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

回復 6# 准提部林

非常感謝准提部林大大的解惑
但是
找不到檔案耶
找步道.PNG
LF.PNG

TOP

回復 6# 准提部林
回復 5# cowww


    謝謝論壇,謝謝前輩指導
後學學習心得註解如下,請前輩再指教



Option Explicit
Sub TEST()
Dim T$, B$, i%, xBook As Workbook
'↑宣告變數:(T,B)是字串變數,i是短整數,xBook是活頁簿變數
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") <> "" Then
   '↑如果T變數連接B變數,再連接" 每日模具異動.xlsx"組成新字串查到這檔案?
      Set xBook = Workbooks.Open(T & B & " 每日模具異動.xlsx", ReadOnly:=True)
      '↑令xBook這活頁簿變數是被打開的,
      '被打開的T變數連接B變數,再連接" 每日模具異動.xlsx"組成新字串的檔案

      Exit For
      '↑結束迴圈
   End If
Next
If xBook Is Nothing Then MsgBox "找不到目標檔案": Exit Sub
'↑如果xBook變數是沒有載入物件!就跳出提示窗,結束程式執行
xBook.Sheets("LF").Columns("A:AG").Cells.Copy
'↑繼續以變數xBook指向目標可以讓程式簡潔易視讀
'~~do something ~~
xBook.Close 0
'↑令xBook不存檔 關閉
End Sub
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

本帖最後由 准提部林 於 2023-4-25 19:55 編輯

Dim T$, B$, i%, xBook as workbook
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") <> "" Then
      set xBook=Workbooks.Open(T & B & " 每日模具異動.xlsx", ReadOnly:=True)
      exit for
Next
if xbook is nothing then MsgBox "找不到目標檔案": Exit Sub
xbook.sheets("LF").Columns("A:AG").Cells.Copy
~~do something ~~
xbook.Close 0

TOP

回復 4# Andy2483


成功了
非常感謝Andy2483大大的解惑

TOP

本帖最後由 Andy2483 於 2023-4-25 11:51 編輯

回復 3# cowww


   
On Error Resume Next
Workbooks(B & " 每日模具異動.xlsx").Close
Workbooks(B & "每日模具異動.xlsx").Close
On Error Goto 0

===========================
補充:
建議前輩先可以用之後再研究如何簡化,讓更易視讀
用行動裝置瀏覽論壇學習很方便,謝謝論壇經營團隊
請大家一起上論壇來交流

TOP

        靜思自在 : 好事要提得起,是非要放得下,成就別人即是成就自己。
返回列表 上一主題