ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 21153|回复: 10

[已解决] 请教EXCEL宏导出指定内容保存为txt

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-23 00:36 | 显示全部楼层 |阅读模式
我想用宏将excel表格中的数据保存为txt文件,要求是每个txt文件固定包括第一列第二列的内容,然后从第三列开始分别与第一二列组成一条记录,分别保存为多个txt文件,并且以各自的列名命名txt文件,请问怎么写这个宏

姓名        日期                 A1        A2        A3        A4        A5        A6        A7        A8        A9        A10         A11       A12
张三        2014-11-22        100        101        102        103        104        105        106        107        108        109        110        111
李四        2014-11-22        200        201        202        203        204        205        206        207        208        209        210        211

即要变成txt:文件名为A1,内容为      张三        2014-11-22        100
                                                         李四        2014-11-22        200


                  文件名为A2,内容为      张三        2014-11-22        101                                         
                                                        李四        2014-11-22        201

依次类推至A12,请各位高手帮忙写个宏,谢谢!!


20141123003004578.jpg
20141123002951078.jpg
20141123003206421.jpg

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-23 00:47 | 显示全部楼层
Sub st()
Dim rg As Object
Dim Strtemp
Dim rc As Long
rc = Application.Max(Range("A" & Rows.Count).End(xlUp).Row, Range("B" & Rows.Count).End(xlUp).Row)

Strtemp = ""
For Each rg In Range("A1:B" & rc)
    If rg.Row <= rc Then
        If rg.Column = 1 Then
            Strtemp = Strtemp & rg.Value & vbTab
        Else
            Strtemp = Strtemp & rg.Value & vbCrLf
        End If
   
    End If
Next
Open ThisWorkbook.Path & "\AB.txt" For Output As #1
Print #1, Strtemp
Close #1

End Sub

我在网上找到这样一段宏,可以将第一二列的内容从excel存为txt,但我需要将其扩展至如我所说的要求
738b4710b912c8fc47db81e4ff039245d68821ea.png

TA的精华主题

TA的得分主题

发表于 2014-11-23 08:38 | 显示全部楼层
  1. Sub test()
  2.     Dim arr, myPath$, s$
  3.     arr = Range("a1").CurrentRegion
  4.     myPath = ThisWorkbook.Path & ""
  5.     For i = 3 To UBound(arr, 2)
  6.         s = ""
  7.         For j = 2 To UBound(arr)
  8.            s = s & vbCrLf & arr(j, 1) & vbTab & arr(j, 2) & vbTab & arr(j, i)
  9.         Next
  10.         Open myPath & "A" & i - 2 & ".txt" For Output As #1
  11.         Print #1, Mid(s, 3)
  12.         Close #1
  13.     Next
  14. End Sub
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-23 23:06 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liu-aguang 发表于 2014-11-23 08:38

谢谢尊敬的liu-aguang ,问题基本解决,只是我想导出的txt文档的名称可以随着第三列后面的列名称的改变而改变,而不是用固定的A1-A12命名,不知可否再帮忙修改一下?比如第三列之后的名称为语文        数学        英语        物理        化学        生物        地理        历史        政治        综合        体育        音乐,我想txt文档可以用各列的科目名称来命名

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-23 23:09 | 显示全部楼层
本帖最后由 justfortry 于 2014-11-23 23:11 编辑

比如这样。。。。。。。。。。。
20141123230436093.jpg

成绩表.rar

8.92 KB, 下载次数: 214

TA的精华主题

TA的得分主题

发表于 2014-11-24 09:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub test()
  2.     Dim arr, myPath$, s$
  3.     arr = Range("a1").CurrentRegion
  4.     myPath = ThisWorkbook.Path & ""
  5.     For i = 3 To UBound(arr, 2)
  6.         s = ""
  7.         For j = 1 To 3
  8.            s = s & vbCrLf & arr(j, 1) & vbTab & arr(j, 2) & vbTab & arr(j, i)
  9.         Next
  10.         Open myPath & arr(1, i) & ".txt" For Output As #1
  11.         Print #1, Mid(s, 3)
  12.         Close #1
  13.     Next
  14.     'Stop
  15. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-24 23:14 | 显示全部楼层
bluexuemei 发表于 2014-11-24 09:18

谢谢尊敬的bluexuemei 老师,问题已解决!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-11-24 23:16 | 显示全部楼层
谢谢两位老师的热心帮忙,问题解决了!!祝你们生活愉快,工作顺利!!谢谢!!

TA的精华主题

TA的得分主题

发表于 2016-8-24 11:46 | 显示全部楼层
老师,我复制了上面的代码,怎么没反应呢?怎么回事呢?

TA的精华主题

TA的得分主题

发表于 2016-12-14 00:08 | 显示全部楼层
lz问题和我相似,我的问题要更简单写就是把指定区域的内容导出成TXT格式。而且甚至不需要批量导出。
比如将工作表1中A1到C10区域内的内容导出到D:\1.txt即可
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 04:24 , Processed in 0.052208 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表