Board logo

標題: [發問] 如何變更資料夾內所有檔案的檔案類型? [打印本頁]

作者: 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

多看看,世界會變大
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Path As String, A As String
  4.     Path = ThisWorkbook.Path  '請修改為你的資料夾
  5.     A = Dir(Path & "\*.CSV")
  6.     Do While A <> ""
  7.         Name Path & "\" & A As Path & "\" & Replace(A, ".csv", ".xls")
  8.         A = Dir
  9.     Loop
  10. 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
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Path As String, A As String
  4.     Path = ThisWorkbook.Path  '請修改為你的資料夾
  5.     A = Dir(Path & "\*.CSV")
  6.     Do While A <> ""
  7.         With Workbooks.Open(Path & "\" & A)
  8.             .SaveAs Filename:=Path & "\" & Replace(A, ".csv", ".xls"), FileFormat:=xlExcel8
  9.             .Close True
  10.         End With
  11.         Kill Path & "\" & A
  12.         A = Dir
  13.     Loop
  14. 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


  將  xlExcel8 改成 xlExcel56
還是顯示"變數未定義"題式框。

作者: 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
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Path As String, A As String, B As String
  4.     Path = ThisWorkbook.Path  '請修改為你的資料夾
  5.     A = Dir(Path & "\*.CSV")
  6.     Do While A <> ""
  7.         Name Path & "\" & A As Path & "\" & Replace(A, ":", "")
  8.         A = Replace(A, ":", "")
  9.          With Workbooks.Open(Path & "\" & A)
  10.              .SaveAs Filename:=Path & "\" & Replace(A, ".csv", ".xls"), FileFormat:=xlNormal
  11.              .Close True
  12.          End With
  13.         A = Dir
  14.     Loop
  15. 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/)