作者forgotnow (好想學直排輪唷!)
看板Office
標題[問題] 請問excel 批次把xlsx 轉CSV
時間Wed Jul 19 00:31:18 2017
(若是和其他不同軟體互動之問題 請記得一併填寫)
軟體: Excel
版本: 2016,企業版
不好意思, 因為需要大量把xlsx檔案轉成csv (但是之前沒碰過VB)
在參考了板上的文章
https://webptt.com/m.aspx?n=bbs/Office/M.1241585891.A.45C.html
試著稍微修改, 不曉得為何轉檔出來的檔案, 檔名一樣為*.xlsx,
而且會出現,
"Excel 無法開啟檔案,因為檔案格式或副檔名無效,請確認檔案沒有毀損,
且副檔名符合檔案的格式。"
大大感謝~
---我修改的code如下--
Sub Macro1()
Dim path As String
Dim obApp As New Excel.Application
Dim myFso: Set myFso = CreateObject("Scripting.FileSystemObject")
Dim wbnew
'要處理的目錄
path_IN = "C:\Users\Desktop\temp2\test\"
path_OUT = "C:\Users\Desktop\temp2\csv\"
obApp.DisplayAlerts = False
obApp.ScreenUpdating = False
Dim myfiles: Set myfiles = myFso.GetFolder(path_IN).Files
For Each myFile In myfiles
Set wbnew = obApp.Workbooks.Open(path_IN & myFile.Name)
With wbnew.Worksheets(1)
End With
'存檔並改成 excel 格式
wbnew.SaveAs Filename:=path_OUT & myFile.Name, FileFormat:=xlCSV
wbnew.Close
Set wbnew = Nothing
Next
obApp.ScreenUpdating = True
obApp.DisplayAlerts = True
Set obApp = Nothing
MsgBox ("完成!")
End Sub
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.136.158.53
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1500395482.A.3E1.html
1F:→ soyoso: 測試saveas內的myfile.name如副檔名相同的話,可以replace 07/19 01:00
2F:→ soyoso: 將".xlsx"取代為"" 07/19 01:00
3F:→ soyoso: 如不相同的話,以left,取字元可用instrrev(如主檔名內有 07/19 01:01
4F:→ soyoso: 可能出現點號 .,如不出會出現的話可以instr判斷點號的位 07/19 01:02
5F:→ soyoso: 置 07/19 01:02
6F:→ soyoso: 或以getbasename來取得myfile.path的檔名(無副檔名)部分 07/19 01:18
7F:→ forgotnow: 謝謝, 檔名一樣, 我試用replace成功囉~耶! 07/19 03:47
8F:→ forgotnow: 不過每一個檔案都很大(約200mb),讀好久...q_q 07/19 03:52