Board logo

標題: 開啟固定資料夾裡的csv(不斷新增) [打印本頁]

作者: die78325    時間: 2012-12-13 18:35     標題: 開啟固定資料夾裡的csv(不斷新增)

c:\下載資料夾   裡面有以下這樣的檔案   每日九點會傳過來
From(測試測試 系統發送 ([email protected]))_ID(1581)_I55447_1212090002.CSV
From(測試測試 系統發送 ([email protected]))_ID(1587)_I55447_1213090016.CSV

紅色部份我不確定他的規律 所以 希望可以用   *  來替代
藍色部份是 日期  所以我使用
Dim a As String
a = Format(Date , "mmdd")
Workbooks.Open Filename:="C:\下載資料夾\From(測試測試 系統發送 ([email protected]))_ID(" & "*" & ")_I55447_" & a & "*" & ".CSV"

顯示找不到或名子錯誤 希望大大們解答   !!
作者: stillfish00    時間: 2012-12-13 19:46

回復 1# die78325
應該是Open不支援萬用字元吧
試試看用Dir 取得正確名稱再Open看看
紅字部分可用相同字數的問號匹配
作者: die78325    時間: 2012-12-13 22:18

回復 2# stillfish00


    可以改成這樣是嗎??
From(測試測試 系統發送 ([email protected]))_ID(????)_I55447_1213??????.CSV
大大可提供DIR教學嗎??? 我知道是偵測是否開啟檔案用的DIR  
但不知怎樣可以向你說的取得正確名稱@@" 感謝大大回復~
作者: Hsieh    時間: 2012-12-13 22:29

回復 3# die78325

fs = Dir("C:\下載資料夾\From(測試測試 系統發送 ([email protected]))_ID(" & "*" & ")_I55447_" & Format(Date, "mmdd") & "*" & ".CSV")
If fs <> "" Then Workbooks.Open fs
作者: stillfish00    時間: 2012-12-14 09:25

回復 3# die78325
同4# , 修正一下
If fs <> "" Then Workbooks.Open "C:\下載資料夾\" & fs
作者: die78325    時間: 2012-12-14 11:26

回復 5# stillfish00
回復 4# Hsieh
感謝兩位大大協助~~已成功!
作者: die78325    時間: 2012-12-17 16:02

回復 4# Hsieh


再麻煩大大!我的檔案都9點固定新增    但是我希望我中間可以不段的執行   所以 如果過了12點 就會變成找不到資料
可以做成如果今天的找不道  就倒退一天嗎      假設今天 1217     過了12點 他會變成找1218的 但是 找不道就往回找1217的!
該如何改呢??   還是乾脆就用略過錯誤等到9點就會會正常執行了 =="  !
作者: die78325    時間: 2012-12-17 16:12

回復 4# Hsieh


    大大  剛自己試一下 已解決了.......^^
作者: die78325    時間: 2013-4-17 13:41

回復 4# Hsieh


    大大 ,此程式用了一段時間 也遇到了些問題 ,雖然不段的再進修與練習寫新程式  
   但還是想不出頭緒, 因為此檔傳送來只有日期沒有年份  所以 我現在抓的資料 有時候都會抓到去年的0416的檔案 ....(但有時又會是2013正確的)不知道抓取的定義是否為隨機的
但是此附件的  ID  會一直向上增加  有辦法用DIR抓取 ID較大的檔案嗎??   或者是比較最後儲存日期來抓取最新的資料!(最好是兩種方式都教我^^)哈哈
目前程式為:
  1. fs = Dir("C:\下載資料\From(測試測試 系統發送 ([email protected]))_ID(" & "*" & ")_I55447_" & Format(Date, "mmdd") & "*" & ".CSV")
  2. If fs <> "" Then
  3. Workbooks.Open "C:\下載資料\" & fs
  4. Else:
  5. fs = Dir("C:\統一信件\From(測試測試 系統發送 ([email protected]))_ID(" & "*" & ")_I55447_" & Format(Date - 1, "mmdd") & "*" & ".CSV")
  6.         If fs <> "" Then
  7.         Workbooks.Open "C:\下載資料\" & fs
  8.         Else: GoTo 離開
  9.         End If
  10. End If
複製代碼

作者: GBKEE    時間: 2013-4-17 16:37

本帖最後由 GBKEE 於 2013-4-18 14:46 編輯

