ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 将excel 导出为txt,以空格分隔

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-5-17 13:53 | 显示全部楼层 |阅读模式
本帖最后由 roric2018 于 2018-5-17 13:55 编辑

找了几个论坛里的代码但不是无法保存到当前文件,就是到处的数字格式带逗号,求教老师,需求如下:


1. 将当前活动sheet或者选中的sheet导出为txt
2. txt数字用空格分隔,不能是逗号或者符号
3. 生成的txt文件名为sheet名称
4. 保存路径:保存在excel所在路径下,但要先自动在当前文件夹下建一个名叫“Upload”的文件夹,并将生成的txt保存在里面.
5. 避免文档后的大量空格

附上excel文档,和应该生成的txt文件模板.

非常非常感谢!

ANAPLAN VOLUME PRICE LOAD Philippines xlsx.zip

123.27 KB, 下载次数: 47

Excel

ANAPLAN VOLUME PRICE LOAD Philippines txt.zip

12.25 KB, 下载次数: 36

txt生成

TA的精华主题

TA的得分主题

发表于 2018-5-17 14:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 hmlstfqtl 于 2018-5-17 14:47 编辑
  1. Sub 当前工作表另存为TXT()
  2.     Dim Arr, k%, Str$
  3.     Arr = [A1].CurrentRegion.Value
  4.     For k = 1 To UBound(Arr)
  5.         Str = Str & Join(Application.Index(Arr, k), " ") & vbCrLf
  6.     Next
  7.     On Error Resume Next
  8.     MkDir ThisWorkbook.Path & "\Upload"
  9.     Kill ThisWorkbook.Path & "\Upload" & ActiveSheet.Name & ".txt"
  10.     Open ThisWorkbook.Path & "\Upload" & ActiveSheet.Name & ".txt" For Output As #1
  11.     Print #1, Str
  12.     Close #1
  13. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-5-17 15:41 | 显示全部楼层
Option Explicit

Sub test()
  Dim defaultpath, arr, i, j, t, s
  arr = ActiveSheet.[a1].CurrentRegion
  defaultpath = ThisWorkbook.Path & "\upload"
  If Len(Dir(defaultpath, vbDirectory)) = 0 Then MkDir defaultpath
  Open defaultpath & "\" & ActiveSheet.Name & ".txt" For Output As #1
  For i = 1 To UBound(arr, 1)
    s = Trim(arr(i, 1))
    For j = 2 To UBound(arr, 2)
      t = Trim(arr(i, j))
      If InStr(t, """") Then t = Replace(t, """", vbNullString)
      If InStr(t, ",") Then t = Replace(t, ",", vbNullString)
      If InStr(t, ".") Then t = Split(t, ".")(0)
      s = s & vbTab & t
    Next
    Print #1, s
  Next
  Close #1
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-5-17 16:22 | 显示全部楼层
  1. Sub ExcelToTxt_Yaong()
  2.     Dim Rng As Range, i%, j%
  3.     Open "C:\MyOut.txt" For Output As #1    '导出位置为 C:\MyOut.txt
  4.     With ActiveSheet
  5.     Set Rng = .UsedRange
  6.         For i = 1 To .UsedRange.Rows.Count
  7.         For j = 1 To .UsedRange.Columns.Count
  8.             Print #1, Trim(Rng.Cells(i, j)) & vbTab;    '分隔符为 Tab
  9.         Next
  10.             Print #1,
  11.         Next
  12.     End With
  13.     Close #1
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-5-17 17:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 Yaong_3 于 2018-5-17 21:49 编辑

有一点不很明白:直接复制然后粘贴到记事本里不行吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-5-17 17:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

非常感谢!

能否帮忙修改一处,现在导出的txt自动省略了小数点后的数字, 比如5.6666666会变成5, 没有小数点,能否改成如excel所示的位数,或者自动保留10位小数

麻烦了!谢谢!

TA的精华主题

TA的得分主题

发表于 2018-5-17 19:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
roric2018 发表于 2018-5-17 17:52
非常感谢!

能否帮忙修改一处,现在导出的txt自动省略了小数点后的数字, 比如5.6666666会变成5, 没 ...

'自己修改

Option Explicit

Sub test()
  Dim defaultpath, arr, i, j, k, t, s
  arr = ActiveSheet.UsedRange
  defaultpath = ThisWorkbook.Path & "\upload"
  If Len(Dir(defaultpath, vbDirectory)) = 0 Then MkDir defaultpath
  Open defaultpath & "\" & ActiveSheet.Name & ".txt" For Output As #1
  For i = 1 To UBound(arr, 1)
    s = Trim(arr(i, 1))
    For j = 2 To UBound(arr, 2)
      t = Trim(arr(i, j))
      If InStr(t, """") Then t = Replace(t, """", vbNullString)
      If InStr(t, ",") Then t = Replace(t, ",", vbNullString)
      If IsNumeric(t) Then
        t = Val(t)
        If Int(t) <> t Then t = Format(t, "0.00") '非整数保留小数点位数
      End If
      s = s & vbTab & t
    Next
    Print #1, s
  Next
  Close #1
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-5-10 15:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-8-20 09:22 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 14:24 , Processed in 0.037952 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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