標題:
[發問]
如何變更資料夾內所有檔案的檔案類型?
[打印本頁]
作者:
papaya
時間:
2019-3-9 04:37
標題:
如何變更資料夾內所有檔案的檔案類型?
本帖最後由 papaya 於 2019-3-9 04:42 編輯
[attach]30198[/attach]
想一次將一個資料夾內的
所有
Microsoft Office Excel 逗點分隔值檔案 (.csv)
都更改為
Microsoft Excel 工作表 (.xls)檔案。
請問︰有什麼方法或語法可以解決?
謝謝!
作者:
GBKEE
時間:
2019-3-9 09:40
多看看,世界會變大
Option Explicit
Sub Ex()
Dim Path As String, A As String
Path = ThisWorkbook.Path '請修改為你的資料夾
A = Dir(Path & "\*.CSV")
Do While A <> ""
Name Path & "\" & A As Path & "\" & Replace(A, ".csv", ".xls")
A = Dir
Loop
End Sub
複製代碼
回復
1#
papaya
作者:
papaya
時間:
2019-3-9 11:29
回復
2#
GBKEE
超版大:您好!
不好意思,請問:
1_程式碼要貼到哪裡?
2_要如何操作?
謝謝您!
作者:
GBKEE
時間:
2019-3-9 13:24
回復
3#
papaya
Path = ThisWorkbook.Path '修改為csv的資料夾
程式碼可貼在任何模組上
早上程式寫好沒確認轉為xls檔事是否正確
剛確認 name 無法改csv的檔案性質為.xls
請改用 .SaveAs 然後在 Kill csv
Option Explicit
Sub Ex()
Dim Path As String, A As String
Path = ThisWorkbook.Path '請修改為你的資料夾
A = Dir(Path & "\*.CSV")
Do While A <> ""
With Workbooks.Open(Path & "\" & A)
.SaveAs Filename:=Path & "\" & Replace(A, ".csv", ".xls"), FileFormat:=xlExcel8
.Close True
End With
Kill Path & "\" & A
A = Dir
Loop
End Sub
複製代碼
作者:
papaya
時間:
2019-3-9 13:59
本帖最後由 papaya 於 2019-3-9 14:04 編輯
回復
4#
GBKEE
[attach]30201[/attach]
超版大:您好!
程式碼可貼在任何模組上=>
是指選擇資料夾內任一個檔案嗎?還是在同一個資料夾內新增一個excel.xls檔案?
程式碼貼到"今日總表(均值排序)-1_1-(基準日:2019-03-05)"的模組1後,點上方"執行"=>顯示FileFormat:=
xlExcel8
=>
"變數未定義"
請問:要如何修改?謝謝您!
PS:
1_
請問:是
一次
改
一個檔案
的副檔名嗎?還是
一次
可以將資料夾內的
所有檔案
的副檔名由.cvs改為.xls
2_
我的作業系統為
Win7
謝謝您!
作者:
GBKEE
時間:
2019-3-10 06:39
本帖最後由 GBKEE 於 2019-3-10 06:44 編輯
回復
5#
papaya
xlExcel8 改成 56 試試
Do While A <> ""
跑迴圈 一個個的改成xls
作者:
papaya
時間:
2019-3-10 10:53
回復
6#
GBKEE
將 xlExcel
8
改成 xlExcel
56
還是顯示"
變數未定義
"題式框。
作者:
jackyq
時間:
2019-3-10 11:03
回復
7#
papaya
use
xlNormal 或 xlExcel9795 或 xlExcel7
作者:
GBKEE
時間:
2019-3-10 11:27
本帖最後由 GBKEE 於 2019-3-10 11:33 編輯
回復
7#
papaya
如是2003版 改成
FileFormat:=
xlNormal
如不是2003版
xlExcel8 參數 改成
FileFormat:=
56
作者:
papaya
時間:
2019-3-10 11:52
回復
8#
jackyq
採用
xlNormal
=>OK!謝謝您^^
作者:
papaya
時間:
2019-3-10 12:43
本帖最後由 papaya 於 2019-3-10 12:57 編輯
回復
9#
GBKEE
採用xlNormal=>OK了!
但後續有產生一些小問題~
打開更改類型後的檔案會顯示"
復原_Sheet1
"名稱的工作表︰
[attach]30207[/attach]
請問︰
能利用程式將更改後的檔案內的工作表名稱不變(本來的"工作表名稱"就是與"檔案名稱"
相同
的)
或
將更改後檔案(EX︰今日總表(均值排序)-1_1-(基準日:2019-03-05))的提示框點"
關閉
",並將工作表名稱"
復原_Sheet1
"
再改為=
"
檔案名稱
"~
[attach]30208[/attach]
謝謝您^^
作者:
GBKEE
時間:
2019-3-11 07:31
本帖最後由 GBKEE 於 2019-3-11 07:32 編輯
回復
11#
papaya
你的CSV 檔是從網路下載嗎? (可能裡面有不可見字元)
沒辦法用VBA將(復原_Sheet1"改為="檔案名稱
作者:
papaya
時間:
2019-3-11 10:44
回復
11#
papaya
是的!我的csv檔是從網路下載而來。
不好意思,第1次接觸改檔的問題,麻煩您許多^^"
謝謝您耐心的為我解惑~感恩
PS:可否勞駕您將下列2個發問題
刪除
~
http://forum.twbts.com/thread-21580-1-1.html
http://forum.twbts.com/thread-21562-1-1.html
謝謝您^^"
作者:
papaya
時間:
2019-3-20 06:04
本帖最後由 papaya 於 2019-3-20 06:05 編輯
回復
12#
GBKEE
[attach]30249[/attach]
[attach]30250[/attach]
GBKEE超版大:
剛剛發現下載後的.csv檔案,以手動點
重新命名
,將其檔案名稱中的
︰
(冒號)改為
空白
後,其工作表的名稱中的
︰
(冒號)也會自動改為
空白
,
所以可否請您在將資料夾內的.csv檔案更改為.xls檔案
之前
,先將資料夾內所有的.csv檔案之名稱中的
︰
(冒號) 改為
空白
後,再將資料夾內的.csv檔案更改為.xls檔案。
如果上述的步驟VBA語法可以達成,尚請您再次賜教。
謝謝您^^
作者:
papaya
時間:
2019-3-21 07:06
回復
12#
GBKEE
超版大:
不好意思,忘了附上測試用的檔案。補上~~~
[attach]30265[/attach]
作者:
papaya
時間:
2019-3-21 07:42
本帖最後由 papaya 於 2019-3-21 07:46 編輯
回復
12#
GBKEE
補充說明:
因為目前有將各個檔案先以重新命名手動將資料夾內的檔案名稱中的
︰
(冒號)一個一個改為
空白
後,再以您的解答檔執行更改檔案類型~測試成功。
所以才想是否能將上述的手動過程,以程式語法代之?
如果可行,煩請您賜教!謝謝您!
作者:
GBKEE
時間:
2019-3-21 11:26
本帖最後由 GBKEE 於 2019-3-21 15:01 編輯
回復
16#
papaya
Option Explicit
Sub Ex()
Dim Path As String, A As String, B As String
Path = ThisWorkbook.Path '請修改為你的資料夾
A = Dir(Path & "\*.CSV")
Do While A <> ""
Name Path & "\" & A As Path & "\" & Replace(A, ":", "")
A = Replace(A, ":", "")
With Workbooks.Open(Path & "\" & A)
.SaveAs Filename:=Path & "\" & Replace(A, ".csv", ".xls"), FileFormat:=xlNormal
.Close True
End With
A = Dir
Loop
End Sub
複製代碼
作者:
papaya
時間:
2019-3-21 12:31
回復
17#
GBKEE
超版大:
以15#的附件範例測試~沒有成功^^"
[attach]30267[/attach]
[attach]30268[/attach]
我不知是什麼原因?敬請賜正!謝謝您!
作者:
papaya
時間:
2019-3-21 15:16
回復
17#
GBKEE
超版大:
OK了!
感謝您多次的耐心幫忙
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)