回復 9# die78325
試試看
  1. Sub Ex()
  2.     Dim a As String, f As String, Fc As Object
  3.     Set Fc = CreateObject("Scripting.FileSystemObject")
  4.     'FileSystemObject 物件   提供對電腦檔案系統的存取。
  5.     a = Format(Date, "mmdd")
  6.     f = "C:\下載資料夾\From(測試測試 系統發送 ([email protected]))_ID(" & "*" & ")_I55447_" & a & "*" & ".CSV"
  7.     f = Dir(f)
  8.     '****因為此檔傳送來只有日期沒有年份  所以 我現在抓的資料 有時候都會抓到去年的0416的檔案****
  9.     '如此會有1個以上的檔案 用迴圈處理
  10.     Do While f <> ""
  11.         If Year(Fc.GetFile("C:\下載資料\" & f).DateLastAccessed) = Year(Date) Then
  12.          'DateLastAccessed 屬性 傳回最後一次存取指定檔案或資料夾的日期和時間。唯讀。
  13.              Workbooks.Open "C:\下載資料\" & f
  14.          End If
  15.         f = Dir
  16.     Loop
  17. End Sub
  18. ub
複製代碼

作者: die78325    時間: 2013-4-18 09:46

回復 10# GBKEE


    大大 你有遠端嗎?? 可否幫我看一下??
目前 顯示沒有定義 f  

我把f 定為 string 因為是fs = dir(f) '個人想法應該是把偵測到的名稱紀錄為 fs
但下面這句就不太了解   而且顯示錯誤
If Year(Fc.GetFile(a & f).DateLastAccessed) = Year(Date) Then  '顯示找不到檔案

而且我建立按鈕  按了都沒反應   用F8 or F5 執行才會跑程式(怪事)
作者: die78325    時間: 2013-4-18 15:58

回復 10# GBKEE


    程式可行了 但是 ....他一次開兩個檔案  =="  所以沒有做篩選欸  把找到的都打開了
我去年04/18的檔案的最後修正日期為2013-03-21    今年04/18的是今天   會不會是用年份區分的關西??
可是你註解是寫說開啟最後的資料阿......~"~ G大拍謝捏  又要再麻煩您了@@"
作者: GBKEE    時間: 2013-4-18 16:16

回復 12# die78325
今年04/18的是今天 所以檔案須是今年04/18所建立或修改存檔的
  1. Option Explicit
  2. Sub Ex()
  3.     Dim a As String, f As String, Fc As Object
  4.     Set Fc = CreateObject("Scripting.FileSystemObject")
  5.     'FileSystemObject 物件   提供對電腦檔案系統的存取。
  6.     a = Format(Date, "mmdd")
  7.     f = "C:\下載資料夾\From(測試測試 系統發送 ([email protected]))_ID(" & "*" & ")_I55447_" & a & "*" & ".CSV"
  8.     f = Dir(f)
  9.     '****因為此檔傳送來只有日期沒有年份  所以 我現在抓的資料 有時候都會抓到去年的0416的檔案****
  10.     '如此會有1個以上的檔案 用迴圈處理
  11.     Do While f <> ""
  12.         If DateValue(Fc.GetFile("C:\下載資料\" & f).DateLastAccessed) = Date Then
  13.          'DateLastAccessed 屬性 傳回最後一次存取指定檔案或資料夾的日期和時間。唯讀。
  14.             Workbooks.Open "C:\下載資料\" & f
  15.          End If
  16.         f = Dir
  17.     Loop
  18. End Sub
複製代碼

作者: die78325    時間: 2013-4-18 16:29

回復 13# GBKEE


    ※今年04/18的是今天 所以檔案須是今年04/18所建立或修改存檔的※

是阿= ="  我在解說一次喔

2013/04/18 寄來的檔案   存取時間是2013/04/18 09:00   (應該單開此檔)
2012/04/18 的檔案    存取時間是 2013/03/21 06:29
卻會開啟兩個檔案
那問題是出在哪???
我試著把  a 改為 a= Format(Date - 1, "mmdd")
但是還是開兩個檔案  2013/04/17跟2012/04/17的檔案= =所以 好像開啟最後存取的語法沒反應
作者: GBKEE    時間: 2013-4-18 16:58

回復 14# die78325
測試看看
  1. Msgbox DateValue(Fc.GetFile("C:\下載資料\" & f).DateLastAccessed)
複製代碼

作者: die78325    時間: 2013-4-18 18:25

回復 15# GBKEE

Msgbox DateValue(Fc.GetFile("C:\下載資料\" & f).DateLastAccessed)

    此代碼要貼在 f = Dir(f)以下  迴圈以上
得到結果為2013/04/18   為正確的
我在想 應該是迴圈之後把舊的也開啟了
所以我在
             Workbooks.Open "C:\下載資料\" & f         後面讓他跳脫迴圈就OK了     ~>>>  : GoTo 離開

是這樣的關西嗎??   
DO While
不適執行一次是正確的就離開了  怎麼又會持續迴圈  還是我記錯了= ="!!

反正目前看起來應該是OK了....我在多測試看看  @@




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