標題:
開啟固定資料夾裡的csv(不斷新增)
[打印本頁]
作者:
die78325
時間:
2012-12-13 18:35
標題:
開啟固定資料夾裡的csv(不斷新增)
c:\下載資料夾 裡面有以下這樣的檔案 每日九點會傳過來
From(測試測試 系統發送 (
[email protected]
))_ID(
1581
)_I55447_
1212
090002
.CSV
From(測試測試 系統發送 (
[email protected]
))_ID(
1587
)_I55447_
1213
090016
.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較大的檔案嗎?? 或者是比較最後儲存日期來抓取最新的資料!(最好是兩種方式都教我^^)哈哈
目前程式為:
fs = Dir("C:\下載資料\From(測試測試 系統發送 (
[email protected]
))_ID(" & "*" & ")_I55447_" & Format(Date, "mmdd") & "*" & ".CSV")
If fs <> "" Then
Workbooks.Open "C:\下載資料\" & fs
Else:
fs = Dir("C:\統一信件\From(測試測試 系統發送 (
[email protected]
))_ID(" & "*" & ")_I55447_" & Format(Date - 1, "mmdd") & "*" & ".CSV")
If fs <> "" Then
Workbooks.Open "C:\下載資料\" & fs
Else: GoTo 離開
End If
End If
複製代碼
作者:
GBKEE
時間:
2013-4-17 16:37
本帖最後由 GBKEE 於 2013-4-18 14:46 編輯
回復
9#
die78325
試試看
Sub Ex()
Dim a As String, f As String, Fc As Object
Set Fc = CreateObject("Scripting.FileSystemObject")
'FileSystemObject 物件 提供對電腦檔案系統的存取。
a = Format(Date, "mmdd")
f = "C:\下載資料夾\From(測試測試 系統發送 (
[email protected]
))_ID(" & "*" & ")_I55447_" & a & "*" & ".CSV"
f = Dir(f)
'****因為此檔傳送來只有日期沒有年份 所以 我現在抓的資料 有時候都會抓到去年的0416的檔案****
'如此會有1個以上的檔案 用迴圈處理
Do While f <> ""
If Year(Fc.GetFile("C:\下載資料\" & f).DateLastAccessed) = Year(Date) Then
'DateLastAccessed 屬性 傳回最後一次存取指定檔案或資料夾的日期和時間。唯讀。
Workbooks.Open "C:\下載資料\" & f
End If
f = Dir
Loop
End Sub
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所建立或修改存檔的
Option Explicit
Sub Ex()
Dim a As String, f As String, Fc As Object
Set Fc = CreateObject("Scripting.FileSystemObject")
'FileSystemObject 物件 提供對電腦檔案系統的存取。
a = Format(Date, "mmdd")
f = "C:\下載資料夾\From(測試測試 系統發送 (
[email protected]
))_ID(" & "*" & ")_I55447_" & a & "*" & ".CSV"
f = Dir(f)
'****因為此檔傳送來只有日期沒有年份 所以 我現在抓的資料 有時候都會抓到去年的0416的檔案****
'如此會有1個以上的檔案 用迴圈處理
Do While f <> ""
If DateValue(Fc.GetFile("C:\下載資料\" & f).DateLastAccessed) = Date Then
'DateLastAccessed 屬性 傳回最後一次存取指定檔案或資料夾的日期和時間。唯讀。
Workbooks.Open "C:\下載資料\" & f
End If
f = Dir
Loop
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
測試看看
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/)