Board logo

標題: [發問] 檔名不同如何判斷 [打印本頁]

作者: cowww    時間: 2023-4-25 10:42     標題: 檔名不同如何判斷

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

這是原先的檔名"日期+空格+名"
[attach]36218[/attach]

今天莫名改了檔名"日期+名"
[attach]36219[/attach]

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
作者: Andy2483    時間: 2023-4-25 11:08

回復 1# cowww


   
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
   If Dir(T & B & "每日模具異動.xlsx") <> Empty Then GoTo i02
Next
MsgBox "找不到 " & Date & " ~ " & Date - 10 & " 檔案": Exit Sub
i01: Workbooks.Open filename:=T & B & " 每日模具異動.xlsx", ReadOnly:=True:Exit Sub
i02: Workbooks.Open filename:=T & B & "每日模具異動.xlsx", ReadOnly:=True
作者: cowww    時間: 2023-4-25 11:43

回復 2# Andy2483

非常感謝Andy2483大大的解惑

我突然想到個問題,如果開啟的檔名跟"複製"&"關閉"的檔名不一樣
執行時是不是會出現異常
'複製2023.04.13 每日模具異動.xlsx中LF工作表的A欄到AG欄
Workbooks(B & " 每日模具異動.xlsx").Worksheets("LF").Columns("A:AG").Cells.Copy

'關閉六幅異動表
Workbooks(B & " 每日模具異動.xlsx").Close
作者: Andy2483    時間: 2023-4-25 11:48

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

回復 3# cowww


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

===========================
補充:
建議前輩先可以用之後再研究如何簡化,讓更易視讀
作者: cowww    時間: 2023-4-25 13:12

回復 4# Andy2483


成功了
非常感謝Andy2483大大的解惑
作者: 准提部林    時間: 2023-4-25 18:47

本帖最後由 准提部林 於 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
作者: Andy2483    時間: 2023-4-26 07:46

回復 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
作者: cowww    時間: 2023-4-26 08:57

回復 6# 准提部林

非常感謝准提部林大大的解惑
但是
找不到檔案耶
[attach]36223[/attach]
[attach]36224[/attach]
作者: Andy2483    時間: 2023-4-26 09:06

回復 8# cowww


    今天要抓的檔名  " 每日模具異動.xlsx" 前方有空白字元嗎?
作者: cowww    時間: 2023-4-26 09:45

回復 9# Andy2483

沒有空白字元
[attach]36225[/attach]
作者: Andy2483    時間: 2023-4-26 10:07

回復 10# cowww


    這樣回復代表沒問題吧!謝謝一起學習
作者: cowww    時間: 2023-4-26 14:25

回復 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




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)