作者forgotnow (好想学直排轮唷!)
看板Office
标题[问题] 请问excel 批次把xlsx 转CSV
时间Wed Jul 19 00:31:18 2017
(若是和其他不同软体互动之问题 请记得一并填写)
软体: Excel
版本: 2016,企业版
不好意思, 因为需要大量把xlsx档案转成csv (但是之前没碰过VB)
在参考了板上的文章
https://webptt.com/cn.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/cn.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