標題:
[發問]
VBA 輸入日期 讀取檔案後分類放進資料夾
[打印本頁]
作者:
mark126
時間:
2011-5-19 16:05
標題:
VBA 輸入日期 讀取檔案後分類放進資料夾
本帖最後由 mark126 於 2011-5-20 10:33 編輯
我現在有很多檔案在C:\app 裡 檔案名稱為arlm_yyyy-mm-dd.csv
yyyy=年 mm=月 dd=日
我想用vba的巨集做出 輸入 年 月 日 然後去讀檔後在依輸入的年月日依序建立資料夾
資料夾為 年\月\日\檔案 例: C:\app \2011\05\19\arlm_2011-05-19.csv
抱歉沒很完整敘述
在補充一下 檔案名稱arlm是固定的只有yyyy mm dd在變
我想要的是用text box 開起巨集後再text box輸入yyyy、mm、dd
text box應該有三個分別為yyyy、mm、dd用來讀檔及建資料夾用
大概流程圖 開始→輸入 年月日→按下轉檔按鈕→讀取C:\app\arlm_yyyy-mm-dd.csv →轉檔*.xls→
→按下搬移按鈕→依yyyy、mm、dd建資料夾後放進檔案→案離開按鈕→結束
所以剛開始介面應該會有 轉檔按鈕、搬移按鈕、離開按鈕及三個輸入格
作者:
GBKEE
時間:
2011-5-20 08:50
回復
1#
mark126
試試看
Sub Ex() '複製的檔案,巨集的活頁簿,父層資料夾相同的程式碼
Dim fs As Object, F As Object, A$, MyPath$
MyPath = ThisWorkbook.Path '這活頁簿的資料夾名稱
Set fs = CreateObject("Scripting.FileSystemObject") '提供對電腦檔案系統的存取的物件
For Each F In fs.GetFolder(MyPath).Files
'**** asv 這副檔名沒見過 **********
If InStr(F, "_") And InStr(F, ".asv") Then '檔案名稱中尋找 "_" 副檔名 ".asv"
A = Mid(F, InStr(F, "_") + 1) '取的"_"之後的字串
A = Replace(A, ".xls", "") '刪掉副檔名
A = Replace(A, "-", "\") '替換"-"為"\"
If fs.FolderExists(MyPath & "\" & Mid(A, 1, 4)) = False Then '找不到[年度]的資料夾
ChDir MyPath '改變目前的目錄或檔案夾 到 MyPath
'如複製的檔案目的地與,巨集的活頁簿,父層資料夾不相同,可另設一變數取代 MyPath
MkDir Mid(A, 1, 4) '建立一個新的目錄或檔案夾。
End If
If fs.FolderExists(MyPath & "\" & Mid(A, 1, 7)) = False Then '找不到[年度月份]的資料夾
ChDir MyPath & "\" & Mid(A, 1, 4)
MkDir MyPath & "\" & Mid(A, 1, 7)
End If
If fs.FolderExists(MyPath & "\" & A) = False Then '找不 [年度月份日期]的資料夾
ChDir MyPath & "\" & Mid(A, 1, 7)
MkDir MyPath & "\" & A
End If
fs.CopyFile F, MyPath & "\" & A & "\" '複製檔案到 指定的路徑
End If
Next
ChDir MyPath '回到原目錄
End Sub
複製代碼
作者:
mark126
時間:
2011-5-20 10:08
回復
2#
GBKEE
檔案是*.CSV 抱歉
作者:
mark126
時間:
2011-5-24 22:51
回復
2#
GBKEE
大大真的很厲害~感謝你!!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)