24小时热门版块排行榜    

查看: 911  |  回复: 9

starfriend

金虫 (正式写手)

[求助] Excel数据批量保存成文件 已有2人参与

想要批量保存文件,却不知如何下手。
比如有101列数据,第1列为X,第2列到第101列为Y1, Y2, ..., Y100。如何批量保存(X, Y1)为一个文件,以此类推,..., (X,Y100)为第100个文件;同时都保存文件名为1,2,...,100,格式为Tab delimited (.txt)。
小弟对语言不是很精通~请问如何实现?越简单越好~多谢各位!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

starfriend

金虫 (正式写手)

大神们去哪儿了?
2楼2015-01-28 04:18:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingxb

金虫 (正式写手)

迷途书虫

【答案】应助回帖

感谢参与,应助指数 +1
这种活可以直接用python来做,将execle文件作为一个对象打开,读入写出,相当简单。
http://sites.google.com/site/nwnuatom/个人网站,欢迎猛击乱点!
3楼2015-01-28 09:43:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

me_yu

木虫 (正式写手)

标记一下

[ 发自小木虫客户端 ]
听,寂静的夜里,田野里蛙声和虫鸣,好不欢快!
4楼2015-01-28 17:56:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouxiaochun

铁杆木虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
starfriend: 金币+50, ★★★★★最佳答案, Nice assist 2015-01-29 07:39:21
直接给代码,附件上传几次都没成功。

Sub SaveAsFiles()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim lj     As String
    Dim newfile As Object
    Dim mainfilename As String
    lj = ActiveWorkbook.Path
    mainfilename = ActiveWorkbook.Name
    For i = 1 To [iv2].End(xlToLeft).Column - 1
        Set newfile = Workbooks.Add
        Workbooks(mainfilename).Sheets(1).Columns(1).Copy newfile.Sheets(1).Cells(1, 1)
        Workbooks(mainfilename).Sheets(1).Columns(i + 1).Copy newfile.Sheets(1).Cells(1, 2)
        newfile.SaveAs Filename:=lj & "/" & i & ".xls"
        newfile.SaveAs Filename:=lj & "/" & i & ".txt", FileFormat:=xlText, CreateBackup:=False
        newfile.Close False
    Next
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    MsgBox "共完成" & i - 1 & "组拆分"
End Sub
5楼2015-01-28 23:57:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

starfriend

金虫 (正式写手)

引用回帖:
5楼: Originally posted by zhouxiaochun at 2015-01-28 23:57:48
直接给代码,附件上传几次都没成功。

Sub SaveAsFiles()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim lj     As String
    Dim newfile As Object
    Dim ma ...

是用EXCEL 的VBA吧?昨天我在其他的地方也获得了帮助,不过并没有完全完成~ 先感谢你!我先研究下试试看~稍后给你奖励!
6楼2015-01-29 05:39:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

starfriend

金虫 (正式写手)

引用回帖:
5楼: Originally posted by zhouxiaochun at 2015-01-28 23:57:48
直接给代码,附件上传几次都没成功。

Sub SaveAsFiles()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Dim lj     As String
    Dim newfile As Object
    Dim ma ...

我试了,基本成功了~唯一一点缺憾是导出的文件再导入其他一个软件时 第一行的内容不能被识别为改列的名字 (first line as column names)。不过除此之外还是很好的,所以不食言,金币送上~~
7楼2015-01-29 07:38:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhouxiaochun

铁杆木虫 (正式写手)

引用回帖:
7楼: Originally posted by starfriend at 2015-01-29 07:38:03
我试了,基本成功了~唯一一点缺憾是导出的文件再导入其他一个软件时 第一行的内容不能被识别为改列的名字 (first line as column names)。不过除此之外还是很好的,所以不食言,金币送上~~...

第一行可以设为标题列,也可不设,直接是数据开始行。
8楼2015-01-29 19:44:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

starfriend

金虫 (正式写手)

引用回帖:
8楼: Originally posted by zhouxiaochun at 2015-01-29 19:44:05
第一行可以设为标题列,也可不设,直接是数据开始行。...

我就是差不多这个意思~当导入单一文件到其他一个软件的时候第一行是可以被识别为标题的,但是当批量导入的时候不能成功,提示文件之间不统一。所以我就跳过标题行,直接输入数据导入就可以。就是这个小缺憾,估计是和输出的格式有关系~~
之前在另外一个地方也获得了帮助,代码如下:

Sub 另存()
Dim i As Long
Dim str As String
Dim l&
l = Cells(1, Columns.Count).End(xlToLeft).Column

str = ThisWorkbook.Path & "\"
Set fs = CreateObject("Scripting.FileSystemObject"

k = 1
For i = 1 To l
   If k >= l Then Exit For
   Set a = fs.CreateTextFile(k & ".txt", True)
   k = k + 1
   
   t = Cells(1, 1) & "-" & Cells(1, k)
   a.WriteLine (t)  '把I行的相应的数据写入TXT文件
a.Close
Set a = Nothing
Next i
End Sub

可以识别标题行,不过不能读取多数据,我觉得他可能写错了,可能是把I“列”的相应的数据写入TXT文件。
9楼2015-01-30 07:43:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

starfriend

金虫 (正式写手)

重新贴一次代码

Sub 另存()
Dim i As Long
Dim str As String
Dim l&
l = Cells(1, Columns.Count).End(xlToLeft).Column
str = ThisWorkbook.Path & "\"
Set fs = CreateObject("Scripting.FileSystemObject"
k = 1
For i = 1 To l
   If k >= l Then Exit For
   Set a = fs.CreateTextFile(k & ".txt", True)
   k = k + 1
   
   t = Cells(1, 1) & " " & Cells(1, k)
   a.WriteLine (t)  '把I行的相应的数据写入TXT文件
a.Close
Set a = Nothing
Next i
End Sub
10楼2015-01-30 07:51:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 starfriend 的主题更新
信息提示
请填处理意见